我计划重命名 git 仓库中的一个分支。我发现最简单的方法是从该分支创建一个新分支并赋予所需名称。
之后,我想要删除旧分支(父分支)。但我担心这样做会导致新分支中丢失数据。
如果我删除父分支,那么最初提交到该父分支的提交记录会怎样处理?
我计划重命名 git 仓库中的一个分支。我发现最简单的方法是从该分支创建一个新分支并赋予所需名称。
之后,我想要删除旧分支(父分支)。但我担心这样做会导致新分支中丢失数据。
如果我删除父分支,那么最初提交到该父分支的提交记录会怎样处理?
发生了什么?没什么事情。
如果您在另一个分支创建了一个分支,您可以“删除”该另一个分支而不会丢失任何内容。分支(HEAD)只是指向提交的指针。
只要这些提交被分支 HEAD 引用(或是分支 HEAD 祖先的一部分),它们不会丢失。
即使它们不再被任何分支或标签引用,它们仍然在本地的 reflog
中保存(默认为 90 天)。
但是,查看git 分支的手册页,似乎更容易:
git branch (-m | -M) [<oldbranch>] <newbranch>
随着:
-m
--move
移动/重命名一个分支以及相应的 reflog。
-M
即使新分支名称已存在,也可以移动/重命名分支。
只需使用git format-patch origin -o {output_folder}
即可。
将所有补丁取出后,进入主分支并创建一个新分支。
然后按如下方式应用这些补丁:git am {output_folder}/{patch_name}.patch
。
然后在验证没有丢失任何信息后,可以使用git Branch -D {name_old_branch}
删除旧分支。
git format-patch
是保留时间戳和提交之间更改分布的好方法。 - starturtle