git
› Pro Git
› Atlassian Git Tutorial
› Pro Git 简体中文翻译
› GitX
sorra
V2EX  ›  git

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

  •  
  •   sorra · Jan 18, 2017 · 3417 views
    This topic created in 3578 days ago, the information mentioned may be changed or developed.

    用的是 Gitlab 。

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

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

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

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

    7 replies  •  2017-01-19 03:54:39 +08:00
    sorra
    sorra
    OP
    Jan 18, 2017
    1
    我发现上游的 merge commits 在我这里消失了(变成扁平的了),难道是 rebase 的时候弄掉了?所以不应该用 rebase ?
    besto
    besto
    Jan 18, 2017
    2
    冲突是和你当前的 branch 有冲突。你当前指向的是 master ?还是自己改过的 branch ?
    另外用 pull --rebase 比较好。
    sorra
    sorra
    OP
    Jan 18, 2017
    3
    @besto 是 master ,没动过的。我改用 git pull ups master 成功了,确实 pull 就好了。我之前为什么要 fetch+rebase 呢?
    kinghui
    kinghui
    Jan 18, 2017
    4
    有可能上游强推过(git push -f)
    julyclyde
    julyclyde
    Jan 18, 2017
    5
    你可以对比一下 log ,估计是 push -f 过
    SpicyCat
    SpicyCat
    Jan 18, 2017
    6
    如果本地没有修改,那就是人家强推过。
    git reset --hard ups/master 就好
    franklinyu
    franklinyu
    Jan 19, 2017
    7
    所以大多數 Git 教程都有說「強推需謹慎」,就是避免這種讓人困惑的情況……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1563 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 23:37 · PVG 07:37 · LAX 15:37 · JFK 18:37
    ♥ Do have faith in what you're doing.