2017-04-01 47 views
0

我在项目中粘贴了另一个文件版本,它有增加和删除。我想伪造一个合并到当前提交的版本,以便我可以比眼睛比较文件更容易看到和解决冲突。如何在进行更改后伪造文件合并?

如何将修改后的文件(工作树)合并到同一个文件的HEAD版本中?

config/routes.rb # (1) commited version HEAD 
config/routes.rb # (2) modified version in working tree 

我已经粘贴从我的朋友给我发到我的现有航线的文件的文件(2)config/routes.rb(1)。

感谢

回答

3

为了真正实现“合并”两个文件,你需要一个“基地”版本,从他们都得出。否则,计算机无法区分一个文件中的添加和另一个文件中的删除之间的区别,因此它无法分辨哪个版本更新,并且无法进行任何自动更改(即,每次更改都会产生冲突)。例如:

file1: 
... 
here is a line 
this line was added in file 1, or was it deleted in file 2? 
here's the next line 
... 

file2: 
... 
here is a line 
here's the next line 
... 

如果没有一个基本文件,有没有办法告诉这里发生了什么,所以目前还不清楚如果file1file2是正确的版本。

如果你有一个基本版本住进混帐,说在提交123abc然后做最简单的方法是:

  • 确保你的树是干净的(即,将新版本的出路并重新签你的头型)
  • git branch topic_merge_friends_changes 123abc建立在临时党支部提交包含基本版本
  • 退房分支:git checkout topic_merge_friends_changes - 注意,这可以使用-b前面的步骤相结合国旗与checkout
  • 现在,将新文件放到地方,git commit
  • 切换回主:git checkout master
  • git merge topic_merge_friends_changes

或者,你可以跳过犯和合并,取而代之的是基本副本版本(称为base.txt)和后两个版本(mine.txtfriends.txt),然后运行git merge-file mine.txt base.txt friends.txt将您的朋友的更改合并到mine.txt实际上生成并提交或新的分支。

最后,如果你没有基础文件,你可以做的最好的是手动检查和编辑两个文件之间的差异。您可以

  • 写的git diff输出到文件中,手动编辑结果得到你想要的文件(当然,你需要删除的缩进是DIFF增加至文件同意的领域)
  • 使用视觉差异工具 - Emacs有一个很好的视觉差异模式(例如,M-x ediff-merge-files),让你看到每个改变并排并选择你想要的版本与击键,并且许多其他编辑将有类似的设施
+0

嗨再次,任何方式来合并文件从藏匿? ..当我做混帐藏匿流行,它说该文件已经存在,所以我需要尝试并合并它。 – Aurimas

相关问题