我有一个包含两个分支的Git存储库:master
和redesign
。 redesign
分支是从master
创建的,master
从那时起就没有被触及过:
master
...|--m50--\
\--m51--|--m52--|--m53-- redesign
redesign
分支发展得如此之多以至于我想从中创建一个新的整个存储库,将redesign
的第一次提交作为新存储库的初始提交并忘记以前的历史记录继承自master
:
master
...|--m50--
redesign
--r1--|--r2--|--r3--
这可以用Git吗?这有related question,但其目标是使用目录,而不是分支。
谢谢!
答案 0 :(得分:7)
你可以:
.git
目录除外)redesign
分支git format-patch master..redesign
然后转到新目录并:
$ git init
$ git add . # make sure your .gitignore is in place though
$ git commit -m"..."
$ git am /path/to/patches/*.patch
答案 1 :(得分:1)
首先,复制或克隆您的git存储库。
然后,找出新根提交的哈希值(图中的m51
)。将其提交哈希放入文件.git/info/grafts
,然后运行git filter-branch --all
。验证成功操作后,可以删除original/*
备份引用(或重新克隆存储库)。
请注意,这将为所有提交创建新的提交哈希值,因此您必须小心已发布的历史记录。
答案 2 :(得分:0)
创建新的存储库,然后:
$ git add remote newrepo <path to newrepo>
$ git checkout redesign
$ git checkout --orphan clean
# The branch is empty, but the files from the original branch are staged for commit.
$ git commit -m"clean"
$ git push newrepo clean:master
注意:如果您想保留历史记录(或不关心),请省略“干净”
的创建