如果我在git中删除父分支,子分支会发生什么?

29

我计划重命名 git 仓库中的一个分支。我发现最简单的方法是从该分支创建一个新分支并赋予所需名称。

之后,我想要删除旧分支(父分支)。但我担心这样做会导致新分支中丢失数据。

如果我删除父分支,那么最初提交到该父分支的提交记录会怎样处理?

2个回答

21

发生了什么?没什么事情。

如果您在另一个分支创建了一个分支,您可以“删除”该另一个分支而不会丢失任何内容。分支(HEAD)只是指向提交的指针。
只要这些提交被分支 HEAD 引用(或是分支 HEAD 祖先的一部分),它们不会丢失。
即使它们不再被任何分支或标签引用,它们仍然在本地的 reflog 中保存(默认为 90 天)。

但是,查看git 分支的手册页,似乎更容易:

 git branch (-m | -M) [<oldbranch>] <newbranch>

随着:

-m
--move

移动/重命名一个分支以及相应的 reflog。

-M

即使新分支名称已存在,也可以移动/重命名分支。


3

只需使用git format-patch origin -o {output_folder}即可。

将所有补丁取出后,进入主分支并创建一个新分支。

然后按如下方式应用这些补丁:git am {output_folder}/{patch_name}.patch

然后在验证没有丢失任何信息后,可以使用git Branch -D {name_old_branch}删除旧分支。


1
在分支之间,这并不是必要的,只需创建另一个分支标签即可解决问题。但我刚刚成功地使用了这种方法来将补丁应用到已移动的存储库中。变更集是基于旧存储库(位置)创建的,但需要推送到其他存储库,并且 git format-patch 是保留时间戳和提交之间更改分布的好方法。 - starturtle

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