我的代码出现问题所以我使用此命令回滚到最后一次提交:
git reset --hard <7-digit-hash>
现在,当我发出命令“git branch”时,我只看到我当前的分支,而不是我的主分支和我拥有的另一个分支。他们发生了什么?有没有办法改变一些事情,以便我像以前一样继续看到我的所有分支?我的代码问题随着我已经恢复的这个分支消失了所以我想保留它,提交它,并将它推回到我的遥控器。这里发生了什么?我该怎么做这两件事? git分支文档并没有真正解释发生了什么。
答案 0 :(得分:2)
首先,检查git status
和git branch -avv
的输出:这可以让您在当前状态下获得更多可见性。
如果git repo中缺少任何内容(提交,分支,标记),请同时检查 git reflog
:您会将它们带回那里。
如果您检查了当前分支,其HEAD已正确重置为您提到的SHA1,因此这部分没问题。
答案 1 :(得分:2)
git reset
仅影响当前分支。即便如此,它只会移动分支。它不会删除它。它也不会删除任何其他分支。
不知何故,您使用其他命令删除了master
的本地副本。完成git co master
后,您创建了一个名为master
的新本地分支,该分支与origin/master
位于同一位置。要了解origin/
下的分支,您需要了解有关所谓“远程跟踪分支”的更多信息。这些是远程存储库中分支的本地副本。请注意,它们是本地副本。执行与远程交互的命令时会更新它们,例如git push
,git pull
或git fetch
。
如果您在删除本地git push
分支之前执行了master
,则origin/master
与master
处于同一提交状态。您可以使用git log --all --oneline --decorate
查看每个分支的位置。这将帮助您了解master
是否返回正确的提交。由于dev
已经超过原始master
,因此它将包含所有提交。如果您想移动master
,可以使用git checkout master
和git reset --hard <SHA1>
来执行此操作。