【问题标题】:How can I see the original form of an edited hunk?我怎样才能看到编辑过的帅哥的原始形式?
【发布时间】:2016-06-18 06:26:34
【问题描述】:

git add -p 可以方便地仅暂存部分未提交的工作。通常,这只是确认/拒绝某些个人大块头是否应该进入提交的问题。但是,有时我需要拆分一个比 s 选项更精细的块。

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

不幸的是,我经常出错,所以当我完成后 git 会说

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

它让我可以再次重新打开大块,但很难看到差异最初看起来如何/它需要看起来如何才能应用。

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

【问题讨论】:

    标签: git diff git-add


    【解决方案1】:

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

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

    那么就很简单了,按n再按k(返回“查看上一个未决定的大块”)

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


    更新(2018-01-17):

    git 文档有一个关于 Advanced Merging 的不错的部分,您可以在其中找到 Manual File Re-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
    

    这有帮助吗?

    【讨论】:

      猜你喜欢
      • 2011-05-02
      • 2021-09-15
      • 2012-08-20
      • 2016-07-20
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 1970-01-01
      相关资源
      最近更新 更多