如何以非交互方式存储单个块?

时间:2018-02-20 10:01:15

标签: git

假设我有一个包含多组更改的文件(a.k.a. hunks),我可以为任何单个hunk生成一个补丁文件。就像你可以用以下方式表达一个单独的大块头一样:

git apply --cached - < patch

我希望能够使用一个大块的补丁存储一个单独的大块头。但是,我无法通过git来非交互式地为一个单独的hunk保存藏匿。我尝试了以下但是它们不能以各种方式工作:

git stash save --patch patch      # interactive
git stash save --patch < patch    # interactive
git stash save --patch - patch    # unknown option: -
git stash save --patch - < patch  # unknown option: -
git stash save < patch            # ignores patch and stashes all the hunks

git stash push --patch patch      # pathspec 'patch' did not match...
git stash push --patch < patch    # interactive
git stash push --patch - patch    # unknown option: -
git stash push --patch - < patch  # unknown option: -
git stash push < patch            # ignores patch and stashes all the hunks

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

Git不允许您通过补丁指定隐藏块。但是,您可以使用交互式使用的相同字母驱动--patch选项。因此,如果您只想隐藏三个中的第二个,则可以使用.rss-subscribe:before{ font-family: 'Font Awesome 5 Free'; font-size: 20pt; content: "\f09e"; margin-right: 10px; float: left; width: 32px; }

例如,Git testsuite就是这样做的。

如果你有一个hunk,而不是diff中那个hunk的索引,你必须解析printf "%s\n" n y n | git stash save -p的输出才能找到索引。