代码之家  ›  专栏  ›  技术社区  ›  Olivier Verdier

吉特藏和编辑的帅哥

  •  12
  • Olivier Verdier  · 技术社区  · 14 年前

    git add -p git stash 但我偶尔会遇到以下问题,这是由以下命令序列重现的:

    • git add -p my_file :然后我 (使用 e )因为git建议的分裂不适合我
    • git stash --keep-index 我不承诺
    • git stash pop :现在出现问题:文件 my_file ,而git完全搞乱了我编辑过的hunk,所以我必须编辑文件,删除无用的合并标记,然后运行 git add my_file 然后 git reset HEAD

    我很困惑,因为这种情况只有在手动编辑一个帅哥时才会发生。我不认为这会有什么不同。


    • touch newfile
    • git add newfile
    • git commit -m 'newfile'
    • 在文件中添加两行
    • git add -p newfile
    • 编辑帅哥( e类 ),删除其中一行,然后退出git add( q
    • git stash—保留索引
    • 吉特藏酒

    现在文件 newfile 处于未合并状态。再次注意,问题是 . 如果不手动编辑任何hunk,上面的命令没有任何问题。

    git show :3:newfile ),以前的阶段版本处于第二阶段( git show :2:newfile ). 所以我可以,通过一些git black魔术,设法把第二阶段放在这个索引中,第三阶段放在工作回购中。。。但我不知道怎么做,所以我用手做。:-(

    3 回复  |  直到 14 年前
        1
  •  8
  •   Lesmana    12 年前

    要创建和测试包含部分工作树更改(包括手动编辑的块)的索引,请执行以下操作:

    git add --patch <files>
    
    git stash --keep-index
    
    <test the indexed changes>
    
    git reset --hard
    
    git stash pop --index
    

    此时没有冲突,存储库、索引和工作目录处于 git stash . 你现在可以了 git commit 索引更改。

    当然,这是相当奇怪和不太直观,我真的想知道是否有一个更简单的方法来做这件事。

        2
  •  4
  •   Olivier Verdier    14 年前

    我在git邮件列表中问了这个问题。我描述的是预期的行为。不是虫子。:-(

    我得到的答案是:

    如果你没有手动编辑这个帅哥,每个帅哥都会 这样的文件要么是no op(hunk已经应用),要么是 申请成功。

    对我来说这是一个严重的限制 git add --patch

        3
  •  2
  •   bstpierre Edgar Aviles    14 年前

    git stash --keep-index 保留索引,但仍将索引内容作为存储的一部分添加。

    尝试 git stash save -p --保存这个储藏室有点乏味,但可能会做你想做的事。