如何在git revert之后返回git分支

时间:2012-01-26 06:28:47

标签: git

所以,由于我的代码存在根本问题,我最终不得不更改项目的整个目录树 - 或者我认为。所以我在重大改变之前做了一个提交,然后在做出我不需要的更改后意识到。所以我执行了

git checkout ##SHA##

我能够让整个项目以应有的方式运转,但现在我遇到了另一个问题。我不再在我工作的分支机构中签出。如何保留我现有的代码并重新回到分支机构工作?

git branch -a

说我在

* (no branch)

任何人都知道我能做什么而不仅仅是制作一个新分支并删除旧分支?

4 个答案:

答案 0 :(得分:6)

永远不要git checkout <hash>。它旨在临时检查提交(因此您看到的是无分支)。您想要做的是,在分支中git reset --hard <hash>(如果您在工作目录中需要更改,则删除--hard。)

要恢复:

git checkout the_branch
git reset --hard <hash>

请注意,上面的<hash>与尝试“还原”更改时git checkout使用的{{1}}相同。

答案 1 :(得分:2)

结帐回您的分支,然后合并您在无头分支上所做的更改:

git checkout my_branch
git merge ##SHA##

然后,您应该在最近的提交中拥有分支my_branch

答案 2 :(得分:1)

  1. 创建分支:git branch -b branch_for_new_code
  2. 添加并提交更改。
  3. 查看您想要返回的分行:git checkout branch_i_was_on
  4. 将新分支与旧分支合并:git merge branch_for_new_code
  5. 合并后删除新分支。
  6. 对于未来,请记住一个简单的经验法则:当你做一些你不确定的事情时,先做一个分支。最后,只有结帐分支名称,除非你真的知道你在做什么。

答案 3 :(得分:0)

如果您确定自己所在的地方,则可以:

git branch -D my_branch
git checkout -b my_branch

这会删除旧的分支指针,并创建一个指向当前HEAD的新指针。