是否有一个git stash命令可以存储您的更改,但也将它们保存在工作目录中?所以基本上是一个git私藏处;Git stash应用于一步?
当前回答
有一个小技巧可以帮助你,不是把东西藏起来,而是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 --soft HEAD~ (Now go back to where you've left with your working dir and staged status intact)
所以现在你有一个提交标记的隐藏在你的处置,这是不可能做一个git隐藏pop无论如何,但你可以做的事情,如创建补丁或重置文件等从那里,你的工作目录文件也保持完整BTW。
其他回答
对答案的一个小改进,在实际中可能会使用。
$ 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 --soft HEAD~ (Now go back to where you've left with your working dir and staged status intact)
所以现在你有一个提交标记的隐藏在你的处置,这是不可能做一个git隐藏pop无论如何,但你可以做的事情,如创建补丁或重置文件等从那里,你的工作目录文件也保持完整BTW。
你可以使用git stash create来创建一个stash提交,然后使用git stash store将其保存到stash:
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所做的所有事情。例如,它不会将分支名称附加到提交中。“存储@{0}:在myBranch: Stash提交消息”。
不管怎样,另一种方法是将你想要保留的更改放在阶段,然后使用——keep-index保存所有内容:
$ git add modified-file.txt
$ git stash push --keep-index
上面的命令将隐藏所有内容,但它将把文件暂放在工作目录中。
从官方的Linux内核Git文档Git stash或从Git -scm:
如果使用——keep-index选项,则所有已添加到索引中的更改都保持不变。
Git stash,然后Git stash apply (Git stash && Git stash apply)将存储文件,并在它之后立即应用stash。所以,毕竟你将有你的变化在stash和工作目录。
如果你想要一个完整的别名,你可以创建它。只需在~/.gitconfig中添加如下内容:
[alias]
sta = "!git stash && git stash apply"
这种方法的缺点是所有文件都被存储和重新创建。这意味着所讨论的文件上的时间戳将被更改。(导致Emacs抱怨当我试图保存文件时,如果在我做git sta之前打开它,如果你使用make或friends,可能会导致不必要的重建。)
推荐文章
- 如何将git配置存储为存储库的一部分?
- 如何修改GitHub拉请求?
- 如何在Github和本地删除最后n次提交?
- 我如何调试git/git-shell相关的问题?
- 错误:无法使用rebase进行拉取:您有未分阶段的更改
- Git隐藏未缓存:如何把所有未分期的变化?
- 真实的恶魔
- 如何从另一个分支获得更改
- Git:权限被拒绝(publickey)致命-无法从远程存储库读取。克隆Git存储库时
- git reflog和log有什么区别?
- git推挂在Total line之后
- 重命名git子模块
- 结合Git存储库的前两次提交?
- Xcode 6 gitignore文件应该包括什么?
- 我如何从现有回购的分支创建一个新的GitHub回购?