我在干净的工作目录上从我的上游做了git pull
,它向我展示了合并冲突。我花了大约一个小时手动重置它们,以为我搞砸了一些东西然后又发生了。
这是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),这似乎最接近,但答案却不尽如人意。
如何在不删除整个存储库并制作新克隆的情况下解决此问题?
答案 0 :(得分:20)
您的工作目录可能很干净,但您有一个或多个本地提交但不在服务器上的提交。当你拉动时,git尝试将这些本地提交与服务器上的提交合并,但由于它们修改了代码的相同区域,因此它们会发生冲突。
您的选择基本归结为:
git pull --rebase
重新生成并修复冲突。这与1没什么不同,但如果您的更改从未发布过(即,它们从未被推送过,那么),这可能会让您获得更清晰(线性)的历史记录。git reset --hard remotename/remotebranch
使用遥控器。这将丢失您在本地提交但未在其他地方推送的任何更改。答案 1 :(得分:0)
拉,解决合并冲突并提交?即使你有一个干净的工作目录,如果你已经提交了一些工作,这与传入的更改有冲突,你就会遇到合并冲突。
答案 2 :(得分:0)
添加到 bdonlan 答案,当你有一些提交(在你的本地存储库上)时会发生这种情况,但远程存储库已经提前(与你的相比有一些进展)本地提交的文件)。
当我因为那些冲突而无法推动或拉动时,我才陷入困境。
试图做' rebase '或'重置 - 硬'没有运气。
对我有用的唯一解决方案是返回一个提交并拉动;
按照以下步骤操作:
警告:这是一种破坏性操作,会导致您丢失对此代码的最后更改,因此请先备份您的更改!