我有一个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”时,它说“已经是最新的”。但事实并非如此,因为我试图合并的所有变化都没有实际合并。到目前为止,我到底是做什么来让主人实际合并?
通过修复冲突并提交合并冲突,您已经完成了合并。 Git在必要时添加了合并提交,这是正常的,但除了合并发生以及在发生冲突时合并了哪些文件之外,它们不会记录任何内容。如果你仔细查看你的日志,你会发现实际上有来自master的提交。
编辑:
好的,试试这个。您不必使用merge命令,只需将master拉入PersonalSite即可。
git checkout PersonalSite
git pull origin master
看看是什么给你。如果它说是最新的,那么你已正确合并。
如果您像在本地一样在本地合并,那么您需要确保本地跟踪分支是最新的。始终指定要从中拉出的分支名称,
git pull origin master
git pull origin PersonalSite
通过修复冲突并提交合并冲突,您已经完成了合并。 Git在必要时添加了合并提交,这是正常的,但除了合并发生以及在发生冲突时合并了哪些文件之外,它们不会记录任何内容。如果你仔细查看你的日志,你会发现实际上有来自master的提交。
编辑:
好的,试试这个。您不必使用merge命令,只需将master拉入PersonalSite即可。
git checkout PersonalSite
git pull origin master
看看是什么给你。如果它说是最新的,那么你已正确合并。
如果您像在本地一样在本地合并,那么您需要确保本地跟踪分支是最新的。始终指定要从中拉出的分支名称,
git pull origin master
git pull origin PersonalSite
我意识到这是一个较旧的问题,但我只是拥有我认为是同样的问题。我无法通过其他答案中的任何命令组合解决它,但我确实通过在我想要合并到的分支中运行来解决它:
git checkout <desired_branch_name> -- .
所以对你来说:
git checkout master -- .
我在这里找到了这个答案:
git:从另一个分支到当前分支的签出文件(不要将HEAD切换到另一个分支)
假设你实际上合并了你想要合并的东西(这可能但很难说,给出你的解释),你仍然不会看到输出中的差异 git log
,只是提交消息。即使你使用 -p
告诉 git log
为了显示差异,合并提交的差异通常是空的,或者可能显示冲突解决方案。这是因为从语义上讲,只有冲突解决方案才是合并提交的一部分;其他更改是其他提交的一部分。
如果你想 git log
无论如何,为了向您展示合并提交的完整效果,您可以使用:
git log -p -m -c
选项的功能:
-p
指示它显示差异,而不仅仅是提交消息;
-m
告诉它显示合并提交的差异;和
-c
告诉它将两个差异合并为一个用于合并提交
差异视图 gitk
会做同样的事情。