Version control 如何在Mercurial中仅对一个特定的提交发出请求?
我已经创建了一个托管在Bitbucket上的Mercurial存储库。我没有原始存储库的写入权限。我对我的叉子做了几次承诺。让我们称它们为A、B、C和D,即最新优先:Version control 如何在Mercurial中仅对一个特定的提交发出请求?,version-control,mercurial,fork,bitbucket,pull,Version Control,Mercurial,Fork,Bitbucket,Pull,我已经创建了一个托管在Bitbucket上的Mercurial存储库。我没有原始存储库的写入权限。我对我的叉子做了几次承诺。让我们称它们为A、B、C和D,即最新优先: D[最新] C B首先,让我们了解您的图形是什么样子的。让我们假设您的分叉回购的尖端是x,并且它具有没有分支的线性历史。因此,您的历史记录如下所示: [1000's of commits] -> parent(parent(x)) -> parent(x) -> x x -> A -> B -&g
- D[最新]
- C
- B首先,让我们了解您的图形是什么样子的。让我们假设您的分叉回购的尖端是
,并且它具有没有分支的线性历史。因此,您的历史记录如下所示:x
[1000's of commits] -> parent(parent(x)) -> parent(x) -> x
现在您进行了四次提交,即x -> A -> B -> C -> D
、A
、B
和C
,其中D
是最早的一次,而A
是最新的一次。现在您可以看到如下图形:D
[1000's of commits] -> parent(parent(x)) -> parent(x) -> x
请注意,早于x -> A -> B -> C -> D
的历史记录仍然完整,上面没有包括它,因为我们讨论的内容不需要它 现在您想要创建一个只包含x
changeset的请求。在当前状态下,这是不可能的,因为主回购协议不知道B
也是A
的父项。在孩子的父母不在场之前,你不能生孩子 因此,如果我们只想对B
changeset发出pull请求,我们需要B
onrebase
x
是Mercurial中的一个扩展,您可以通过在rebase
.hg/hgrc
启用扩展后,让我们重新设置基础[extensions] rebase =
这将导致:hg rebase -s B -d x
现在您可以创建拉取请求,因为x -> A \-> B -> C -> D
的父级是B
。您还可以通过将x
重新设置为C
来获得更清晰的历史状态。它将导致两个分支,一个包含要推送的变更集,另一个包含本地变更集。重新定基看起来像:A
由此产生的历史状态是:hg rebase -s C -d A
您现在可以轻松地创建一个只包含x -> A -> C -> D \-> B
changeset的请求 相关链接:B
首先,让我们了解图形的外观。让我们假设您的分叉回购的尖端是
,并且它具有没有分支的线性历史。因此,您的历史记录如下所示:x
[1000's of commits] -> parent(parent(x)) -> parent(x) -> x
现在您进行了四次提交,即x -> A -> B -> C -> D
、A
、B
和C
,其中D
是最早的一次,而A
是最新的一次。现在您可以看到如下图形:D
[1000's of commits] -> parent(parent(x)) -> parent(x) -> x
请注意,早于x -> A -> B -> C -> D
的历史记录仍然完整,上面没有包括它,因为我们讨论的内容不需要它 现在您想要创建一个只包含x
changeset的请求。在当前状态下,这是不可能的,因为主回购协议不知道B
也是A
的父项。在孩子的父母不在场之前,你不能生孩子 因此,如果我们只想对B
changeset发出pull请求,我们需要B
onrebase
x
是Mercurial中的一个扩展,您可以通过在rebase
.hg/hgrc
启用扩展后,让我们重新设置基础[extensions] rebase =
这将导致:hg rebase -s B -d x
现在您可以创建拉取请求,因为x -> A \-> B -> C -> D
的父级是B
。您还可以通过将x
重新设置为C
来获得更清晰的历史状态。它将导致两个分支,一个包含要推送的变更集,另一个包含本地变更集。重新定基看起来像:A
由此产生的历史状态是:hg rebase -s C -d A
您现在可以轻松地创建一个只包含x -> A -> C -> D \-> B
changeset的请求 相关链接:B