git - 在 git rebase 中以交互方式删除选择进行编辑的提交
问题描述
我准备了一个 repo 以供发布,并且需要从其历史记录中完全删除某些内部信息。这些数据可以在我必须手动检查/修剪的各种文件中。请注意,不应该删除整个文件,只删除某些内容。
当我这样做时,我可以将 (a)可能需要修改git rebase -i --root
的所有提交标记为以及 (b) 需要完全修改为. (注意:要审查的提交列表不会太长,并且是通过使用选择的。)在筛选类型 (a) 的提交时,我可能会发现一个实际上需要完全删除的提交。为此,我尝试了,但令我惊讶的是,这仍然使提交到位。edit
drop
git log --stat | grep 'commit\|name1\|name2\|...'
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
在此之后文件B
仍然存在。
解决方案
而不是git rebase --skip
,使用
git reset --hard HEAD^
git rebase --continue
将git reset
删除提交。
git rebase --skip
不会删除此时已应用的提交。
推荐阅读
- sql-server - SQL Server中的while循环子字符串很慢
- bash - 使用 find 排除多种文件类型
- python - 字符串后刮beautifulsoup时不可见
- spring - 在自定义 UserDetailsService 中访问当前 ClientDetails
- vue.js - 有什么方法可以不使用 vue 3 中的挂起进行组合 api 异步?
- python - 有没有办法增加字符串变量中的数值?[Python]
- azure-active-directory - IdentityServer4、Swift iOS 应用和外部身份提供者
- c# - 从 Microsoft Windows 时区数据库获取 CEST 时间
- c++ - 计算随机正交矩阵的机器精度问题
- python - 如何使用 discord.py 发送消息