撤消git签出--

撤消git签出--,git,git-checkout,file-recovery,Git,Git Checkout,File Recovery,我首先从功能分支签出一个分支 git checkout -b MyBranch 在那个分支中做了一些更改。添加了所有文件。然后我转到功能分支。我的所有阶段性更改都存在于功能分支中。然后我做了: git checkout -- <Staged File> 然后我搬到了我的分店。我在MyBranch中没有看到我的暂存文件 有什么方法可以恢复我的暂存文件吗?很遗憾,如果我正确理解您的情况,您未提交的文件更改将丢失 git checkout-[file]命令还原对文件所做的任何未提交的更

我首先从功能分支签出一个分支

git checkout -b MyBranch
在那个分支中做了一些更改。添加了所有文件。然后我转到功能分支。我的所有阶段性更改都存在于功能分支中。然后我做了:

git checkout -- <Staged File>
然后我搬到了我的分店。我在MyBranch中没有看到我的暂存文件


有什么方法可以恢复我的暂存文件吗?

很遗憾,如果我正确理解您的情况,您未提交的文件更改将丢失

git checkout-[file]命令还原对文件所做的任何未提交的更改。它将其版本更改为当前分支上上次提交的版本

你说你再也看不到这个文件了。除非该文件在分支的最新提交中不存在,否则这很奇怪,您应该阅读。但如果您确定它存在于远程分支上,有一种方法可以将其取回:

git checkout HEAD -- [file]
这将重置文件的版本及其在索引中的状态

防止将来发生这种情况 因此,您对文件进行了一些更改,但希望在进行提交之前将其应用于其他分支或提交。为此,您可以使用[git stash][1]。正如文件所说:

当您想记录工作目录和索引的当前状态,但又想返回到干净的工作目录时,请使用git stash

在你的情况下,这意味着:

对文件进行更改 添加文件:git Add[您的文件或参数] 隐藏文件:git Stash 切换到功能分支:git签出[功能分支] 应用隐藏的更改:git stash Apply 现在,您的更改将应用于要素分支状态的顶部


请注意,git stash apply将隐藏记录保留在隐藏索引中,这意味着在应用它之后,它仍然隐藏在那里。您可以使用git stash pop应用和删除隐藏,但我发现,如果出现问题,您可以在不丢失更改的情况下重置和重做切换,这很有用。

git checkout-应该只删除工作目录中的更改,而不是阶段中的更改。你确定该文件正在取消归档吗?在签出这些文件之前是否进行了提交?@Bas Peeters不,我没有提交任何文件。我在MyBranch中运行了git插件。然后我切换到功能。它还显示了我在MyBranch中添加的那些文件。所以,我想删除那些应该添加到MyBranch中的文件。所以,我做了git结帐-。当我从功能移回MyBranch时,我正在寻找我添加的文件,但我不知道确切原因,我丢失了这些文件。@Tim Biegeleisen我很确定,当我进行git签出时-文件与远程同步,我丢失了更改。谢谢@Bas Peeters