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

Git 从远程拉取后发现需要自动合并!如何取消自动合并

  •  
  •   lepig · 222 天前 · 4547 次点击
    这是一个创建于 222 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题

    多人开发,每天早上拉一次新代码,然后进行任务开发。但是如果在我 push 之前已经有人 push 了,那么我就要先合并他的代码。 这个时候我执行git pull会出现下面的提示。

    git pull

    我的命令行是 windows 下面的zsh环境

    期望

    因为我大部分时间都是在命令行执行rebase操作,然后在执行git pull,这样就能最大化的保持 commit 记录是一条直线。但是有时候不小心就执行了pull后就会出现这个提示框。 不管我输入:q还是:q!命令行都会自动合并。产生了一次合并提交。

    我的期望是在这个交互窗口如何取消这次自动合并,我手动执行 rebase 操作。

    谢谢大家

    第 1 条附言  ·  222 天前

    感谢楼下大佬们的方法。

    配置一下就可以一劳永逸了

    git config --global pull.rebase true
    

    虽然删commit message可以,但是更倾向于全局配置。感谢大伙们的热心回复。

        1
    qing0304   222 天前
    建分支?
        2
    AlphaTr   222 天前
    git fetch
        3
    leo108   222 天前   ♥ 3
    git config --global pull.rebase true

    然后之后所有的 pull 操作都会自动 rebase
        4
    AlphaTr   222 天前
    或者默认 git pull 加上 --ff-only 这个参数,只进行 fast-forward 合并
        5
    xqin   222 天前
    git config --global pull.rebase true

    配置一下 git 的默认行为, 改变 pull 之后的 merge 为 rebase, 这样当你执行 git pull 的时候, 其实是执行的 git fetch && git rebase origin/xxx

    google 关键字`git config pull rebase`
        6
    liujan   222 天前   ♥ 2
    用 git pull --rebase
        7
    terence4444   222 天前 via iPad
    git fetch
    git rebase
        8
    lepig   222 天前
    @AlphaTr fetch 貌似可以。 但是还需要手动。 可能需要适应下
        9
    jaysun   222 天前   ♥ 1
    你截的图就说明了终止提交的方法,一个空的消息,终止这次提交
        10
    raysonx   222 天前 via Android
    我都是先 git pull,出现合并的话再执行 git reset --hard origin/master
        11
    leo108   222 天前
    @raysonx 然后你 自己的代码就『丢』了(除非你会用 reflog )
        12
    graysheeep   222 天前
    git pull --rebase
        13
    PazuLee   222 天前
    #7 正解
        14
    lepig   222 天前
    @leo108
    @xqin
    感谢 2 位老铁。 确实可以了
        15
    Lax   222 天前
    9 楼正解,删掉这个文件里的内容即可。
        16
    lepig   222 天前
    @jaysun
    @Lax

    Thx
        17
    hiveex   221 天前
    idea 有个选项是 rebase
        18
    anyforever   221 天前
    为什么不在自己的独立分支上开发?
        19
    raysonx   221 天前 via Android
    @leo108 我自己的代码从来不放在 master 分支,如果临时需要 rebase 通常就是先 git fetch origin,然后 git rebase origin/master。
    如果我切到 master 肯定只是为了 pull,然后开新分支做开发。
        20
    xiaoxinxiaobai   221 天前 via Android
    不太懂这种需求的意义。。。
        21
    rizon   221 天前
    我没弄错的话,git pull 之后 产生了 merge 的 commit 记录后,还是可以继续“变基”消除多余的 merge 的

    “拉”和“变基”的顺序是没关系的吧??
        22
    rizon   221 天前
    就是既可以执行 `git pull --rebase` 也可以执行 `git pull ` merge 之后再`git rebase`

    两种都可以的。
    idea 默认没有`git pull --rebase` ,不知道为啥。。
    所以每次都是先 commit 代码,然后 执行 `update project`然后发现产生了 merge,然后再手动 `git rebase`。

    如果不这样,那就只能手动去点菜单 vcs -> git -> rebase 这样操作感觉太麻烦了。

    ----

    因此对于 idea 中如何去做这件事,有大佬知道什么更优雅的方式吗? 除了`git config pull.rebase true`这种方案之外的
        23
    FrankFang128   221 天前
    rebase 跟自动合并有多大区别? 代码最终都是一样的,该冲突还是冲突。
        24
    widdy   221 天前
    @rizon 设置 Git 有个 update method , 可以改成 rebase,可以试试。
        25
    shenyangno1   221 天前 via iPhone
    pull 出 merge 日志之后再 rebase 效果一样的吧,有代码冲突除外
        26
    lepig   221 天前
    @anyforever 正常来说应该是在自己分支上弄。但是为了懒吧,需要经常和前端联调代码。每次都要切过去在合,在提交,然后在切自己分支挺麻烦的。
        27
    lepig   221 天前
    @shenyangno1 merge 以后 在我这里就会自动产生一次 commit 了。 不想要这个 commit
        28
    rizon   221 天前   ♥ 1
    @lepig #27 前面我都说了,merge 后执行 rebase 一样的。。。。都会清理时间线(消除 merge 的 commit )的。。
        29
    rizon   221 天前
    @widdy #24 嗯 刚看了下,是这样了,都忘了这个选项了,可选采用 rebase 或 merge 来 update
        30
    lepig   221 天前
    确实是。 刚试了一下,执行了 git rebase 后,自动消除了 merge 的日志
        31
    lepig   221 天前
    @rizon 确实是。谢谢了。我总以为产生的 merge 的 commit 会被保留在历史时间线中。哎,人丑真的要多读书。
        32
    lepig   221 天前
    @shenyangno1 确实是。 刚试了一下,执行了 git rebase 后,自动消除了 merge 的日志
        33
    ydirel   221 天前   ♥ 1
    git fetch && git rebase,,,有冲突手动解决冲突,,,git rebase --continue
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4386 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 03:16 · PVG 11:16 · LAX 20:16 · JFK 23:16
    ♥ Do have faith in what you're doing.