这个git命令是否将github存储库恢复到过去的某个点?

Tim*_*Tim 1 git github

Person A将他的文件推送到github存储库,然后B人将他的文件推送到同一个github存储库.

不喜欢B的提交,并将github存储库恢复到B推送前的状态.声称使用以下命令来实现这一目标

git push origin master -f
Run Code Online (Sandbox Code Playgroud)

我可能会误解命令的某些部分,因为我不熟悉这些东西.

自推出以来,A在本地存储库中没有任何改变.

我的问题是

  • 为什么我不能在github存储库的历史中找到B的提交?
  • 为什么A只有一次提交,就像B推出之前一样?
  • A使用的命令是做什么的?将所有东西还原到B推动前的点?

谢谢.

Cri*_*scu 5

这可能是发生的事情:

  • 最初,在github存储库中,master分支指向commit 1.
  • B推动他的改变.这包括两件事:
    • 将其提交(提交2)发送到远程存储库
    • 告诉远程服务器分支现在不再指向提交1,而是提交2.
  • A使用git push origin master -f,告诉远程存储库将分支引用再次移回提交1(或者将其当前分支指向的任何提交).

现在,回答你的问题:

为什么我不能在github存储库的历史中找到B的提交?为什么A只有一次提交,就像B推出之前一样?

B的提交仍然存在,但它不再被任何分支引用.当你git logmaster上时,你只能看到这个分支所指向的提交及其所有祖先.提交1或与提交1无关的任何其他提交将不会显示.

我发现列出孤立提交的唯一方法是git reflog在最近签出该提交的计算机上执行.

A使用的命令是做什么的?将所有东西还原到B推动前的点?

见上面的第三个子弹.