git合并不合并

问题描述:

我有一个主人和“PersonalSite”分支的代码库我正在努力。我一再试图将主人合并到PersonalSite分支中无济于事。git合并不合并

这一次,我原本以为一切都理顺了,所以我所做的:

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

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

现在,当我从“PersonalSite”分支运行“git merge master”时,它会显示“已经是最新的”。但事实并非如此,因为我尝试合并的变化实际上并未进行合并。我到底要做什么才能让主人真正融合?

通过修复冲突并提交合并冲突,您已完成合并。必要时Git会添加合并提交,这很正常,但除了合并发生以外,并且在发生冲突时合并了哪些文件,它们不记录任何内容。如果你仔细看看你的日志,你会发现实际上有来自主人的提交。编辑: 好吧,试试这个测试吧。您不必使用合并命令,只需将主人拉入PersonalSite即可。

git checkout PersonalSite 
git pull origin master 

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

如果您像本地合并了本地东西,那么您需要确保本地跟踪分支是最新的。始终指定分支名来自拉,

git pull origin master 
git pull origin PersonalSite 
+1

我说这没有合并的原因是,有在主分支修改未反映在PersonalSite分支合并,甚至后... – LAW

+0

更新的答案。 – sciritai

+1

git pull起源[分支名称]做了诡计 – Bijan

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

要查看合并两边的差异做:

git diff head^.. 

git diff head^2.. 

换另一侧。

希望这会有所帮助。

假设你实际上已经合并了你的意思合并(这是可能的,但很难说,因为你的解释),你还是不会看到的diff输出git log,只是提交消息。即使您使用-p来指示git log显示差异,合并提交的差异通常也将为空,或者可能显示冲突解决方案。这是因为在语义上,只有冲突解决方案是合并提交的一部分;其他更改是其他提交的一部分。

如果你想git log反正向您展示合并的全效提交,你可以使用:

git log -p -m -c 

的选项功能:

  • -p引导其显示的diff,不只是提交消息;
  • -m告诉它显示合并提交的差异;和
  • -c告诉它两个diff文件合并成一个合并提交

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

我意识到现在这是一个老问题,但我只是有我认为是同样的问题。我不能把它与其他的答案中的命令的任意组合解决,但通过在分支上运行,我想融合我没有解决它变成:

git checkout <desired_branch_name> -- . 

所以你:

git checkout master -- . 

我发现这个答案在这里: git: checkout files from another branch into current branch (don't switch HEAD to the other branch)