如何使用 Git stash 命令将未被跟踪的文件暂存,将其推送到补丁并在另一台计算机上还原。
git stash save -u feature
git stash show -p > patch
git apply patch
但是路径下没有未被跟踪的文件
如何使用 Git stash 命令将未被跟踪的文件暂存,将其推送到补丁并在另一台计算机上还原。
git stash save -u feature
git stash show -p > patch
git apply patch
但是路径下没有未被跟踪的文件
一个普通的 git stash
创建了一个stash bag,其中包含两个提交:索引和工作树。
使用 -u
或 -a
(或它们的其他拼写方式)创建了一个three-commit stash bag。第三个提交仅包含未跟踪的 (-u
) 或未跟踪和被忽略/“全部”(-a
) 的文件,即省略了所有已跟踪的文件。
如果你需要以补丁形式进行,请使用以下技巧创建两个补丁:
git stash show -p
(目前的内容),再加上获取第二个项目的最简单方法是使用git diff
将第三次提交与空树进行比较。Git 在每个存储库中始终有一个ID为魔术数字4b825dc642cb6eb9a060e54bf8d69288fbee4904
的空树。因此,该树与stash^3
之间的差异将包含一系列添加未跟踪文件的git补丁:
git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 stash^3
git stash show -p > patch
git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 stash^3 >> patch
git stash save --all
但是当我执行
git diff stash^3
时,终端显示:zsh: no matches found: stash^3如果我理解正确的话,我需要执行以下三个步骤?
git stash save --all
git stash show -p > patch
git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 stash^3 >> patch
- ButuzGOL^3
,而不是将其传递给 git。您必须使用反斜杠或引号来保护 ^
,例如,使用 'stash^3'
而不是仅使用 stash^3
。(不同的 shell 具有不同的特殊字符,sh 和 bash 不需要此操作。) - torekgit diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 stash^3 >> patch
之后,我得到了一个补丁文件,但它也包含了.gitignore
中忽略的文件? - ButuzGOLgit apply
:
git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 stash^3 [<path spec>] | git apply -
- AndOs
git stash show -p stash@{0} > patch
命令来创建补丁文件。 - donutgit stash show
只是将工作树提交与其父提交进行比较。 - torek