Git分支删除[AWS Code Commit]

问题描述 投票:0回答:2

我目前在AWS Code Commit中有一个masterfeatures分支。我需要为项目创建更多分支。

假设,我将创建新的ui-improvement分支,几天后,我在本地和远程删除了分支。之后,是否可以在使用ui-improvement之前创建相同的分支名称?

git amazon-web-services aws-codecommit
2个回答
3
投票

虽然git并不关心你是否重新使用分支名称,但在实践中它并非没有潜在的后果。 tl; dr:只是因为你从本地和遥控器中删除它,并不意味着它从每个回购中消失了。

为什么你可以这样做:git分支是一个参考。也就是说,它是指向提交的指针的名称。如果删除引用,git不会尝试跟踪之前使用的特定名称这一事实。 (事实上​​,即使是分支的reflog也被丢弃了,这可能有不错的理由,但却是不幸的。)

为什么你可能不应该:在裁判中,分支的特殊之处在于它们应该移动,并且有一个默认规则来预测它们如何移动。 (这与像标签这样的refs形成鲜明对比,因为它们通常不会移动。)

具体而言,在创建新提交时,期望分支从父级移动到子级。如果在两个不同时刻的每一个都存在具有给定名称的分支,那么期望它在较早时刻指向的提交是“可达的”(通过父指针)来自它在稍后指向的提交。

现在,如果你删除了一个分支的所有痕迹(从本地和远程删除),那么重新使用分支名称似乎足够安全。但是既然你有一个遥控器 - 或者就此而言,因为你使用的是分布式版本控制系统 - 我们至少应该认识到你的遥控器不是唯一的克隆。

假设你开始你的项目。

A -- B -- C <--(master)

然后你创建一个分支

A -- B -- C <--(master)
      \
       D -- E <--(fixes)

并且你已将其推向原点,而另一位开发人员将所有这些都推到了当地。所以他们有

A -- B -- C <--(master)(origin/master)
      \
       D -- E <--(fixes)(origin/fixes)

现在你继续工作,很快就会有

             H -- I <--(a_branch)
            /
A -- B -- C ------------ M<--(master)
      \                /
       D -- E -- F -- G <--(fixes)

到目前为止,这一切都很好,因为每个分支都只是前进了。另一个开发者拉动并且是最新的。

             H -- I <--(a_branch)(origin/a_branch)
            /
A -- B -- C ------------ M<--(master)(origin/master)
      \                /
       D -- E -- F -- G <--(fixes)(origin/fixes)

但现在你删除了fixes,因为它已经合并了。在a_branch上出现了一些问题所以你决定需要一个新的fixes分支。

                    K <--(fixes)
                   /
             H -- I <--(a_branch)
            /
A -- B -- C ------------ M<--(master)
      \                /
       D -- E -- F -- G

所以另一个开发者进行了一次获取,现在已经开始了

                    K <--(origin/fixes)
                   /
             H -- I <--(a_branch)(origin/a_branch)
            /
A -- B -- C ------------ M <--(master)(origin_master)
      \                /
       D -- E -- F -- G <--(fixes)

而现在从他们的回购的角度来看,似乎fixes分支已经以意想不到的方式发生了变化。这并不难解决,但是他们会得到的错误中最“明显”的方法是错误的并且会导致奇怪的结果。这很烦人,你的工作流程不应该经常创造这种情况。


1
投票

是的,可以在新分支中使用相同的分支名称(已删除分支的分支名称 - 本地和远程删除)。

一旦分支被删除,即使您之前在合并中使用了已删除的分支,也不会出现名称冲突。

© www.soinside.com 2019 - 2024. All rights reserved.