为什么执行git pull会导致成千上万个合并冲突?

5
我们有一个名为"origin"的远程仓库,其中包括主分支、开发分支和一堆bugfix分支。
几个月前我将其克隆到本地,检出了开发分支但并没有做任何更改。那天我切换到了bugfix_1分支,但仍然没有做任何更改。
今天,我切换回开发分支并运行"git pull",结果出现了成千上万的合并冲突。
我曾经认为"git pull"像"svn update"一样,无论远程仓库有多少文件更改,在本地没有更改的情况下不应该有任何合并冲突。
我曾经是svn用户,并且对git比较陌生,如果有人能提供一些解释或可能的原因,那将不胜感激。或者我完全走错了吗?
另一个问题是,假设我在开发分支上,这两个命令之间有什么区别:
"git pull"

"git pull origin development"
谢谢。
编辑:根据Jan的建议,我上周进行了"git fetch origin" 和 "git reset --hard origin/development"。
今天,我运行"git fetch origin" 和 "git status",它给出了以下结果:
"您的分支和'origin/development'已经分叉,并且分别有45和51个不同的提交。"
我不知道为什么会有45个本地提交,我并没有做任何更改!

git config core.autocrlf 返回什么? - VonC
@VonC 它什么也没返回。 - gfytd
针对您的所有Git问题:http://nfarina.com/post/9868516270/git-is-simpler - Chris K
你尝试过使用 git pull --rebase 命令了吗? - Zloj
展示至少一个合并冲突会很有帮助。 - AD7six
3个回答

4

针对你的第一个问题:

是的,你说得完全正确,如果你没有做任何更改,就不应该有任何合并冲突。唯一可能的原因是如果有人在服务器上更改了历史记录(这是不应该做的),而不是只将更新推送到服务器。

如果你没有任何本地更改,你可以通过运行以下命令来使用服务器上的内容:

git checkout master
git reset --hard origin/master

对于你的第二个问题:

请在StackOverflow上提出一个单独的问题,这两个问题没有任何共同点...


4
对于你的第二个问题:
git pull 

在您的情况下,意味着 git fetch origin + git merge origin/development。请注意,保留了HTML标签。
git pull origin development

这意味着git fetch origin development + git merge origin/development。

在第二种情况下,它仅获取origin/development分支。


0

如果您在开发分支中没有更改任何内容,您可以使用 "git reset" 回滚到最新版本。

如果您在开发分支中更改了某些内容,并希望将最新更改合并到远程主分支中,则可以按照以下步骤操作:

  • git checkout master
  • git pull(下载主分支中的最新更改)
  • git checkout development
  • git merge master(将主分支的更改合并到开发分支中)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接