我试着从一个本地分支机构转到另一个分支机构。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不工作,如果它工作了,最终结果会有什么不同?
发布于 2014-09-23 19:28:58
您不能显式地隐藏单个文件。如果你运行git-stash,它会保存你所有的修改。
git checkout -- file将丢弃您在工作目录中对该文件所做的更改,并签出当前提交记录的该文件的版本(即HEAD所指向的版本)。
发布于 2014-09-23 19:48:18
git stash将您的更改保存到"stash“中--它看起来像是临时提交的堆栈。可以在git stash list中看到。
使用git stash,可以隐藏某些文件甚至代码块。试试git stash save -p。它将交互式地询问您要保存什么内容。
另一种方法是使用git add添加所有但只有一个文件作为索引。然后运行git stash save -k。它隐藏已更改的文件(在git status中为红色),而不是准备提交的文件(在git status中为绿色)。
发布于 2018-04-05 13:37:03
如果没有提交更改,当需要更改分支时,可以使用git stash命令将更改保存到一堆未完成的更改中。如果您只需要隐藏已完成作品的选定部分,则可以使用git stash -p。要重用保存的更改,请使用git stash pop命令。
在git checkout命令中,如果你以git checkout的身份给出命令,你的工作树将指向当前的HEAD。git checkout branchname当您从分支签出时,如果存在未提交的更改,则这些更改将作为已修改的更改添加到新的签出分支。git checkout filepath当您对文件路径使用签出时,文件的未提交更改将丢失。
https://stackoverflow.com/questions/25993871
复制相似问题