挤压历史记录中的多个git提交 我有一个大约3000个提交的库,我想在这两个日期之间在历史中间挤下其中的250个:
挤压历史记录中的多个git提交 我有一个大约3000个提交的库,我想在这两个日期之间在历史中间挤下其中的250个:,git,rebase,squash,Git,Rebase,Squash,a--b--c--d--e--f--g--h--i--j--k--l--m--n a--b--c--d'------------k--l--m--n 我已经知道了d和j的日期。 执行此操作的最佳实践是什么?假设a是最早的提交,n是最新的提交: git-rebase方法: 请注意: git reset--hard将丢弃所有未提交的更改 从gitv1.7.2开始,支持git cherry pick范围 您也可以尝试一种与合并方法类似的不同方法 注意:假设n为最新提交,而a为最早提交 创建一个以提交
a--b--c--d--e--f--g--h--i--j--k--l--m--n
a--b--c--d'------------k--l--m--n
我已经知道了d和j的日期。
执行此操作的最佳实践是什么?假设
a
是最早的提交,n
是最新的提交:
git-rebase
方法:
请注意:
将丢弃所有未提交的更改git reset--hard
- 从
v1.7.2开始,支持git
范围git cherry pick
n
为最新提交,而a
为最早提交
创建一个以提交k
为头的新分支
git checkout -b new-branch <commit hash of k>
提交更改,因为从提交d
到k
的所有更改都不在暂存区域中。(git状态
验证)
合并提交帖子k
git cherry-pick l^...n # Use SHA's of l and n
也许你是对的,但找不到更好的方法。另外,如果你使用
vim
,请使用以下命令::%s/pick/squash/g
替换所有pick
到squash
,谢谢。这是可行的,但会提示我输入squash,大约250次提交。我可以传递一系列的提交吗?对于这些提交,在选择其他提交的同时必须进行挤压?不幸的是,不行,git-rebase
可以从HEAD
开始进行提交。另一个选择是使用git-merge-squash
,但我觉得这更痛苦。这就是我一直在寻找的。非常感谢。
git checkout -b new-branch <commit hash of k>
git reset --soft <commit hash of parent of d>
git commit
git cherry-pick l^...n # Use SHA's of l and n