如何查看已编辑的大块的原始形式?

时间:2016-03-04 13:33:25

标签: git diff git-add

git add -p只能暂存部分未提交作品。通常,这只是确认/否定某些个人是否应该参与提交的问题。但是,有时我需要分割比 s 选项更精细的块。

输入 e ,打开一个编辑器,可以在其中更改差异。

不幸的是,我经常弄错了所以当我做完git时说

error: patch failed: src/foo.bar:1234
error: src/foo.bar: patch does not apply

它让我再次重新打开大块头,但是为了应用,很难看出差异最初看起来如何/需要看起来如何。

是否有一些简单的方法可以看到这一点,而无需返回并完全重新执行git add -p

1 个答案:

答案 0 :(得分:0)

如果你的补丁不适用,你应该看到这一行

Your edited hunk does not apply. Edit again (saying "no" discards!) [y/n]?

然后就像按 n 然后按 k 一样简单(回到"看到之前未定的大块")

我会搜索一篇很好的文章,解释如何正确编辑帅哥并在此处发布链接。

更新(2018-01-17):

git文档有一个很好的关于Advanced Merging的部分,在那里你可以找到手动文件重新合并,其中说明:

  

首先,我们进入合并冲突状态。然后我们想要获得我的文件版本的副本,它们的版本(来自我们合并的分支)和通用版本(从两侧分支出来)。然后我们想要修复他们的一方或我们的一方,并再次尝试合并这个单个文件。

     

获取三个文件版本实际上非常简单。 Git将所有这些版本存储在“阶段”下的索引中,每个阶段都有与之关联的数字。第1阶段是共同的祖先,阶段2是您的版本,阶段3来自MERGE_HEAD,您正在合并的版本(“他们的”)。

     

您可以使用git show命令和特殊语法提取冲突文件的每个版本的副本。

$ git show :1:hello.rb > hello.common.rb
$ git show :2:hello.rb > hello.ours.rb
$ git show :3:hello.rb > hello.theirs.rb

这有帮助吗?