felixin
V2EX  ›  问与答

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

  •  
  •   felixin · Jan 25, 2021 · 2807 views
    This topic created in 1974 days ago, the information mentioned may be changed or developed.

    第一次 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 replies    2021-01-25 19:33:30 +08:00
    imkuang
        1
    imkuang  
       Jan 25, 2021
    pull 的时候用 rebase 合并就不会有那个 merged from 的 commit 了
    channingcheng
        2
    channingcheng  
       Jan 25, 2021
    @xiri
    jaween
        3
    jaween  
       Jan 25, 2021
    rebase,刚在掘金看到的
    msg7086
        4
    msg7086  
       Jan 25, 2021 via Android
    pull 的时候默认做 fetch+merge 。而这里 merge 是错误操作。
    zdt3476
        5
    zdt3476  
       Jan 25, 2021 via iPhone
    git pull —rebase
    catror
        6
    catror  
       Jan 25, 2021 via Android
    master 分支和上游保持同步,修改代码建新的分支
    mxalbert1996
        7
    mxalbert1996  
       Jan 25, 2021 via Android
    如果上游没对你的 PR 做修改,那么你 pull upstream 的时候会直接 fast forward,不会有额外的 commit 。如果上游是修改以后合并,那么你应该用 rebase 。另外建议设置 pull 时仅限 ff ( git config pull.ff only ),最新版的 git 已经会在你没有指明 pull 模式的时候显示警告。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4175 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 00:08 · PVG 08:08 · LAX 17:08 · JFK 20:08
    ♥ Do have faith in what you're doing.