1、GIT 默认对文件名大小写不敏感

  1. /# 解决 #/
  2. git config core.ignorecase false

2、偶尔在操作 Git 的时候,会提示git被锁了,提交不了

问题:

Git 使用中显示“Another git process seems to be running in this repository…”

原因:
windows对于进程的同步互斥管理,是有资源上锁机制的。猜测这里肯定是有进程对某资源进行了加锁,但是由于进程突然崩溃,未来得及解锁,导致其他进程访问不了

解决:
打开项目目录下的 .git 文件夹,然后删掉 index.lock 就可以

4、git pull 拉取远程代码的时候,遇到 would clobber existing tag

原因:本地的 tag 跟线上远程分支的tag 不一致
解决:强制使用远程的 tag 覆盖本地的 tag

  1. git fetch --tags -f

5、git push或者 git pull 操作的时候提示 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

原因:
远程 git 服务器更新了 ip,所以导致之前配置的 ssh 内存储的IP跟远程 git服务的ip 匹配不上
解决:

  1. ssh-keygen -R git服务地址 # 这里的服务地址为服务的 host

6、git 配置 ssh

  1. git config --global user.name "这里换上你的用户名"
  2. git config --global user.email "这里换上你的邮箱"
  3. ssh-keygen -t rsa -C "这里换上你的邮箱" # 邮箱必须是注册git的邮箱 #
  4. # 查看 配置好的 ssh-keygen
  5. cat ~/.ssh/id_rsa.pub

7、本地删除远程已经不存在的分支

  1. git fetch --prune #这样就可以实现在本地删除远程已经不存在的分支

8、本地同步远程tag

  1. git tag -l | xargs git tag -d #删除所有本地分支
  2. git fetch origin --prune #从远程拉取所有信息

9、本地切换到远程 master 分支的时候报错

报错信息

  1. git checkout -q --track origin/master
  2. warning: refname 'origin/master' is ambiguous.
  3. fatal: A branch named 'master' already exists.

问题分析:

  1. git branch -a 的输出显示您有一个名为 origin/master 的远程跟踪分支.完全正常。
  2. 但是,git show-ref master 的输出包含

    1. 84e588376b89f794fa947e26848e9a804bffcc43 refs/heads/master
    2. c4dbcc0dd4c362a67a5d6b9db300507eda83192c refs/heads/origin/master
    3. 35ab50e43e0eadf117344893dbf8da5d649f8947 refs/remotes/origin/master
  3. 这表明您很可能运行了以下低级命令:

  • 此命令创建一个名为 master 的本地分支 (指向与 origin/master 相同的提交) ,但直属 refs/ ,即在 refs/heads/ 之外命名空间,本地分支通常所在的位置。

  • git branch -a 不会列出这样的分支,但是Git 感到困惑,因为它看到两个分支,其引用名称以 origin/master 结尾 :

    • refs/remotes/origin/master ,您的远程跟踪分支
    • refs/origin/master ,您(偶然)在 refs/heads/ 之外创建的本地分支.

解决问题:
如果您不是有意创建 refs/origin/master 只需删除它

  1. git update-ref -d refs/origin/master

然后,不会有任何歧义,当您尝试设置 master 的上游时,Git 会遵守所设置的流程设置
删除完之后 再执行更新远程信息就可以愉快的玩耍了

  1. git pull

10、git 本地删除本地分提示 remote ref does not exist

问题出现的场景:
本地新建一个本地分支,但在与远程分支关联的时候,关联出错,导致该分支提示 xxx is not fully merged
但是使用 git branch --delete xxx 删除又无法删除本地分支,此时远程是没有这个分支的

解决办法:
运行强制删除分支命令

  1. git branch -D xxx # xxx 为分支名称

备注:
git 在删除分支的时候可以使用 git branch -d xxx 也可以是 git branch -D xxx
但是其中是有区别的:
git branch -d 的时候如果本地分支没有被合并就会提示这个问题
git branch -D 是强制删除,所以直接执行 强制删除就好了。

11、拉取远程代码的时候提示 Git Pull Failed

具体报错信息为:

  1. # 1.
  2. Git Pull Failed
  3. error: You have not concluded your merge (MERGE_HEAD exists).
  4. fatal: Exiting because of unfinished merg
  5. # 或者
  6. # 2.
  7. Git Merge Failed
  8. fatal: You have not concluded your merge (MERGE_HEAD exists)
  9. # 或者
  10. # 3.
  11. Git Pull Failed
  12. Your local changes would be overwritten by merge.
  13. Commit, stash or revert them to proceed. View them

问题出现的场景一般为:

  1. 本地分支 拉取 远程分支,出现了冲突,在解决冲突之后(这个时候远程的更改已经合并到当前的本地分支了)这个时候再 放弃所有更改,再去拉取远程分支就会出现上面这几种情况

解决办法:

  1. 先 commit git commit -m "commit info" 再进行 pull 拉取远程代码
  2. 放弃本地修改,直接覆盖之
    1. git reset --hard
    2. git pull

12、git clone 代码提示 OpenSSL SSL_read: Connection was reset, errno 10054

原因:
出现这种情况一般是由于 本地使用了 vpn 但是由必须使用 vpn 才能访问 github
解决办法:
修改设置,解除ssl验证 git config --global http.sslVerify "false" 此时,再执行git操作即可