V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
felixin
V2EX  ›  问与答

github 上的多次 pr 怎么才能始终只包含 1 个 commit?

  •  
  •   felixin · 2021-01-25 15:51:29 +08:00 · 2214 次点击
    这是一个创建于 1397 天前的主题,其中的信息可能已经有所发展或是发生改变。

    第一次 fork 后,提交一个 pr a 包含一个 commit a,被上游合并了。

    接着在本地 pull upstream,这时候会有个 merged from ... 的 commit 在我的 fork 上。

    接着我在本地做第二次修改,又产生了一个新的 commit b,开一个新的 pr b,但是这个 pr 和上游的分叉点还是在 commit a 之前,因此这个 pr 会包含 commit a 和 b 。

    请问该如何让 pr b 只包含 commit b ?在不重新 fork 的情况下。

    7 条回复    2021-01-25 19:33:30 +08:00
    xiri
        1
    xiri  
       2021-01-25 16:21:42 +08:00
    pull 的时候用 rebase 合并就不会有那个 merged from 的 commit 了
    channingcheng
        2
    channingcheng  
       2021-01-25 17:04:07 +08:00
    @xiri
    jaween
        3
    jaween  
       2021-01-25 17:35:42 +08:00
    rebase,刚在掘金看到的
    msg7086
        4
    msg7086  
       2021-01-25 17:46:38 +08:00 via Android
    pull 的时候默认做 fetch+merge 。而这里 merge 是错误操作。
    zdt3476
        5
    zdt3476  
       2021-01-25 18:27:52 +08:00 via iPhone
    git pull —rebase
    catror
        6
    catror  
       2021-01-25 18:51:59 +08:00 via Android
    master 分支和上游保持同步,修改代码建新的分支
    mxalbert1996
        7
    mxalbert1996  
       2021-01-25 19:33:30 +08:00 via Android
    如果上游没对你的 PR 做修改,那么你 pull upstream 的时候会直接 fast forward,不会有额外的 commit 。如果上游是修改以后合并,那么你应该用 rebase 。另外建议设置 pull 时仅限 ff ( git config pull.ff only ),最新版的 git 已经会在你没有指明 pull 模式的时候显示警告。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   972 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:59 · PVG 03:59 · LAX 11:59 · JFK 14:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.