git pull from clean 目录有 merge 冲突

标签 git

我从我的上游在一个干净的工作目录上执行了一个git pull,它给我带来了 merge 冲突。我花了大约一个小时手动重置它们,以为我搞砸了,结果又发生了。

这是 git 中的错误吗?我对此知之甚少,所以我完全愿意接受我对自己做了这件事。

这是我截断的输出(大约有 9 个文件,但我想节省空间,文件名已更改以保护无辜者):

$ git status
# On branch master
nothing to commit (working directory clean)
$ git pull
Auto-merged xxxx/xxxx/xxxx.xxx
CONFLICT (content): Merge conflict in xxxx/xxxx/xxxx.xxx
Automatic merge failed; fix conflicts and then commit the result.

我正在使用 Solaris 11 Express 和默认的 git 包。

$ uname -a
SunOS xxxx 5.11 snv_151a i86pc i386 i86pc Solaris
$ git --version
git version 1.5.6.5
$ pkg list git
NAME (PUBLISHER)                              VERSION         STATE      UFOXI
developer/versioning/git                      1.5.6.5-0.151.0.1 installed  -----

我发现了这个问题:Git pull fails: You have unstaged changes. Git status: nothing to commit (working directory clean) ,这看起来最接近但答案不令人满意。

如何在不删除我的整个存储库并创建新克隆的情况下解决这个问题?

最佳答案

您的工作目录可能是干净的,但是您有一个或多个您在本地进行的提交不在服务器上。当您 pull 时,git 会尝试将这些本地提交与服务器上的提交 merge ,但由于它们修改了代码的同一区域,因此它们会发生冲突。

您在这里的选择基本上可以归结为:

  1. Fix the conflicts.您告诉 git 如何处理冲突的更改,然后继续。
  2. 使用 git pull --rebase rebase 并修复冲突。这与 1 没有太大区别,但如果您的更改从未发布(即,它们从未被推送过),这可能会让您获得更清晰的(线性)历史记录。
  3. 使用 git reset --hard remotename/remotebranch 放弃本地更改并使用远程更改。这将丢失您在本地提交但未推送到其他地方的所有更改。

关于git pull from clean 目录有 merge 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6498914/

相关文章:

iphone - 分发使用其他代码的自定义 View

git - 无法打开 git/commit_editmsg

java - 当我尝试git push heroku时出现错误

Git 将子模块干净地 merge 到父树中并保留提交历史记录

github 说提交缺少作者信息,为什么

eclipse - gitignore 不会忽略我的 .settings/directory(由 eclipse 创建)

git - 如何获得与 merge 命令相同的关于 merge 冲突的输出?

git - 让 git 在差异中突出显示制表符?

git - git从6个月前开始继续推送错误的文件

Github 企业 - 远程 : Password authentication is not available for Git operations