我首先从功能分支中检出一个分支。
git checkout -b MyBranch
在那个分支做了一些改变。添加了所有文件。然后我转移到功能分支。所有我的分阶段更改都出现在功能分支中。然后我做了:
git checkout -- <Staged File>
然后我搬到了我的分店。我在MyBranch中看不到我的暂存文件。
有什么方法可以恢复我的暂存文件吗?
不幸的是,如果我正确了解您的情况,您对文件的未提交更改将会丢失。
命令git checkout -- [file]
恢复对文件所做的任何未提交的更改。它将其版本更改为当前分支上的最后一次提交。
你说你再也看不到文件了。除非你的分支的最新提交中不存在该文件,这很奇怪(你应该阅读this answer)。但如果你肯定它存在于远程分支上,那么就有办法将其恢复:
git checkout HEAD -- [file]
这会重置文件的版本以及索引中的状态。
因此,您对文件进行了一些更改,但希望在提交之前将它们应用于其他分支或提交。为此你可以使用[git stash][1]
。正如文档所说:
如果要记录工作目录和索引的当前状态,但想要返回到干净的工作目录,请使用git stash。
在你的情况下,这意味着:
git add [your-files-or-parameter]
git stash
git checkout [feature-branch]
git stash apply
现在,您的更改将应用于功能分支状态之上。
请注意,git stash apply
将隐藏记录留在隐藏索引中,这意味着在您应用它之后,它仍然存在于那里。您可以使用git stash pop
来应用和删除存储,但我发现,如果出现问题,您可以重置并重做切换而不会丢失更改。