fork 的开源项目,我没改过 master,同步代码时为什么会有冲突?

2017-01-18 16:09:05 +08:00
 sorra

用的是 Gitlab 。

在我的本地, origin 指向我的 repo , ups 指向上游 repo

我想把 master 更新到上游的最新版本,我的行动:

  1. git fetch ups
  2. git rebase ups/master
  3. git push 结果第 2 步出现了很多 conflict 。

请问,我没改过代码,为什么还要让我解决冲突呢?有没有更好的同步上游改动的方法? 谢谢!

2640 次点击
所在节点    git
7 条回复
sorra
2017-01-18 16:12:35 +08:00
我发现上游的 merge commits 在我这里消失了(变成扁平的了),难道是 rebase 的时候弄掉了?所以不应该用 rebase ?
besto
2017-01-18 16:23:24 +08:00
冲突是和你当前的 branch 有冲突。你当前指向的是 master ?还是自己改过的 branch ?
另外用 pull --rebase 比较好。
sorra
2017-01-18 16:26:03 +08:00
@besto 是 master ,没动过的。我改用 git pull ups master 成功了,确实 pull 就好了。我之前为什么要 fetch+rebase 呢?
kinghui
2017-01-18 16:52:35 +08:00
有可能上游强推过(git push -f)
julyclyde
2017-01-18 17:33:27 +08:00
你可以对比一下 log ,估计是 push -f 过
SpicyCat
2017-01-18 17:35:13 +08:00
如果本地没有修改,那就是人家强推过。
git reset --hard ups/master 就好
franklinyu
2017-01-19 03:54:39 +08:00
所以大多數 Git 教程都有說「強推需謹慎」,就是避免這種讓人困惑的情況……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/335421

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX