问题描述
- 在实际工作环境,会出现这种场景:
- 某个人的commit带了bug,但是短期内无法解决;
- 某个人传了个大文件,想删掉,但是后面又跟了很多其他commit;
- 首先说明,大文件直接git rm有问题,历史记录会一直有。
- 解决方案只有一个:删掉这个commit。
怎么删呢
- 如果提交记录是这样,A/B/C/D都当做commit id:
- A –> B(Dirty) –> C –> D(HEAD)
1. Git Revert
git revert B
// 如果有多个
git revert B1..B2
2. Cherry pick
git checkout -b new_branch A
git cherry-pick C
git cherry-pick D
// 或者可以写成
git checkout -b new_branch A
git cherry-pick C..D
- https://git-scm.com/docs/git-cherry-pick
- 这样会
新建一个分支
。
3. History rewrite
git rebase -i
// 通过挑选commit,合并commit的方式处理
推荐