2011-08-01 40 views
35

有时候,尤其是,当我是唯一一个在远程存储库上工作的人时,我喜欢用git rebase -igit push origin master -f来重写历史记录。git pull类似于/与git push -f相反?

如何在没有合并的情况下强制执行git pull origin master?我用-f选项尝试过,但那不起作用。我只想重写我的本地git repo的历史记录以匹配远程(来源)的历史记录。

+0

@马特年龄不是(总是)相关决定的重复,并为链接的问题有更多的upvotes,和更详细的答案,这是一个很好的候选人。 –

+0

@MarkRotteveel我不知道,我认为把事情作为一个重复的东西进行追溯是不合逻辑的。 – Matt

+0

@Matt这是指导:http://meta.stackexchange.com/questions/147643/should-i-vote-to-close-a-duplicate-question-even-though-its-much-newer-and- ha/147651#147651 –

回答

47
git fetch 
git reset --hard origin/master 
+4

当然'git fetch'后。 – whitequark

+0

@whitequark谢谢!添加回答。 – ma11hew28

+4

注意,这只适用于干净的分支。本地工作副本中的任何更改或新提交都将丢失。我已经使用'rebase'添加了一个答案。 –

16

由于这是几年前,answer by MattDiPasquale将销毁任何本地更改或提交。

如果你有本地修改或承诺,但需要改写历史,运行:

git fetch origin 
git rebase origin/master 
+7

如果你需要保留的是你目前的非分离工作(不是本地提交),只需输入'git stash && git fetch origin && git reset --hard origin/master && git stash pop' – novalore