为什么我必须在更改提交消息后强制推送?
我阅读了关于如何修改提交消息的内容。 接受的答案是:
如果你已经将你的提交推送到你的远程分支,那么你需要用git git push <remote> <branch> --force
强制推送提交。
这是我的理解(也来自公认的答案), git push --force
将用本地覆盖远程分支上的所有数据。
为什么在更改提交消息后强制推送是必要的? 如果我修改提交消息并尝试在不使用-f
或--force
情况下进行推送,会发生什么情况?
通过修改提交,你正在改变它们的SHA1,这意味着本地和远程历史不再一样。
如果你想用你的(修正版)本地文件替换远程历史记录,你需要强制推送。
如果你不这样做,Git会拒绝推送,并要求你拉(在这种情况下这没有帮助,因为你会合并相同的内容但提交不同的提交消息)
推动力可能是危险的,因为它迫使其他合作者将他们自己的本地历史重置为新的(强制推送的)历史。
正如所评论的,-- --force-with-lease
更安全(如果您正在更改的远程分支本身在上次拉动后发生了变化,意味着其他人正在积极使用并推回,那么强制推送被拒绝)。
把它与明智的拉动政策结合起来(你总是要改变你还没有推动的东西),并且推动力量变得不那么需要。
这是我的理解(也来自公认的答案),git push --force将用本地覆盖远程分支上的所有数据。
通过修改提交,您已经覆盖了您的git历史记录(通过更改提交的SHA1)。 Amend
为只要细如您尚未发布的更改,但一旦你做,你真的不应该与周围的历史碴,因为如果有人已经得到了修改,然后当他们再次尝试拉,它可能会失败。 而不是修改提交,您应该对这些更改进行新的提交。
如果我修改提交消息并尝试在不使用-f或--force的情况下进行推送,会发生什么情况?
Git会拒绝更新远程分支与您的分支(修改公共提交),因为您的分支的头部提交不是您正在推送的分支的当前头提交的直接后代。
如果情况并非如此,那么两个同时推送到同一个存储库的人不会知道同时发布了一个新的提交,并且最后推送的任何人都将失去之前推送者的工作,而没有他们意识到这一点。
为什么在更改提交消息后强制推送是必要的?
正如我上面提到的,git不允许推送到远程分支。 你可以阅读这个问题。 它有很多可能的解决方法来解决这个问题。
链接地址: http://www.djcxy.com/p/137.html上一篇: Why must I force push after changing a commit message?
下一篇: How to POST JSON data with Curl from Terminal/Commandline to Test Spring REST?