如何将整个存储库压缩到第一次提交?
我可以将base转换为第一次提交,但这将留给我2次提交。 有没有办法在第一个提交之前引用这个提交?
如何将整个存储库压缩到第一次提交?
我可以将base转换为第一次提交,但这将留给我2次提交。 有没有办法在第一个提交之前引用这个提交?
当前回答
要做到这一点,你可以将本地git存储库重置为第一个commit标签,这样你在提交后的所有更改都将被取消,然后你可以使用——modify选项提交。
git reset your-first-commit-hashtag
git add .
git commit --amend
然后编辑第一个提交nam如果需要和保存文件。
其他回答
我读过一些关于移植的东西,但从来没有深入研究过。
不管怎样,你可以手动压缩最后2次提交,就像这样:
git reset HEAD~1
git add -A
git commit --amend
假设你有这些从06年到10年的提交。
您希望将06年后的提交合并为一个提交Id。
commit 10
commit 09
commit 08
commit 07
commit 06
你可以软复位git。
git reset --soft "06"
然后,运行下面的命令将这些更改推送到远程分支。
git push origin HEAD --force
现在,您之前所做的所有提交都应该作为您的本地更改可用,您可以将所有这些提交合并到单个提交中。
现在,新的提交结构应该如下所示:
commit <new_commit_containing_all_7_8_9_10>
commit 06
echo "message" | git commit-tree HEAD^{tree}
这将创建一个带有HEAD树的孤立提交,并在stdout上输出其名称(SHA-1)。然后重置你的分支。
git reset SHA-1
要在一个步骤中完成上述工作:
git reset $(git commit-tree HEAD^{tree} -m "Initial commit.")
首先,使用git rebase -interactive将所有提交压缩成一个提交。现在就剩下两个壁球提交了。要做到这一点,请阅读任何一本
如何合并Git存储库的前两次提交? Git:如何压缩前两次提交?
这对我来说效果最好。
git rebase -X ours -i master
这将使git更喜欢你的特性分支;避免艰苦的合并编辑。您的分支需要与主机同步。
ours
This resolves any number of heads, but the resulting tree of the merge is always that of the current
branch head, effectively ignoring all changes from all other branches. It is meant to be used to
supersede old development history of side branches. Note that this is different from the -Xours
option to the recursive merge strategy.