git 我从尚未合并的主分支创建了一个PR,现在我想创建第二个PR,但不显示其中第一个PR的提交

oxcyiej7  于 2022-11-20  发布在  Git
关注(0)|答案(2)|浏览(233)

我从主分支发出了第一个Pull请求,该分支已被检查但尚未合并。现在我尝试通过创建新分支发出第二个Pull请求。但我面临的问题是,第二个Pull请求也显示了第一个Pull请求的提交。我不希望在此Pull请求中包含以前的提交
任何人都可以请建议一种方式,使我可以使这第二公关只有我为这个公关作出的承诺。

5vf7fwbs

5vf7fwbs1#

我建议在远程(!)master创建一个新的分支(因为你的本地master可能指向其他地方),然后从已有的分支中cherry-picking你想要的提交:

git checkout -b my-new-feature-branch remotes/upstream/master

git cherry-pick <sha1-of-a-commit>

对每一个你想挑选的提交重复最后一步。

laximzn5

laximzn52#

Git 中 的 * branch * 是 一 个 可以 自由 移动 的 标签 。 它 指向 一 个 提交 。 每个 提交 都 指向 其父 提交 。 当 你 创建 一 个 分支 并且 没有 指定 它 的 起始 点 时 , 它 将 指向 HEAD , 也 就是 你 当前 签 出 的 提交/分支 。
假设 在 处理 当前 分支 时 已经 有 了 提交 :当 你 创建 一 个 新 的 分支 时 , 这些 提交 也 可以 从 新 分支 * 到达 * 。 只要 它们 没有 被 合并 到 你 的 目标 分支 , 它们 就会 显示 为 " 待 合并 提交 " ( 在 GitHub PR 中 或 使用 gitk target..yourbranch ) 。
可视化 :

A-B-C           master, origin/master
     \
      D-E-F     old-branch
           \
            G   new-branch

中 的 每 一 个
你 可以 在 目标 分支 上 重新 创建 分支 和 它 的 变化 ( 可能 是 origin/master ) , 或者 你 可以 重新 建立 分支 的 基础 ( 这 将 重写 历史 , 在 这样 做 之前 , 请 确保 你 * 理解 * 了 其中 的 含义 ) :

git rebase --onto origin/master oldbranch newbranch

格式
重 定 基 后 的 提交 图 :

G'        new-branch
     /
A-B-C           master, origin/master
     \
      D-E-F     old-branch

格式
来自 new-branch ( G ) 的 旧 提交 仍然 存在 , 但是 不再 可以 通过 命名 的 引用 ( 分支 或 标签 ) 到达 。 G' 是 新 的 独立 提交 ( 可以 从 其 提交 id/哈希 中 看出 ) , 具有 与 旧 的 G 相同 ( 或 非常 相似 ) 的 补丁 ( 即 git diff "G'^" "G'"git diff G^ G 相同 ) 。
old-branchmaster 可 访问 的 任何 提交 都 不会 受到 rebase 操作 的 影响 。 ( 记住 :Git 提交 是 不可 变 的 , 永远 不会 改变 。 你 只能 让 它们 变成 * unreachable * 。

相关问题