我通过github克隆了一个现有的项目存储库,该存储库复制了所有提交历史记录和分支。我想从克隆项目的主分支中删除所有提交历史记录,并保留我一直在使用的分支的提交历史记录(参见图表)。该项目看起来像这样:
A [master]
\
B [branchDevelop] ________
\ \
C [branchFeature1] D [branchFeature2]
我尝试过改造并压缩master中的提交但我一直遇到合并冲突。此外,如果我删除.git并重新初始化项目,我将松开我的分支。如何删除master的提交历史记录并保留我一直在处理的开发分支和提交?
答案 0 :(得分:0)
首先,在新分支上创建一个提交,其内容与master
相同,但没有master
的历史记录:
git checkout --orphan new_master master
git commit -m'squashed'
警告: Severe history rewriting提前!
然后使用git filter-branch
重新定位branchDevelop
及其功能分支:
git filter-branch \
--parent-filter \
"test \$GIT_COMMIT = $(git show -s master --format=%H) \
&& echo '-p $(git show -s new_master --format=%H)' \
|| cat" \
--tag-name-filter "cat" \
-- \
branchDevelop branchFeature1 branchFeature2
最后,摆脱旧的master
分支并将新的分支重命名为master
:
git branch -M new_master master
答案 1 :(得分:-1)
您可以将分支重命名为master吗?
git branch -M branchDevelop master
确保这是您想要做的。您可以使用强制推动来推动它:
git push -f origin master