我是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.
我该如何解决这个问题?谢谢!
答案 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
查看差异。