2017-08-17 97 views
1

我把我的更改远程分支,然后意识到,我是用错了GitHub的用户名后的最后git的承诺,所以我试图取消提交,但不成功。我读过,我可以只使用git reset HEAD^ 如果我没有把我的更改推送到远程,但它没有工作,因为已提交到远程回购。如何删除推到远程然后从远程主分支拉动当地

我用git reset @~1这让我的本地提交历史回到最前面的一个后第一个被擦除整个提交历史。我的目标是只提交最后一个,所以我git pull origin mastergit fetch --all将远程回购获得到本地,但它没有更新本地提交历史。

所以,我应该怎么办: 1)来更新我的本地提交历史匹配了远程历史? 2)然后提交我的最新提交远程回购?

最后,它会导致一个问题,如果其他用户删除提交历史(尽管都属于我反正)?

回答

1

由于您已经推动了更改,因此您不应该改变其历史记录。但是,如果你真的想,现在你有你的本地仓库恢复到状态你愿意,你可以运行:

git push -f origin <branch name that you want to push> 

-f选项强制更改到远程仓库。

正确的方式做到这一点是要恢复的承诺,这将创建一个新的提交是逆提交你的回复,从而有效地擦除你不改变历史所做的更改。

  • 第一,得到的sha提交要撤消(它甚至不需要成为最后提交)
  • 运行命令在本地`git的恢复
  • 推的变化通常git push origin <branch you want to push>

注意,没有什么力量推动在这里。没有重写历史。

至于用户名的区别,它使用什么用户名或电子邮件几乎没有什么不同。在你的git配置中,因为它们是信息性的。您可以在git配置中将您的姓名和电子邮件地址更改为您喜欢的任何内容,并将显示在git日志中。正因为如此,您可以选择使用GPG签名来确认提交人的真实身份。你可以看到一个description of signing here