使用git commit --amend --no-edit后推送被拒绝的问题求助
Git Push Rejected After Using
git commit --amend --no-edit (As the Only Developer) 嘿,这问题我太熟了!咱们一步步来拆解原因和解决办法:
为什么推送会被拒绝?
当你用git commit --amend --no-edit的时候,你其实替换了本地仓库里最新的那个提交——原来的提交会被一个新的、包含你修改内容的提交取代,这个新提交的哈希值和原来的完全不一样。
而远程仓库(origin)里还存着你之前那个旧的提交记录,Git看到本地和远程的提交历史不匹配,就会拒绝推送,这是它的安全机制,防止你不小心覆盖掉别人的修改(哪怕你是唯一开发者,它也会默认触发这个保护)。
怎么解决?
因为你是这个仓库的唯一开发者,不用担心覆盖别人的工作,所以可以用安全的强制推送来让远程仓库同步你的修改:
- 执行这个命令:
git push --force-with-lease origin master
为什么用--force-with-lease而不是直接--force?因为它会先检查远程仓库有没有你不知道的新提交(虽然你是唯一开发者,但万一有意外情况呢?比如你在别的机器上推过?),如果没有才会强制推送,比纯--force更安全。
要是你百分百确定远程没有任何新提交,直接用git push --force origin master也可以,但还是推荐前者。
小提醒
以后用commit --amend的时候要记住:只要修改了已经推送到远程的提交,就需要用强制推送才能同步,因为你改变了提交历史。如果是还没推过的提交,amend之后直接正常推送就行啦。
内容的提问来源于stack exchange,提问作者Emaborsa
相关产品推荐
相关产品推荐

