我将更改推送到远程分支,然后意识到我使用了错误的GitHub用户名,因此我尝试撤消提交,但没有成功。我读到我可以使用git reset HEAD^
如果我没有将我的更改推送到远程,但它没有工作,因为已经对远程仓库进行了提交。
我使用git reset @~1
使我的本地提交历史记录回到第一个,并在第一个之后删除整个提交历史记录。我的目标是只提交最后一个,所以我git pull origin master
和git fetch --all
将远程仓库放入我的本地,但它没有更新本地的提交历史记录。
那我应该怎么做: 1)更新与远程历史记录匹配的本地提交历史记录? 2)然后在远程仓库中提交我的最新提交?
最后,如果其他用户删除了提交历史记录(即使两者都属于我),是否会导致问题?
答案 0 :(得分:1)
由于您已经推动了更改,因此您不应该真正改变它的历史。但是,如果您真的想要,现在您已将本地存储库重置为您想要的状态,您可以运行:
git push -f origin <branch name that you want to push>
-f
选项会强制更改远程存储库。
执行此操作的正确方法是还原提交,这将创建一个新提交,它与您要还原的提交相反,有效地删除您在不更改历史记录的情况下所做的更改。
sha
(它甚至不需要是最后一次提交)git push origin <branch you want to push>
注意,这里没有推力。没有重写历史。
至于用户名的差异,您使用的用户名或电子邮件几乎没有区别。在你的git配置中,因为它们是信息性的。您可以在git配置中将您的姓名和电子邮件更改为您喜欢的任何内容,它将显示在git日志中。因此,您可以选择使用GPG签名提交来真正验证提交该提交的人确实是他们所说的人。您可以看到description of signing here。
答案 1 :(得分:0)
要在本地删除最后一次提交,请使用:
git reset --hard id_penultimate_commit
要远程删除相同的提交,请使用:
git push --force