git分支重命名会影响分支层次结构吗?

7
我是一名有帮助的助手,以下是您需要翻译的内容:

我正在处理一个由Git管理的多分支项目。

我们目前的工作流程如下:

master
 |-> v1/master
     |-> v1/dev

注意:每个开发者都会从v1/dev创建一个“分支”来完成任务。潜在地,我们有许多从v1/dev继承的分支。
我们需要添加一个从v1/master继承的名为v1/debug的分支。 当前的v1/dev分支必须从v1/debug继承。
我们的目标是这种新的工作流程:
master
 |-> v1/master
     |-> v1/debug
         |-> v1/dev

注意:每个人都需要继续制作“fork”v1/dev以实现单元任务。
我在寻找一个解决方案来添加中间分支v1/debug。
经过一些研究,我想使用git重命名分支命令(如何重命名本地Git分支?)。
这个命令会保留分支层次结构吗?
我可以将v1/dev重命名为v1/debug,然后再创建新的v1/dev分支,而不会对当前从v1/dev分支派生出的当前开发分支造成麻烦吗?
开发人员能够合并重命名的v1/dev的单元分支结果到v1/debug中吗?

请注意:Git中的分支只是开发字符串的标签,而不像SVN中那样是一个目录。您还可以将v1/master重命名为foo,将v1/debug重命名为bar,将v1/dev重命名为whateveryouwant,但这并不会改变任何东西... - eckes
我已经在下面编辑了我的答案,添加了一个工作流示例的图片,让您可以创建这个“中间分支”。 :) - Fox
1个回答

16

首先,不要重命名分支。你可以更改本地分支的名称,但这只适用于你自己。请记住,Git是一种分布式系统。人们有权使用与相关追踪远程分支不同的名称来命名自己的本地分支。

例如,v2/debug 可能是一个本地分支的名称,用于追踪远程跟踪分支 origin/v1/master (我知道,这没有意义,但因为Git是一种分布式系统,人们可以根据自己的喜好命名)。

也不要在远程重命名分支。这会搞乱一切,因为它不会更改同事们的本地仓库。他们的本地分支将继续指向相同的追踪远程分支(同名)。

你只需要创建一个新分支,并使它从当前的 v1/master 点开始。 创建并直接切换到新分支:

git checkout -b v1/debug v1/master

或者仅创建它但保留在您当前的分支上:

git branch v1/debug v1/master

本地创建了分支,仍需推送以供其他人查看。

后续需要更改合并流程。从现在开始,不要直接将v1/dev合并到v1/master,而只将其合并到v1/debug。 每当代码库准备好时,再将v1/debug合并到v1/master

你在谈论分支层次结构。实际上,分支层次结构对Git来说是“未知”的。它只是你合并的方式(哪个分支合并到哪个分支),最终形成了层次结构。

示例工作流程(带图片)

  1. 初始状态(仅有v1/masterv1/dev)。假设在分支v1/master上,并且v1/devv1/master多一个提交。 Initial state

  2. 运行git branch v1/debug v1/master。这只是创建一个标签,指向与v1/master当前指向的相同提交。
    Create the new branch v1/debug starting from v1/master

  3. 一旦v1/dev就绪,将其合并到v1/debug中。运行git checkout v1/debug && git merge v1/dev
    Merge v1/dev into v1/debug

  4. 一旦v1/debug就绪,将其合并到v1/master中。运行git checkout v1/master && git merge v1/debug。 从现在开始,你所谓的“层次结构”开始变得清晰。
    Merge v1/debug into v1/master

  5. v1/dev分支上进行一些工作。运行git checkout v1/dev并进行多个提交。
    Do some work on v1/dev (commits)

  6. 将其合并到v1/debug中。运行git checkout v1/debug && git merge v1/dev
    Merge v1/dev into v1/debug

  7. 将其合并到v1/master中。运行git checkout v1/master && git merge v1/debug
    Merge v1/debug into v1/master

现在你有了3个清晰的分支,具备想要的


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接