我的git存储库中有一些旧的分支,它们不再处于活跃的开发状态。我想存档这些分支,这样它们在运行git branch -l -r时默认不会显示。我不想删除它们,因为我想保留历史。我该怎么做呢?
我知道可以在refs/heads之外创建一个ref。例如:refs/archive/old_branch。这样做有什么后果吗?
我的git存储库中有一些旧的分支,它们不再处于活跃的开发状态。我想存档这些分支,这样它们在运行git branch -l -r时默认不会显示。我不想删除它们,因为我想保留历史。我该怎么做呢?
我知道可以在refs/heads之外创建一个ref。例如:refs/archive/old_branch。这样做有什么后果吗?
当前回答
您可以使用为您存档分支的脚本
archbranch
它为您创建一个带有前缀archive/的标记,然后删除分支。在使用它之前,请确保您了解它的功能=)
使用- $/your/location/of/script/archbranch [branchname] [defaultbranch]
如果希望运行脚本而不向其写入位置,则将其添加到路径中
那你可以顺便来看看
$ archbranch [branchname] [defaultbranch]
[defaultbranch]是归档完成后它将转到的分支。有一些问题与颜色编码,但除此之外,它的工作。我已经在项目中使用它很长时间了。
其他回答
您可以将分支归档到另一个存储库中。虽然没那么优雅,但我觉得这是个可行的选择。
git push git://yourthing.com/myproject-archive-branches.git yourbranch
git branch -d yourbranch
我使用以下别名隐藏归档的分支:
[alias]
br = branch --no-merge master # show only branches not merged into master
bra = branch # show all branches
因此,git br显示正在开发的分支,git bra显示所有分支,包括“存档”的分支。
您可以使用为您存档分支的脚本
archbranch
它为您创建一个带有前缀archive/的标记,然后删除分支。在使用它之前,请确保您了解它的功能=)
使用- $/your/location/of/script/archbranch [branchname] [defaultbranch]
如果希望运行脚本而不向其写入位置,则将其添加到路径中
那你可以顺便来看看
$ archbranch [branchname] [defaultbranch]
[defaultbranch]是归档完成后它将转到的分支。有一些问题与颜色编码,但除此之外,它的工作。我已经在项目中使用它很长时间了。
我认为正确的方法是标记分支。如果你在标记了分支之后删除了它,那么你就有效地保留了这个分支,但它不会使你的分支列表变得混乱。
如果您需要返回分支,只需检查标签。它将有效地从标记中恢复分支。
归档并删除分支:
git tag archive/<branchname> <branchname>
git branch -d <branchname>
在一段时间后恢复分支:
git checkout -b <branchname> archive/<branchname>
分支的历史记录将被保留,就像您标记它时一样。
在Git中,分支只是一个指向某个提交的指针。因此,删除一个分支只会删除一个指针,即使分支从未合并,也不会删除相关的代码。因此,“归档”本地分支就像记住指针名称一样简单(提交哈希)。你可以在。/git/refs/heads目录下找到这些信息。或者,您可以简单地将分支到提交的映射复制到如下所示的文本文件中。
git branch -v > /path/to/backup/branches.txt
删除分支之后,可以使用以下命令在本地恢复它。
git branch <branch_name> <commit_hash>