我的git repo中有一个名为“releases”的分支,它包含子目录“1.0”和“1.1”。我想让这两个子目录成为“发布”级别的分支,并完全删除发布目录。这是将旧的svn repo转换为git repo的副作用(结合我的一点经验)。有一个简单的方法吗?就像可以将1.0和1.1 dirs移动到本地仓库中的某个级别,然后执行以下操作:
git checkout -b 1.1
git push origin 1.1
我不认为这是最好的解决方案,因为它不会保留历史记录,因为每个文件都必须重新检入。是否有更好的方法不涉及历史记录改变推送?
答案 0 :(得分:1)
由于您要删除版本目录,因此您无法添加到历史记录中。所以最简单的方法是检查发布分支,检出rel-1.1分支,将其重置为rel-1.1发生的提交,移动目录(检查What's the purpose of git-mv?)rince并重复执行rel-2.2然后删除发布分支。
但是,如果您可以重写整个仓库历史记录,请检查git filter branch命令 - 请参阅此处,例如,如何重写所有历史记录以在顶层移动目录,正是您想要的:How can I move a directory in a Git repo for all commits?。因此,您可以使用filter分支来重写发布分支的历史记录,因为两个目标始终位于顶层(您必须在开始之前检查rel-1.1,1.2分支) - 然后创建所需的两个分支。 / p>