2012-02-21 100 views
1

这可能听起来有些不可思议,但有时在一些快速和肮脏的黑客我想有文件改变以反映之前的版本和藏匿后git stash apply变化:Git的应用藏匿使用冲突符号

++<<<<<<< Updated upstream 
+stuff 
++======= 
+ more stuff 
++>>>>>>> Stashed changes 

Git使用此表示法来手动解决冲突;我不一定在寻找,我想要的只是在我的编辑器中使用这两个版本而不使用任何外部合并工具的方法。

也许这可以更好地使用编辑器的功能而不是Git本身,在这种情况下,我使用的是Emacs。

回答

3

在git中,存储栈实际上是一个分支。这意味着您可以对普通分支进行任何操作,您也可以对您的存储进行操作:这包括与它合并!

所以,如果你想要任何特定于合并的行为,只需将它合并为[email protected]{0}而不是git stash apply

如果你只是想看到的差异,你可以git show藏匿内容以同样的方式(或git diff,或任何其他的git命令)。

例如:meld <(git show [email protected]{0}:path/to/file) <(git show HEAD:path/to/file)

+0

我不想只看到差异;当发生冲突时,文件实际上被更改为显示两个版本,即使没有冲突,我也在寻找类似的行为。我希望在文件中写入两个版本,就像我必须手动解决冲突一样。 – cYrus 2012-02-21 19:14:31

+0

@cYrus啊!然后请参阅http://stackoverflow.com/questions/3122056/how-to-get-3-way-merge-in-git-on-non-conflict-merges – Borealid 2012-02-21 19:16:11

+0

是的,也许,但我不想取代合并命令的行为以及每次更改属性都非常繁琐。 – cYrus 2012-02-21 19:25:00