gpt4 book ai didi

git - 从特定提交创建 PR

转载 作者:行者123 更新时间:2023-12-03 23:29:04 28 4
gpt4 key购买 nike

我想用一次提交创建一个 PR,所以我用提交 SHA checkout 一个新分支,

git checkout -b new-branch 8517c80183607461ea

我如何从这里创建 PR?

最佳答案

由于 Git 分支的工作方式,仅在一次提交中创建分支是不够的。您可能会拖入更多提交。

例如,假设您的存储库如下所示。

A - B - C [master]
\
D - E - F [feature]
masterfeature 只是指向提交的标签。 master 指向提交 C。 feature 指向提交 F。

Git 提交不是孤立存在的。他们带走了他们的整个历史。如果没有 E、D、C、B 和 A,F 就不能存在。如果你推送 feature,那么 F 将带来 E 和 D(假设 C 已经被推送)。

假设您只想发送 E 的 PR。因此您在 E 处创建一个分支。
$ git checkout -b new-branch E

A - B - C [master]
\
D - E [new-branch]
\
F [feature]

所做的一切就是创建一个名为 new-branch 的标签,指向提交 E。提交的结构保持不变。如果你然后按下 new-branch 它会拖拽 D。这就是为什么有时当你认为你只推送了几个提交时,PR 包含更多的提交。

为了真正只推送一次提交,您需要将其与其历史记录分离。你可以用 git cherry-pick 做到这一点。这基本上需要提交,把它变成一个补丁,然后在其他地方打补丁。

返回到您的原始存储库...
A - B - C [master]
\
D - E - F [feature]

您将在 master 上创建一个新分支。
$ git checkout -b new-branch master

[new-branch]
A - B - C [master]
\
D - E - F [feature]

(请注意,除了指向 C 的新分支标签之外,没有任何变化。)

然后选择 E。这将复制 E 作为 C 之上的新提交。可能存在冲突,正常解决它们。
$ git cherry-pick E

E1 [new-branch]
/
A - B - C [master]
\
D - E - F [feature]

现在你可以推送 new-branch 并且只有 E1 会在 PR 中。

关于git - 从特定提交创建 PR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53964100/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com