赞
踩
目录
( 1 ) => 通过 Git 把工作区的内容 add 添加到暂存区 的时候 , 报了 警告 :
( 2 ) => 通过 Git 本地仓库 push 到远程仓库的时候,报了 异常 :
fatal : The current branch 分支名 has no upstream branch.
( 3 ) => 最终通过 Git 本地仓库 push 到远程仓库的时候,报的 异常 :
fatal : invalid refspec 'https://gitee.com/ XXXX'
( 4 ) 通过 Git 本地仓库 pull 到本地的时候,报的 异常 :
error: Your local changes to the following files would be overwritten by merge:
( 6 ) error: cannot stat 'path': Permission denied
( 7 ) fatal: Unable to create 'D:/XXX/.git/index.lock': File exists.
整理自己在日常使用 Git 时 , 出现的一些异常信息 :
希望对大家伙有帮助 ~
实时更新 , 建议收藏哟 ~
首先如果你对 Git 还并不是很了解的话 ,
我们可以先学习了解一下 Git 基础 :
跳转链接 => Git _ 入门版
VSCode 内 GitLens 不生效
自己在想使用 VSCode 时 ,想在其内部使用 Git , 需要下载一个辅助插件 ( GitLens )
但是即使 我已经安转好了 Git ,右键也能显示有 Git Bash Here , 也能正常使用 ,但在 VSCode 里却始终报异常导致无法使用 :
( 1 )!未找到 Git 。请安装 Git , 或在 “ git.path ” 设置中配置。
来源 : Git (Extension) 下载 Git 不再显示
( 2 )GitLens was unable to find Git . Plase make sure Git is Installed . Also e...
( 大致意思就是 : GitLens 无法找到 Git 。请确保已安装 Git )
( 3 )而且左边列表的 Git 源代码管理 , 也是无法使用状态
方法解决 :
网上查了各种回答 ,说是什么上传一下下拉一下啥的吧 , 然而我在 Git 里面使用命令行进行上传下拉代码啥的都没有问题 , 所以我的问题原因并不在于此 , 后来解决完之后 , 我猜想可能是我新电脑初次进行安装 Git ,安装过程中也并没有按照 Git 下载安装到指定的文件目录下 , 再加上也从来没有使用过用 Git 去打开过 VSCode ,等等原因吧 , 导致 VSCode 找不到我的 Git 了
So 我使用 Git Bash Here 打开 Git 窗口 , 输入命令行 code .
进行一遍通过 Git 来打开 VSCode 的操作 , 然后很神奇的它就好了 。 。 。
分享一下自己使用 Git 时的操作习惯吧 :
首先是 推荐 大家使用 Git Bash Here 来进行 操作的 ,
因为它的后面会有 分支 提示 , 就是 显示你当前站在哪个 分支 上 ,
这样操作会很方便 , 就省去了我们 不断的去使用 git branch 命令 去查看自己所在的分支了
在这里我主要分享的是 , 当我们想要 创建一条新分支 时的日常操作习惯 :
( 下面是在我们没有使用 Git Bash Here 进行操作的讲解 , 所以会经常查看 所在分支 )
( 1 ) 使用命令行 git status 来进行查看我们当前目录下所有文件的状态管理
( 如果检测到我们还有未上传的状态时 , 建议先是将代码提交一下 ( push ) , 目的是清空一下咱们的状态 , 以便于为咱们之后的 切换分支 操作 做铺垫 , 否则会很容易出现小问题导致切换分支不成功的 )
( 2 ) 使用命令行 git branch 来进行 查看 我们所建的 所有分支
( 如若不是站在咱们的主分支 master 上 , 就需要我们接下来进行切换分支操作了 )
( 3 ) 使用命令行 git checkout master 来进行 切换到主分支上的操作
( 4 ) 使用命令行 git branch 来再次查看我们是否切换到了主分支上
( 5 ) 使用命令行 git branch 新分支名 , 来进行创建新分支的操作
( 6 ) 使用命令行 git branch 来查看我们是否成功创建好了新分支
( 7 ) 使用命令行 git checkout 新分支 来进行 切换到新分支上的操作
( 8 ) 使用命令行 git branch 来查看我们是否成功切换到了新分支上
最后大家可以很明显的观察到 , 如果没有后面的 分支 提示 , 那我们就得需要多操作很多步骤 , 需要不断地经常使用 git branch 来查看自己目前站在哪条分支上了的操作 , 所以推荐用推荐
( 注 : 切记不要在分支上再创建分支 , 它的坏处呢就是 , 它会把你原来分支上面的东西一起创建在你新创建好的分支里的 , 然而可能这些东西并不是你想要的 , 但是你还不能把原来分支上的东西删除了 , 所以我们建议还是切换到没有任何东西, 目录很干净的 master 主分支上 , 然后咱们再进行 创建新分支的操作 )
今天刚学习到了一个新指令 , 尤其好用 , 赶紧拿来分享更新一波 :
git 新建分支 并 切换到该分支
git checkout 命令加上 –b 参数 表示 创建并切换 ,相当于如下 2 条命令 :
git branch dev
git checkout dev
再查看一下当前分支已经切换到 dev 了
git checkout -b 新分支名
这个命令尤其好用 , 配合上 Git Bash Here 来进行操作 ( 能实时查看到我们当下所站在的分支上 ) , 相信会极大的节省我们的操作时间的 , 提升工作效率
工作中遇到的分支问题 :
远程分支被删除后如何同步本地代码到新的远程分支上 ?
自己的本地开发分支 ( develop 分支 ) 对应的远程分支 ( develop 分支 )
已被 “ 管理员 ” 删除了 ,且创建了新的远程分支 ( WEB_HOTFIX ) ,
但是我本地还在 已被删除 的 ( develop ) 开发分支上 ,
本地还没有删除 , 而且还写了新的代码 ,并未提交 ,
那我怎样才能把本地分支的代码 同步 到 “ 管理员 ” 新创建的( WEB_HOTFIX )分支上呢?
一 、 首先是在你本地分支写的代码为提交的状态下
1、git fetch ( 获取最新创建的远程分支 )
2、git stash ( 把本地未提交的代码 暂存 起来 )
3、git checkout ' 新分支 ' ( 切换到新创建的分支上 )
4、git stash pop ( 把 暂存 的代码 再 释放 出来 )
5、git branch -a ( 查看所有分支 、 包括本地分支和远程分支 )
( 可以 git branch -d ' 分支名 ' 删掉本地无用的分支 )
警告意思 : LF 和 CRLF 都是 换行符 ,意思就是说 git 要把你的 LF 换行符全部换成 CRLF 这种 换行符
产生原因:
首先问题出在 不同操作系统 所使用的 换行符 是不一样的
Uinx / Linux 采用换行符 LF 表示 下一行( LF:LineFeed,中文意思是换行 )
Windows 采用 回车 + 换行 CRLF 表示 下一行( CRLF:CarriageReturn LineFeed,中文意思是回车 换行 )
Mac OS 采用 回车 CR 表示 下一行( CR:CarriageReturn,中文意思是 回车 )。
查看状态 :
git config core.autocrlf
当你输入这个命令的时候,会得到三种结果 :
1.true( 很多会出现这种结果 )
当我们操作系统是 Windows 的时候,会出现 true
当为 true 时,git 会将你暂存( git add )文件认为是文本文件,把换行符的 CRLF 转换成 LF ,而签出这些文件的时候又会变成 CRLF 格式,所以会 警告 你,这虽然只是一个小问题,但是会干扰跨平台多人合作开发
举个例子:你同事用的是 Mac 或 Linux 系统 , 你用的是 Windows 系统 ,
最后交稿时就会 造成 冲突解决办法,执行命令 :
git config core.autocrlf false
如果不是 跨平台开发 而且是 Winows 系统,基本上 忽略这个警告 就可以啦
2.false
文本文件保持其原来的样子
3.input
add 时 git 会把 CRLF 转换成为 LF , 签出时依旧为 LF
( 致命 : 当前分支 分支名 没有上游分支 )
解决方案:
翻译后大致意思是,如果不想重新创建远程仓库再克隆 ,或者初始化本地仓库,可以使用下面命令: git push -u origin master ,其中 origin 表示 远程仓库名称 ,master 是远程仓库的 push 目标分支。-u ( 推测为 update 缩写 ^_^ ~ ) 表示本地分支将建立对远程仓库目标分支的检测,如果远程仓库目标分支不存在,将新建分支再 push ;如果存在,将进行 push 更新 。
git push -u origin 分支名
( 致命 : 无效的 refspec ' https:// XXXX ' )
前面的这个报错呢 , 主要是因为我提交之前的代码跟远程的代码并不同步 , 所以会有冲突存在 , 此时就需要我们先将远程的代码 pull 下来 ( git pull origin master ) , 进行同步一下 , 然后解决一下冲突问题 , 最后再次进行一遍提交过程 ( git add . git commit -m " " git push -u origin 分支名 ) 就 OK 了
由于公司目前实行开发模块化,所以原来用的代码管理器全部迁移到 Git 上去了,原来用过 git 现在已经忘的差不多了,今天在拉取服务器的代码的出现了冲突,记录下以供后续参考:
1. 用 git pull 来更新代码的时候,遇到了下面的问题:
error: Your local changes to the following files would be overwritten by merge: xxx/xxx/xxx.js Please, commit your changes or stash them before you can merge. Aborting 错误:您对以下文件的本地更改将被合并覆盖:xxx/xxx/xxx。js 请在合并之前提交或隐藏更改。出现这个问题的原因是别人修改了 xxx.js 并提交到版本库中去了,而你本地也修改了xxx.js, 这时候你进行 git pull 操作就会出现冲突了,
解决方法,在上面的提示中也说的很明确了。
保留本地的方式修改(强烈推荐,还有一种是直接拉取服务器的(不推荐使用就不写了),这样你本地修改的代码的,就会舍弃,相当于你写的代码直接没,你还要重新写)步骤如下:
通过 git stash 将工作区恢复到上次提交的内容,同时备份本地所做的修改,之后就可以正常 git pull 了, git pull 完成后,执行 git stash pop 将之前本地做的修改应用到当前工作区。
git stash
git pull
git stash pop看到这里有些人就懵逼了,下面就介绍一下这三行代码代表什么意思吧;
git stash : 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到 Git 栈中。
git pull : 拉取服务器上的代码;
git stash pop : 从 Git 栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个 Stash 的内容,所以用栈来管理,pop 会从最近的一个 stash 中读取内容并恢复。
git stash list : 显示 Git 栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear : 清空 Git 栈。此时使用 gitg 等图形化工具会发现,原来 stash 的哪些节点都消失了。
在升级了高版本的Git工具后,在使用git push操作时,可能会出现如下提示:
事实上这并不会影响你 push 的结果,最终 push 还会成功,因为这只是一个 warning。
你可以按照他说的那样运行:git config --global push.default matching 或者 git config --global push.default simple 命令,以后再 push 就不会有警告了。
- warning: push.default is unset; its implicit value has changed in
- Git 2.0 from 'matching' to 'simple'. To squelch this message
- and maintain the traditional behavior, use:
-
- git config --global push.default matching
-
- To squelch this message and adopt the new behavior now, use:
-
- git config --global push.default simple
-
- When push.default is set to 'matching', git will push local branches
- to the remote branches that already exist with the same name.
-
- Since Git 2.0, Git defaults to the more conservative 'simple'
- behavior, which only pushes the current branch to the corresponding
- remote branch that 'git pull' uses to update the current branch.
-
- See 'git help config' and search for 'push.default' for further information.
- (the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
- 'current' instead of 'simple' if you sometimes use older versions of Git)
- 警告:push.default没有设置,它的隐含值在Git2.0的时候已经从‘matching’变成了‘simple’。去掉该提示消息并且保持旧版本的git push行为,
- 使用:
-
- git config --global push.default matching
-
- 去掉该提示消息并采用新版本的git push行为,使用:
-
- git config --global push.default simple
-
- 当push.default设置为‘matching’时,git将会把本地分支代码push到远程同名分支上去。
-
- 从Git 2.0开始,push.default变成了更为保守的‘simple’行为模式,它只将当前分支推送到对应的“git pull”用于更新当前分支的远程分支。
-
- 通过‘git help config’并搜索‘push.default’获取更多信息。(‘simple’模式在Git1.7.11中已作介绍。如果你有时候使用旧版本的Git,
- 可以使用‘current’模式来代替‘simple’模式。)
看了上面的中文是不是很清晰了呢?不管你是使用‘matching’模式还是‘simple’模式,都能去掉那一大串提示消息,但是具体使用哪个模式需要读者自行判断
下面说一下 push.default matching 和 push.default simple 的区别:
push.default 设置 maching 的意思是:git push 会把你本地所有分支push到名称相对应的远程主机上。这意味着可能你会在不经意间 push 一些你原本没打算 push 的分支。
push.default 设置成 simple 的意思是:git push 仅仅把当前所在分支push 到从当初 git pull 拉去下来的那个对应分支上,另外,这个过程也会同时检查各个分支的名称是否相对应。
使用 git 管理项目时,切换分支 B ,后切换回主分支,想进行代码合并,结果报错如下:
- E:\Web_wp\demo\my-shop>git checkout master
- error: cannot stat 'src/components/rights': Permission denied
- error: cannot stat 'src/components/rights': Permission denied
- Updating 4d8bcae..114b407
解决方案:关闭占用此项目的所有程序
例如:
1.关掉编辑器
2.关闭项目相关的服务器
( 7 ) fatal: Unable to create 'D:/XXX/.git/index.lock': File exists.
致命:无法创建 'D:/XXX/.git/index.lock':文件存在。
一、问题描述
使用 git 在 commit / 提交 代码 的 时候 ,出现了
Unable to create '.git/index.lock' File exists
问题 ,如下所示 :
Unable to create 'D:/XXX/.git/index.lock': File exists. Another git process seems to be running in this repository, e.g. an editor opened by 'git commit'. Please make sure all processes are terminated then try again. If it still fails, a git process may have crashed in this repository earlier: remove the file manually to continue.二、分析并解决问题
Git 执行操作时会自动生成 index.lock 文件 ,操作结束后会自动删除 。
这样做的 目的 是 : 避免同时操作同一个文件夹 。
错误提示我们 :
Unable to create 'D:/XXX/.git/index.lock': File exists.
因此 ,我们 删除 该目录下的 .git/index.lock 文件即可删除之后 :
然后重新使用 git 提交代码 ,即可成功 !!!
fatal: Unable to create 'D:/XXX/.git/index.lock': File exists.
If no other git process is currently running, this probably means a git process crashed in this repository earlier. Make sure no other git process is running and remove the file manually to continue.致命:无法创建 'D:/XXX/.git/index.lock': 文件存在。
如果当前没有其他 git 进程在运行,这可能意味着在此存储库中有一个 git 进程早些时候崩溃了。确保没有其他 git 进程正在运行,并手动删除该文件以继续。
8、
小组合作项目时 : 正确的操作步骤 : 上传分支
( 1 ) git pull : 一定要先与远程代码 进行 同步 ( Already up to date. )
( 2 ) git status : 可以先行查看一下自己代码的状态
( 3 ) git add . : 将我们工作区的代码转到 暂存区 内
( 4 ) git commit -m "说明信息" : 将暂存区内的代码形成历史版本
( 5 ) git remote add 变量名(origin) 远程地址 : 与远程仓库建立连接
( 6 ) git push -u 变量名(origin) 分支名 : 推送上远程仓库
解决 Git 每次提交输入密码的问题
1、git config --global credential.helper store 2、git pull / git push ( 第一次输入 , 后续就不用再次输入了 ) pull / push 你的代码 , 这时会让你输入 用户名 和 密码 , 这一步输入的 用户名 密码 会被记住 , 下次再 pull / push 代码时就不用再次输入了 。 这一步其实是在用户目录下面生成文件 .git-credential 用来记录用户名和密码信息的文件。
打开项目目录下面的 .git 目录里的 config 文件 url=http://{username}:{password}@192.168.200.19/ProtoType/insurtech_od_api.git 换上自己的 用户名 和 密码 即可
解决 合并 merge 分支代码 时 Git 工具页面混乱的问题
1、 i 2、 Esc 3、 Shift + : 冒号 3-1、 冒号 : wq 4、 Enter 回车i => Esc => :wq => Enter
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。