我们有一个远程仓库 origin ,它有主分支,开发分支和一堆bugfix分支。
几个月前我将它克隆到了本地,并检查了开发分支但没有做任何事情,然后我前几天切换到bugfix_1分支,但仍然没有做任何事情。今天,我切换回开发分支,并运行 git pull ,但这导致了数千次合并冲突。
我曾经认为 git pull 类似于 svn update ,无论远程仓库中有多少文件被更改,都不应该有任何合并冲突,因为我没有& #39; t在当地改变了一切。
我曾经是一个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个本地提交,我什么都不做改变!
答案 0 :(得分:3)
关于你的第二个问题:
git pull
表示git fetch origin + git merge origin / development in your case。
git pull origin development
表示git fetch origin development + git merge origin / development。
在第二种情况下,它只获取origin / development分支。
答案 1 :(得分:1)
关于您的第一个问题:
是的,你绝对正确,如果你没有做任何改变,你不应该有任何合并冲突。我能想象的唯一可能的原因是,如果有人更改了服务器上的历史记录(您永远不应该这样做),而不是仅将更新推送到服务器。
您可以通过运行来使用服务器上的任何内容(如果您没有任何本地更改):
git checkout master
git reset --hard origin/master
关于第二个问题:
请把它放在StackOverflow的另一个问题上,这两个问题没有任何共同点......
答案 2 :(得分:0)
如果您未在开发分支中更改任何内容,则可以使用“git reset”来回滚最新版本。 如果您在开发分支中更改了某些内容,并希望合并远程主分支中的最新更改,则可以执行以下操作: