Git报错集合

2022-3-24 git工具

持续更新中...

# git commit报错

nothing to commit, working tree clean.

image-20220324104121740

出现这种问题,要想一下自己是否已经提交过一次了。

还有一种情况就是没有修改内容,只是改变了大小写,因为git设置了忽略大小写,所以要更改一下设置:

git config core.ignorecase false
# 如果想全局设置可以在config后加“--global”
1
2

# git merge报错

  1. error: Merging is not possible because you have unmerged files.

    image-20220419233630509

    有冲突未合并的文件,先修改冲突文件,修改后再git addgit commit,就可以push成功了。

# git push报错

  1. hint: Updates were rejected because the remote contains work that you do

    image-20220713103820175

    此时远程分支有新的commit未同步到本地,无法推送。有以下两种方式解决:

    • 先git pull再git push,但此时会自动生成一条merge commit,比较不整洁。

      git pull origin master
      git push origin master
      
      1
      2
    • 给git pull加上--rebase,但是该命令要保证目录中没有Modified状态的文件。可参考git pull --rebase的正确使用 (opens new window)

      git pull --rebase origin master
      git push origin master
      
      1
      2

# git pull报错

  1. failed to push some refs to 'xxx'.

    image-20220324105217468

    在GitHub创建仓库的时候,一般都会勾选"Add a README file"选项,点击创建仓库时,它会帮我们做一次初始提交,这样仓库就有了一个README.md文件。当我们把本地库与远程库相关联时,因为两端都有内容,但这两份内容没有关联,导致两个库的内容不一致,无法直接提交,需要先拉取合并后才能提交。

    git pull 仓库别名 分支名
    
    1

    pull操作可能会导致以下错误。

  2. fatal: refusing to merge unrelated histories.

    image-20220324105958078

    远端觉得这个本地库跟自己不相干,所以告知无法合并。

    解决方法:

    • 先git clone远程仓库到本地,然后要push的东西放在该仓库下,然后再提交。这相当于一次update操作。

    • 使用强制命令进行合并,这里会进入一个编辑页面,可以点击Esc,输入":wq"即可。

      git pull 别名 分支名 --allow-unrelated-histories
      
      1

    pull操作后可以使用git push推送到远程库。

  3. error: Your local changes to the following files would be overwritten by merge.

    拉取文件冲突,有两种解决方式:

    • 保留刚才本地修改的代码,并把git服务器上的代码pull到本地(本地刚才修改的代码将会被暂时封存起来)

      git stash
      git pull origin master
      git stash pop
      
      1
      2
      3

      如此一来,服务器上的代码更新到了本地,而且你本地修改的代码也没有被覆盖,之后使用add,commit,push 命令即可更新本地代码到服务器了。

    • 完全地覆盖本地的代码,只保留服务器端代码,则直接回退到上一个版本,再进行pull:

      git reset --hard
      git pull origin master
      
      1
      2