本篇博客总结下Git使用情况中遇到的异常情况并给出解决方案,关于Git的常用命令请移步我的另一篇博客《Git常用命令》
异常情况如下:
1.git远程删除分支后,本地git branch -a依然能看到
2.git中Please enter a commit message to explain why this merge is necessary
3.git branch -a 无法显示全部的远程分支
4.Git修改.gitignore不生效
5.bash: syntax error near unexpected token `('
异常情况1:git远程删除分支后,本地git branch -a依然能看到
为配合公司Git管理规范,在gitlab后台删除了很多不用的分支,但在本地用git branch -a命令查看时,发现被删除的分支仍然能看到
此时使用git remote show origin命令查看下远程分支的信息
git remote show origin
如上图所示,可以看到拉取,提交的地址,也可以看到所有的远程分支以及本地分支与远程分支的对应关系
上图中显示stale的分支是被删除的分支,根据提示,执行git remote prune origin清除已被删除的分支
git remote prune origin
执行完毕后,使用git branch -r(只查看远程分支)查看,发现问题已经解决
异常情况2:git中Please enter a commit message to explain why this merge is necessary
今天在使用git时,git pull和git merge时,经常出现如下错误信息:
Please enter a commit message to explain why this merge is necessary.(请输入提交消息来解释为什么这种合并是必要的)
解决方法:
1.按“Esc”退出键
2.输入“:wq”,然后按下“Enter”键(说明:要输入英文状态下的冒号)
异常情况3:git branch -a 无法显示全部的远程分支
一般情况下,当我们想看到本地和远程的所有分支时,会使用git branch -a命令,但该命令有时候不会展示最新创建的远程分支,
下面以具体事例来说明现象及解决方法:
开始新任务的开发时,同事告知我新建了一个分支AllChannel_StoreOffLine1.0,但当我获取时发现看不到这个分支
此时,可以通过 git fetch 将本地远程跟踪分支进行更新,与远程分支保持一致。
执行完成之后,再次执行git branch -a查看所有分支,发现可以看到同事新建的远程分支AllChannel_StoreOffLine1.0
异常情况4:Git修改.gitignore不生效
在git中,如果想忽略某个文件,不让这个文件提交到版本库中,可以修改根目录中的.gitignore文件
但有时候把某些目录或者文件加入忽略规则,发现并未生效
未生效原因:.gitignore只能忽略那些原来没有被追踪(track)的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的
解决方案:先把本地缓存删除(改变成未track状态),然后提交
git rm -r --cached <要忽略的具体文件或者目录>
git add .
git commit -m "update .gitignore"
异常情况5:bash: syntax error near unexpected token `('
今天在拉取远程分支时,发现一直提示bash: syntax error near unexpected token `('
在网上查找资料后才知道,原来是因为分支名称中包含()的原因
解决方案:在每个()前加上\,有点类似转义的意思
参考链接:http://www.pfeng.org/archives/840