Git merge分支已经是最新的,但尚未修改

时间:2014-05-21 19:52:21

标签: git merge

我是git的新手,并且有两个分支我试图合并(newDevelopment和master)。我在newDevelopment分支上以某种方式搞砸了文件跟踪,因此我无法将更改合并到master中。我尝试重命名分支并合并无济于事。

这是我正在看的内容:

blabla@ip:/vol/apps/staging/current$ git diff --name-status newDevelopment..master
M       app/admin/reports.rb
M       config/resque_schedule.yml

blabla@ip:/vol/apps/staging/current$ git branch
MoreDetailsReport
* master
newDevelopment

blabla@ip:/vol/apps/staging/current$ git merge newDevelopment
Already up-to-date.

我该如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:2)

看起来您已将newDevelopment合并到master,当您这样做时,您忽略了一些更改(重置它们)并提交了合并。因此,master包含newDevelopment的所有修订版本,因此无需再合并到其中。但是分支是不同的,因为你忽略了变化。

要解决的一种方法是制作分支的副本以进行备份,然后将其历史记录重置到您搞砸之前的位置:

git branch master-bak
git reset --hard SHA1

使用git log找到正确的SHA1,可能它是合并提交。之后,重复出错的合并。

另一个不太好的修复方法是从其他分支获取这些文件:

git checkout newDevelopment -- app/admin/reports.rb
git checkout newDevelopment -- config/resque_schedule.yml

然后使用git diff --cached查看差异。