是否有一个git stash命令可以存储您的更改,但也将它们保存在工作目录中?所以基本上git stash; git stash apply一步到位?
小智 127
对于它的价值,另一种方法是暂停您想要保留的更改,然后使用--keep-index以下方法存储所有内容:
$ git add modified-file.txt
$ git stash save --keep-index
Run Code Online (Sandbox Code Playgroud)
上面的命令将隐藏所有内容,包括modified-file.txt,但它也会将该文件暂存并保存在您的工作目录中.
从官方Linux Kernel Git文档中git stash:
如果使用该
--keep-index选项,则已添加到索引的所有更改都保持不变.
mad*_*ead 46
git stash然后git stash apply(git stash && git stash apply)将存储文件并在其后立即应用存储.所以,毕竟你将在藏匿处和工作目录中进行更改.
如果您想将其整合在一起,则可以创建别名.把这样的东西放到~/.gitconfig:
[alias]
sta = "!git stash && git stash apply"
Run Code Online (Sandbox Code Playgroud)
这种方法的缺点是所有文件都被存储并重新创建.这意味着将更改有问题文件的时间戳.(如果我在尝试保存文件之前导致Emacs抱怨,git sta如果您在使用之前打开它,可能会导致不必要的重建,如果您正在使用make或朋友.)
Pre*_*ngh 10
答案中的一个小的增强,实际上可能会使用.
$ git add modified-file.txt
(OR $ git add . ---- for all modified file)
$ git stash save --keep-index "Your Comment"
Run Code Online (Sandbox Code Playgroud)
您可以使用git stash create创建存储提交,然后使用git stash store以下命令将其保存到存储:
git stash store $(git stash create) -m "Stash commit message"
Run Code Online (Sandbox Code Playgroud)
这可以保存到 git 别名以使其更方便:
git config --global alias.stash-keep '!git stash store $(git stash create)'
git stash-keep -m "Stash commit message"
Run Code Online (Sandbox Code Playgroud)
请注意,这并不做一切该git stash push做。例如,它不会将分支名称附加到提交,例如“ stash@{0}: On myBranch: Stash commit message”。