撤消 git 签出 --
Undo git checkout --
我首先从功能分支签出一个分支。
git checkout -b MyBranch
对该分支进行了一些更改。添加了所有文件。然后我搬到了功能分支。我所有的分阶段更改都存在于功能分支中。然后我做了:
git checkout -- <Staged File>
然后我搬到了我的分店。我在 MyBranch 中看不到我的暂存文件。
有什么方法可以恢复暂存文件吗?
很遗憾,如果我对你的情况的理解正确的话,你对文件的未提交更改丢失了。
命令 git checkout -- [file]
还原 对文件所做的任何未提交的更改。它将其版本更改为当前分支上最后一次提交的版本。
你说你看不到文件了。除非该文件不存在于您分支的最新提交中,否则这很奇怪(您应该阅读 this answer)。但如果您确定它存在于远程分支上,则有一种方法可以取回它:
git checkout HEAD -- [file]
这会重置文件的版本及其在索引中的状态。
防止将来发生这种情况
所以您对文件进行了一些更改,但想将它们应用到不同的分支或在提交之前提交。为此,您可以使用 [git stash][1]
。正如文档所说:
Use git stash when you want to record the current state of the working directory and the index, but want to go back to a clean working directory.
在您的情况下,这意味着:
- 更改文件
- 添加文件:
git add [your-files-or-parameter]
- 存储文件:
git stash
- 切换到功能分支:
git checkout [feature-branch]
- 应用您隐藏的更改:
git stash apply
现在您的更改已应用到功能分支状态之上。
请注意 git stash apply
留下 存储索引中的存储记录,这意味着在您应用它之后,它仍然存储在那里。您可以使用 git stash pop
来应用和删除存储,但我发现如果出现问题,您可以重置和重做切换而不会丢失更改,这很有用。
我首先从功能分支签出一个分支。
git checkout -b MyBranch
对该分支进行了一些更改。添加了所有文件。然后我搬到了功能分支。我所有的分阶段更改都存在于功能分支中。然后我做了:
git checkout -- <Staged File>
然后我搬到了我的分店。我在 MyBranch 中看不到我的暂存文件。
有什么方法可以恢复暂存文件吗?
很遗憾,如果我对你的情况的理解正确的话,你对文件的未提交更改丢失了。
命令 git checkout -- [file]
还原 对文件所做的任何未提交的更改。它将其版本更改为当前分支上最后一次提交的版本。
你说你看不到文件了。除非该文件不存在于您分支的最新提交中,否则这很奇怪(您应该阅读 this answer)。但如果您确定它存在于远程分支上,则有一种方法可以取回它:
git checkout HEAD -- [file]
这会重置文件的版本及其在索引中的状态。
防止将来发生这种情况
所以您对文件进行了一些更改,但想将它们应用到不同的分支或在提交之前提交。为此,您可以使用 [git stash][1]
。正如文档所说:
Use git stash when you want to record the current state of the working directory and the index, but want to go back to a clean working directory.
在您的情况下,这意味着:
- 更改文件
- 添加文件:
git add [your-files-or-parameter]
- 存储文件:
git stash
- 切换到功能分支:
git checkout [feature-branch]
- 应用您隐藏的更改:
git stash apply
现在您的更改已应用到功能分支状态之上。
请注意 git stash apply
留下 存储索引中的存储记录,这意味着在您应用它之后,它仍然存储在那里。您可以使用 git stash pop
来应用和删除存储,但我发现如果出现问题,您可以重置和重做切换而不会丢失更改,这很有用。