【问题标题】:git pull analogous to / opposite of git push -f? [duplicate]git pull 与 git push -f 类似/相反? [复制]
【发布时间】:2011-10-17 10:03:45
【问题描述】:

有时,尤其是。当我是唯一一个在远程存储库上工作的人时,我喜欢用git rebase -igit push origin master -f 重写历史记录。

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

【问题讨论】:

  • @Matt Age 并不(总是)与决定是否重复相关,并且由于链接的问题有更多的赞成票和更详细的答案,因此它是一个很好的候选者。
  • @MarkRotteveel 我不知道,我认为回顾性地关闭某些东西是不合逻辑的。
  • @MarkRotteveel 谢谢,我会对此进行更深入的阅读,但只要看看 MOD 答案,我就知道我弄错了,这是将其标记为重复的正确操作,我已更正....并标记为欺骗

标签: git git-push git-pull git-fetch


【解决方案1】:
git fetch
git reset --hard origin/master

【讨论】:

  • 当然是在git fetch之后。
  • @whitequark 谢谢!添加到答案中。
  • 注意,这只适用于干净的分支。本地工作副本中的任何更改或新提交都将丢失。我已经使用rebase 添加了一个答案。
【解决方案2】:

考虑到它已有几年的历史,answer by MattDiPasquale 将破坏任何本地更改或提交。

如果您有本地更改或提交,但需要重写历史记录,请运行:

git fetch origin
git rebase origin/master

【讨论】:

  • 如果您只需要保留当前未暂存的工作(不是本地提交),只需输入 git stash && git fetch origin && git reset --hard origin/master && git stash pop
  • 如果旧的 origin/master 和您的本地 origin master 没有共同的根(例如,原始历史被重写更改所有提交的 SHA),这会起作用吗?
猜你喜欢
  • 2012-09-07
  • 2011-04-14
  • 1970-01-01
  • 2014-03-09
  • 1970-01-01
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多