硬重置后Git分支在哪里?

时间:2017-01-19 05:38:35

标签: git

我的代码出现问题所以我使用此命令回滚到最后一次提交:

git reset --hard <7-digit-hash>

现在,当我发出命令“git branch”时,我只看到我当前的分支,而不是我的主分支和我拥有的另一个分支。他们发生了什么?有没有办法改变一些事情,以便我像以前一样继续看到我的所有分支?我的代码问题随着我已经恢复的这个分支消失了所以我想保留它,提交它,并将它推回到我的遥控器。这里发生了什么?我该怎么做这两件事? git分支文档并没有真正解释发生了什么。

2 个答案:

答案 0 :(得分:2)

首先,检查git statusgit branch -avv的输出:这可以让您在当前状态下获得更多可见性。

如果git repo中缺少任何内容(提交,分支,标记),请同时检查 git reflog :您会将它们带回那里。

如果您检查了当前分支,其HEAD已正确重置为您提到的SHA1,因此这部分没问题。

答案 1 :(得分:2)

git reset仅影响当前分支。即便如此,它只会移动分支。它不会删除它。它也不会删除任何其他分支。

不知何故,您使用其他命令删除了master的本地副本。完成git co master后,您创建了一个名为master的新本地分支,该分支与origin/master位于同一位置。要了解origin/下的分支,您需要了解有关所谓“远程跟踪分支”的更多信息。这些是远程存储库中分支的本地副本。请注意,它们是本地副本。执行与远程交互的命令时会更新它们,例如git pushgit pullgit fetch

如果您在删除本地git push分支之前执行了master,则origin/mastermaster处于同一提交状态。您可以使用git log --all --oneline --decorate查看每个分支的位置。这将帮助您了解master是否返回正确的提交。由于dev已经超过原始master,因此它将包含所有提交。如果您想移动master,可以使用git checkout mastergit reset --hard <SHA1>来执行此操作。