我从主分支发出了第一个Pull请求,该分支已被检查但尚未合并。现在我尝试通过创建新分支发出第二个Pull请求。但我面临的问题是,第二个Pull请求也显示了第一个Pull请求的提交。我不希望在此Pull请求中包含以前的提交任何人都可以请建议一种方式,使我可以使这第二公关只有我为这个公关作出的承诺。
5vf7fwbs1#
我建议在远程(!)master创建一个新的分支(因为你的本地master可能指向其他地方),然后从已有的分支中cherry-picking你想要的提交:
master
git checkout -b my-new-feature-branch remotes/upstream/master git cherry-pick <sha1-of-a-commit>
对每一个你想挑选的提交重复最后一步。
laximzn52#
Git 中 的 * branch * 是 一 个 可以 自由 移动 的 标签 。 它 指向 一 个 提交 。 每个 提交 都 指向 其父 提交 。 当 你 创建 一 个 分支 并且 没有 指定 它 的 起始 点 时 , 它 将 指向 HEAD , 也 就是 你 当前 签 出 的 提交/分支 。假设 在 处理 当前 分支 时 已经 有 了 提交 :当 你 创建 一 个 新 的 分支 时 , 这些 提交 也 可以 从 新 分支 * 到达 * 。 只要 它们 没有 被 合并 到 你 的 目标 分支 , 它们 就会 显示 为 " 待 合并 提交 " ( 在 GitHub PR 中 或 使用 gitk target..yourbranch ) 。可视化 :
HEAD
gitk target..yourbranch
A-B-C master, origin/master \ D-E-F old-branch \ G new-branch
中 的 每 一 个你 可以 在 目标 分支 上 重新 创建 分支 和 它 的 变化 ( 可能 是 origin/master ) , 或者 你 可以 重新 建立 分支 的 基础 ( 这 将 重写 历史 , 在 这样 做 之前 , 请 确保 你 * 理解 * 了 其中 的 含义 ) :
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-branch 或 master 可 访问 的 任何 提交 都 不会 受到 rebase 操作 的 影响 。 ( 记住 :Git 提交 是 不可 变 的 , 永远 不会 改变 。 你 只能 让 它们 变成 * unreachable * 。
G
G'
git diff "G'^" "G'"
git diff G^ G
old-branch
2条答案
按热度按时间5vf7fwbs1#
我建议在远程(!)
master
创建一个新的分支(因为你的本地master
可能指向其他地方),然后从已有的分支中cherry-picking你想要的提交:对每一个你想挑选的提交重复最后一步。
laximzn52#
Git 中 的 * branch * 是 一 个 可以 自由 移动 的 标签 。 它 指向 一 个 提交 。 每个 提交 都 指向 其父 提交 。 当 你 创建 一 个 分支 并且 没有 指定 它 的 起始 点 时 , 它 将 指向
HEAD
, 也 就是 你 当前 签 出 的 提交/分支 。假设 在 处理 当前 分支 时 已经 有 了 提交 :当 你 创建 一 个 新 的 分支 时 , 这些 提交 也 可以 从 新 分支 * 到达 * 。 只要 它们 没有 被 合并 到 你 的 目标 分支 , 它们 就会 显示 为 " 待 合并 提交 " ( 在 GitHub PR 中 或 使用
gitk target..yourbranch
) 。可视化 :
中 的 每 一 个
你 可以 在 目标 分支 上 重新 创建 分支 和 它 的 变化 ( 可能 是
origin/master
) , 或者 你 可以 重新 建立 分支 的 基础 ( 这 将 重写 历史 , 在 这样 做 之前 , 请 确保 你 * 理解 * 了 其中 的 含义 ) :格式
重 定 基 后 的 提交 图 :
格式
来自 new-branch (
G
) 的 旧 提交 仍然 存在 , 但是 不再 可以 通过 命名 的 引用 ( 分支 或 标签 ) 到达 。G'
是 新 的 独立 提交 ( 可以 从 其 提交 id/哈希 中 看出 ) , 具有 与 旧 的G
相同 ( 或 非常 相似 ) 的 补丁 ( 即git diff "G'^" "G'"
与git diff G^ G
相同 ) 。从
old-branch
或master
可 访问 的 任何 提交 都 不会 受到 rebase 操作 的 影响 。 ( 记住 :Git 提交 是 不可 变 的 , 永远 不会 改变 。 你 只能 让 它们 变成 * unreachable * 。