有时候,尤其是,当我是唯一一个在远程存储库上工作的人时,我喜欢用git rebase -i
和git push origin master -f
来重写历史记录。git pull类似于/与git push -f相反?
如何在没有合并的情况下强制执行git pull origin master
?我用-f
选项尝试过,但那不起作用。我只想重写我的本地git repo的历史记录以匹配远程(来源)的历史记录。
有时候,尤其是,当我是唯一一个在远程存储库上工作的人时,我喜欢用git rebase -i
和git push origin master -f
来重写历史记录。git pull类似于/与git push -f相反?
如何在没有合并的情况下强制执行git pull origin master
?我用-f
选项尝试过,但那不起作用。我只想重写我的本地git repo的历史记录以匹配远程(来源)的历史记录。
git fetch
git reset --hard origin/master
当然'git fetch'后。 – whitequark
@whitequark谢谢!添加回答。 – ma11hew28
注意,这只适用于干净的分支。本地工作副本中的任何更改或新提交都将丢失。我已经使用'rebase'添加了一个答案。 –
由于这是几年前,answer by MattDiPasquale将销毁任何本地更改或提交。
如果你有本地修改或承诺,但需要改写历史,运行:
git fetch origin
git rebase origin/master
如果你需要保留的是你目前的非分离工作(不是本地提交),只需输入'git stash && git fetch origin && git reset --hard origin/master && git stash pop' – novalore
@马特年龄不是(总是)相关决定的重复,并为链接的问题有更多的upvotes,和更详细的答案,这是一个很好的候选人。 –
@MarkRotteveel我不知道,我认为把事情作为一个重复的东西进行追溯是不合逻辑的。 – Matt
@Matt这是指导:http://meta.stackexchange.com/questions/147643/should-i-vote-to-close-a-duplicate-question-even-though-its-much-newer-and- ha/147651#147651 –