我正在使用 git-svn 来处理代码库,我需要将主干中的更改 merge 到我的分支。
我在 git 中提取了两个分支,当我在分支中运行 git diff trunk 时,我可以看到所有更改。
但是,当我运行 git merge Heads/trunk 时,我收到一条消息“已经是最新的”。
这显然不是最新的。我做错了什么?
最佳答案
没有什么比例子更好的了。以下是如何进入这种情况:
(从空目录开始):
> git init > echo "hello" > a.txt > git add -A > git commit -m "Created a on master" > git branch test > git checkout test
此时 a.txt 在主分支和测试分支上是相同的
> echo "goodbye" > a.txt > git add -u > git commit -m "Changed a on test"
现在(显然)会有差异:
> git diff --name-status master M a.txt
但是 git 没有什么可以 merge 的:
> git merge master Already up-to-date.
这是因为更改是在测试中进行的,而不是在主控上进行的。如果您切换到测试,diff 将类似地报告,但 merge 现在将 merge 从测试到主的更改:
> git checkout master > git diff --name-status test M a.txt > git merge test Updating 088cd9d..3d8c8e2 Fast-forward a.txt | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
Git merge 是定向的,从分支 A 到 B 的 merge 与从 B 到 A 的 merge 不同。
关于svn - merge git : via git-svn, 说已经是最新的,但 git-diff 说存在差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2808253/