Git stash用未跟踪文件修补

But*_*GOL 11 git

如何使用未跟踪的文件进行Git存储,将其推送到补丁并在另一台计算机中恢复.

git stash save -u feature
git stash show -p > patch
git apply patch
Run Code Online (Sandbox Code Playgroud)

但路径没有未跟踪文件

tor*_*rek 16

法线git stash创建一个由两个提交组成的存储包:索引和工作树.

使用-u-a(或其他拼写)创建一个三次提交的藏匿袋.第三次提交包含(仅)未跟踪(-u)或未跟踪和忽略/"所有"(-a)文件,即它省略了所有跟踪文件.

如果您需要以补丁的形式使用它,诀窍是创建两个补丁:

  • 对跟踪文件的更改:( git stash show -p到目前为止你所拥有的),加上
  • 第三次提交的全部内容,作为补丁.

获取第二个项目符号的最简单方法是git diff针对空树进行第三次提交.Git 在每个存储库中都有一个空树,其ID是幻数4b825dc642cb6eb9a060e54bf8d69288fbee4904.因此,该树之间的差异stash^3,将包含一系列添加未跟踪文件的git补丁:

git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 stash^3
Run Code Online (Sandbox Code Playgroud)

然后,您可以简单地将两个补丁合并为一个:

git stash show -p > patch
git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 stash^3 >> patch
Run Code Online (Sandbox Code Playgroud)

(参见上面的最后一个环节的方式,以避免硬编码的幻数为空树此外,如果你只是想,查看u提交,使用git show:git show stash^3,例如).