你可以使用以下命令将本地修订强制到远程repogit push -f
(例如,git push -f origin master),离开和将强制推送所有已设置了--set-upstream的本地分支。
请注意,如果其他人共享此存储库,则其修订历史将与新存储库发生冲突。并且如果它们在变更点之后有任何本地提交,它们将失效。
假设我克隆了repo,并添加了一些提交:D----E topic
/
A----B----C development
但是后来,development分支被一个rebase命中,这将导致我在运行git pull时收到一个错误:Unpacking objects: 100% (3/3), done.
From
* branch development -> FETCH_HEAD
Auto-merging
CONFLICT (content): Merge conflict in
Automatic merge failed; fix conflicts and then commit the result.
这里我可以修复冲突和commit,但是这将使我拥有一个非常丑陋的提交历史:C----D----E----F topic
/ /
A----B--------------C' development
使用git pull --force可能看起来很漂亮,但要小心,因为那样会使您陷入搁浅的提交状态:D----E topic
A----B----C' development
所以最好的选择是做一个git pull --rebase ,这需要解决每个步骤之前的冲突,而不是提交git rebase --continue ,最后,提交历史记录看起来会更好:D'---E' topic
/
A----B----C' development