V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
sorra
V2EX  ›  git

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

  •  
  •   sorra · 2017-01-18 16:09:05 +08:00 · 2744 次点击
    这是一个创建于 2885 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用的是 Gitlab 。

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

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

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

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

    7 条回复    2017-01-19 03:54:39 +08:00
    sorra
        1
    sorra  
    OP
       2017-01-18 16:12:35 +08:00
    我发现上游的 merge commits 在我这里消失了(变成扁平的了),难道是 rebase 的时候弄掉了?所以不应该用 rebase ?
    besto
        2
    besto  
       2017-01-18 16:23:24 +08:00
    冲突是和你当前的 branch 有冲突。你当前指向的是 master ?还是自己改过的 branch ?
    另外用 pull --rebase 比较好。
    sorra
        3
    sorra  
    OP
       2017-01-18 16:26:03 +08:00
    @besto 是 master ,没动过的。我改用 git pull ups master 成功了,确实 pull 就好了。我之前为什么要 fetch+rebase 呢?
    kinghui
        4
    kinghui  
       2017-01-18 16:52:35 +08:00
    有可能上游强推过(git push -f)
    julyclyde
        5
    julyclyde  
       2017-01-18 17:33:27 +08:00
    你可以对比一下 log ,估计是 push -f 过
    SpicyCat
        6
    SpicyCat  
       2017-01-18 17:35:13 +08:00
    如果本地没有修改,那就是人家强推过。
    git reset --hard ups/master 就好
    franklinyu
        7
    franklinyu  
       2017-01-19 03:54:39 +08:00
    所以大多數 Git 教程都有說「強推需謹慎」,就是避免這種讓人困惑的情況……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2767 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:28 · PVG 21:28 · LAX 05:28 · JFK 08:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.