【发布时间】:2014-09-23 11:24:34
【问题描述】:
我尝试从一个本地分支转到另一个分支。 Git 告诉我我不能这样做,因为我的local changes to the following files would be overwritten by checkout。
然后我得到一个“推荐”Please, commit your changes or stash them before you can switch branches。
我知道我不需要对上述文件进行更改。可以覆盖它们。所以,我尝试stash。我执行git stash file_name。结果我得到:
Usage: git stash list [<options>]
or: git stash show [<stash>]
or: git stash drop [-q|--quiet] [<stash>]
or: git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
or: git stash branch <branchname> [<stash>]
or: git stash [save [--patch] [-k|--[no-]keep-index] [-q|--quiet]
[-u|--include-untracked] [-a|--all] [<message>]]
or: git stash clear
好的。这没用。然后我尝试git checkout file_name。没有来自 git 的抱怨。然后我可以从一个分支切换到另一个分支。所以,我似乎得到了我需要的东西(转到第二个分支而不保存对第一个分支的更改)。
但是,我想问一下为什么stash 不起作用,如果起作用了,最终结果会有什么不同?
【问题讨论】:
-
stash没用,因为你用错了。见git help stash。您要求的不同之处在于,如果您隐藏了更改,那么它们将被隐藏,但现在您丢失了这些更改。 -
“隐藏”更改是什么意思?如果更改被“隐藏”,那么它们是一种记忆?那么“stash”和“add”有什么区别。如果我将这些更改“添加”到暂存区,我确实会记住更改(在分支中)。
-
git help stash会详细解释。 -
@Roman Stashing 意味着将更改置于 Git 历史“之外”。再次查看
git help stash和this。
标签: git git-checkout git-stash