你需要创建一个分支来检查特定的git修订吗?

Nic*_*ick 21 git

我想做的一件好事是将我的工作副本还原到特定版本,进行一些测试,然后将其恢复到我当前主人的头部.在过去,我天真地做了一个"git checkout hash"只是为了失去理智.我已经知道我可以创建一个分支并检查出来,切换回来并删除分支,但感觉就像进行简单检查的步骤太多了.在SVN的说法中,有没有办法快速恢复然后快速回到git中的trunk端?

编辑:我认为我的困惑源于这样一个事实,当我签出一个哈希然后git日志时,我没有看到签出哈希后发生的变化(这是合理的,当你想到它).但接受的答案是正确的; "git checkout branch"将恢复到前一个分支的头部.

bdo*_*lan 28

假设你已经在一个分支上(你应该总是想要保留更改),你可以这样做

git checkout <revision to check out>
Run Code Online (Sandbox Code Playgroud)

这将使您脱离正在进行的主题分支(无分支),其中工作副本直接引用提交ID而不是正常的分支名称.

然后回去,简单地说:

git checkout <old branch name>
Run Code Online (Sandbox Code Playgroud)

一个有用的思考方式是:git checkout永远不会改变分支; 它只是改变你的工作副本当前正在查看的内容(即HEAD),它可能是一个分支(在这种情况下提交将更新分支)或随机提交哈希.

因此,只要您想要保留的更改位于分支上,您就不必担心git checkout会丢失它们.


Phi*_*ley 7

您可以在要签出的特定提交中创建分支(从手册页)

git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
Run Code Online (Sandbox Code Playgroud)

所以填写<start-point>你希望你的新分支<branchname>开始的SHA1 ,你不会让你的'头'脱离扩展分支.

你可能还想做其他事情来保持你工作的文件处于你想要的状态....