问题 git merge不合并


我有一个master和“PersonalSite”分支,用于我正在处理的代码库。我一直试图将主人合并到PersonalSite分支无济于事。

这一次,我以为我把一切都弄清楚了,所以我做了:

git checkout master
git pull
git checkout PersonalSite
git pull
git merge master

看起来一切正常,它列出了我预期的文件集,但是存在冲突。冲突是正确的,并且正如预期的那样,所以我修复了它,做了“git add”,“git commit”,然后是“git push”。但是现在,当我查看我的git日志时,它只显示一个没有代码更改但只有一个冲突的提交。

现在,当我从“PersonalSite”分支运行“git merge master”时,它说“已经是最新的”。但事实并非如此,因为我试图合并的所有变化都没有实际合并。到目前为止,我到底是做什么来让主人实际合并?


10596
2017-10-12 20:43


起源



答案:


通过修复冲突并提交合并冲突,您已经完成了合并。 Git在必要时添加了合并提交,这是正常的,但除了合并发生以及在发生冲突时合并了哪些文件之外,它们不会记录任何内容。如果你仔细查看你的日志,你会发现实际上有来自master的提交。

编辑: 好的,试试这个。您不必使用merge命令,只需将master拉入PersonalSite即可。

git checkout PersonalSite
git pull origin master

看看是什么给你。如果它说是最新的,那么你已正确合并。

如果您像在本地一样在本地合并,那么您需要确保本地跟踪分支是最新的。始终指定要从中拉出的分支名称,

git pull origin master
git pull origin PersonalSite

6
2017-10-12 20:57



我说它没有合并的原因是主分支中的更改即使在合并后也未在PersonalSite分支中反映出来... - LAW
更新的答案。 - sciritai
git pull origin [分支名称]做了伎俩 - Bizhan


答案:


通过修复冲突并提交合并冲突,您已经完成了合并。 Git在必要时添加了合并提交,这是正常的,但除了合并发生以及在发生冲突时合并了哪些文件之外,它们不会记录任何内容。如果你仔细查看你的日志,你会发现实际上有来自master的提交。

编辑: 好的,试试这个。您不必使用merge命令,只需将master拉入PersonalSite即可。

git checkout PersonalSite
git pull origin master

看看是什么给你。如果它说是最新的,那么你已正确合并。

如果您像在本地一样在本地合并,那么您需要确保本地跟踪分支是最新的。始终指定要从中拉出的分支名称,

git pull origin master
git pull origin PersonalSite

6
2017-10-12 20:57



我说它没有合并的原因是主分支中的更改即使在合并后也未在PersonalSite分支中反映出来... - LAW
更新的答案。 - sciritai
git pull origin [分支名称]做了伎俩 - Bizhan


我意识到这是一个较旧的问题,但我只是拥有我认为是同样的问题。我无法通过其他答案中的任何命令组合解决它,但我确实通过在我想要合并到的分支中运行来解决它:

git checkout <desired_branch_name> -- .

所以对你来说:

git checkout master -- .

我在这里找到了这个答案: git:从另一个分支到当前分支的签出文件(不要将HEAD切换到另一个分支)


4
2017-07-05 16:31





假设你实际上合并了你想要合并的东西(这可能但很难说,给出你的解释),你仍然不会看到输出中的差异 git log,只是提交消息。即使你使用 -p 告诉 git log 为了显示差异,合并提交的差异通常是空的,或者可能显示冲突解决方案。这是因为从语义上讲,只有冲突解决方案才是合并提交的一部分;其他更改是其他提交的一部分。

如果你想 git log 无论如何,为了向您展示合并提交的完整效果,您可以使用:

git log -p -m -c

选项的功能:

  • -p 指示它显示差异,而不仅仅是提交消息;
  • -m 告诉它显示合并提交的差异;和
  • -c 告诉它将两个差异合并为一个用于合并提交

差异视图 gitk 会做同样的事情。


3
2017-10-12 22:19





除冲突解决方案外,合并不会显示任何更改。

要查看合并两侧的差异,请执行以下操作:

git diff head^..

git diff head^2..

对方。

希望这可以帮助。


0
2017-10-12 20:50