在git rebase中以交互方式删除选择进行编辑的提交

问题描述 投票:3回答:1

我准备发布一个回购协议,并且需要从其历史记录中完全删除某些内部信息。这些数据可以放在我必须手动检查/修剪的各种文件中。请注意,不是某些完整的文件应该删除,只是某些内容。

[当我执行git rebase -i --root时,我可以将(a)可能需要修改的所有提交标记为edit,将(b)需要完全进行的那些提交标记为drop。 (注意:要审核的提交列表不太长,可以使用git log --stat | grep 'commit\|name1\|name2\|...'进行访问。)在筛选类型为(a)的提交时,我可能会发现实际上需要完全删除的提交。为此,我尝试了rebase --skip,但令我惊讶的是,仍然保留了提交。

如何在我最初选择的git rebase期间删除提交?

示例:

edit

此后文件$ git init $ for COM in A B C; do touch $COM; git add $COM; git commit -m "add $COM"; done $ git rebase -i --root <mark all as 'edit'> <modify file and change commit> $ echo A > A; git add A; git rebase --continue <commit needs to go away> $ git rebase --skip <modify file and change commit> $ echo C > C; git add C; git rebase --continue 仍然存在。

git git-rebase
1个回答
3
投票

代替B,使用

git rebase --skip

git reset --hard HEAD^ git rebase --continue 将删除提交。git reset不会删除当时已应用的提交。

© www.soinside.com 2019 - 2024. All rights reserved.