是否有一个git stash
命令可以存储您的更改,但也将其保留在工作目录中?所以基本上git stash; git stash apply
一步就可以完成?
git stash && git stash apply
。您会注意到,该问题的答案与我的答案完全不同。
是否有一个git stash
命令可以存储您的更改,但也将其保留在工作目录中?所以基本上git stash; git stash apply
一步就可以完成?
git stash && git stash apply
。您会注意到,该问题的答案与我的答案完全不同。
Answers:
对于它的价值,另一种方法是执行您要保留的更改,然后使用--keep-index
以下方法存储所有内容:
$ git add modified-file.txt
$ git stash push --keep-index
上面的命令将隐藏所有内容,但会将文件保留在您的工作目录中。
来自或git-scm的官方Linux Kernel Git文档git stash
:
如果使用该
--keep-index
选项,则已经添加到索引的所有更改均保持不变。
git stash
然后git stash apply
(git stash && git stash apply
)将存储文件并在其后立即应用存储。因此,毕竟您将在存储和工作目录中进行更改。
如果需要,您可以创建一个别名。只需将以下内容放入~/.gitconfig
:
[alias]
sta = "!git stash && git stash apply"
这种方法的缺点是所有文件都被存放并重新创建。这意味着有关文件的时间戳将被更改。(如果在执行之前尝试打开文件,则使Emacs抱怨,git sta
如果您使用的是make
朋友,可能会导致不必要的重建。)
git stash; git stash apply
和之间有什么区别git stash && git stash apply
?
&&
仅当第一个返回零状态代码时才运行第二个命令。
git stash save
同一个参数,然后做git stash apply
?
答案可能会有所提高,实际上可能会使用。
$ git add modified-file.txt
(OR $ git add . ---- for all modified file)
$ git stash save --keep-index "Your Comment"
有一个技巧可以帮助您,而不是藏起来的东西,而是FWIW:
git add -A
git commit -m "this is what's called stashing" (create new stash commit)
git tag stash (mark the commit with 'stash' tag)
git reset HEAD~ (Now go back to where you've left with your working dir intact)
因此,现在您可以随意使用带有提交标记的存储,git stash pop
无论如何都无法执行,但是您可以执行诸如创建补丁或重置文件之类的操作。从那里开始,您的工作目录文件也保持不变。
您可以git stash create
用来创建存储提交,然后使用git stash store
以下命令将其保存到存储:
git stash store $(git stash create) -m "Stash commit message"
可以将其保存为git别名,以使其更加方便:
git config --global alias.stash-keep '!git stash store $(git stash create)'
git stash-keep -m "Stash commit message"
请注意,这并不做一切该git stash push
做。例如,它不会将分支名称附加到提交中,例如“ stash@{0}: On myBranch: Stash commit message
”。
man git-stash
,-m <message>
有一个更正:说必须在提交哈希之前。除了最新git中的某些更改。