git pull相当于/相反于git push -f吗?

45
有时候,特别是当我是唯一一个在远程仓库工作的人时,我喜欢使用 git rebase -igit push origin master -f 重写历史记录。
如何用强制方式执行git pull origin master而不合并呢?我尝试了使用 -f 选项,但没有成功。我只是想重写本地 git 仓库的历史记录,以使其与远程(origin)相匹配。

@Matt 年龄并不总是决定重复的关键因素,由于链接问题有更多的赞同和更详细的答案,它是一个很好的候选者。 - Mark Rotteveel
@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 - Mark Rotteveel
@MarkRotteveel 谢谢,我会仔细阅读的。但是浏览 MOD 的回答,我发现我错了,这是正确的操作,将其标记为重复,并且我已经更正了...并标记为重复。 - Matt
也可能被视为 将本地代码库分支重置为与远程代码库 HEAD 相同 的重复问题。 - Peter Lamberg
2个回答

66
git fetch
git reset --hard origin/master

4
当然,在执行完git fetch之后。 - whitequark
5
注意,此方法仅适用于干净的分支。本地工作副本中的任何更改或新提交将被删除。我已添加使用“rebase”的答案。 - Jason McCreary

18
尊敬的用户,这篇文章已经有些年头了,MattDiPasquale的答案会破坏本地的任何更改或提交。
如果您有本地的更改或提交,但需要重写历史记录,请运行以下命令:
git fetch origin
git rebase origin/master

12
如果您只需要保存当前未提交的工作(不包括本地提交),只需输入git stash && git fetch origin && git reset --hard origin/master && git stash pop - novalore
如果旧的 origin/master 和你本地的 origin master 没有共同的根(例如,origin 的历史记录被重写,改变了所有提交的 SHA),那么这是否有效? - Dan M.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接