【发布时间】:2018-11-30 06:20:06
【问题描述】:
我的 git log 命令产生以下内容:
commit 568a9783f75b0c1ab12499beb32b518e19ab60c0 (HEAD -> master, origin/master)
Merge: 7428e09 e7c1537
...
commit 7428e0947bb47a3fdc46a1ea053bd86aa87934c8
...
commit e7c15371f39f4183c5f8c0645051a022851902f2
Merge: e715e8a ae7d067
...
commit ae7d06745891c215cc2980df520656509e4e36ef
...
在提交 7428e0947bb47a3fdc46a1ea053bd86aa87934c8(上面第二个)时,一些敏感信息被意外检入到存储库中,因此我想用以前的提交来压缩它。
我正在尝试按照此处的说明进行操作:
How to squash commits in git after they have been pushed?
首先,我删除了敏感信息,然后提交了更改:
git add .
git commit -a -m "Remove sensitive info"
Git 日志现在看起来像:
commit d6d1954c10bd71cc33f24222d1e36b3116eb7775 (HEAD -> master)
...
Remove sensitive info
commit 568a9783f75b0c1ab12499beb32b518e19ab60c0 (origin/master)
Merge: 7428e09 e7c1537
commit 7428e0947bb47a3fdc46a1ea053bd86aa87934c8
commit e7c15371f39f4183c5f8c0645051a022851902f2
Merge: e715e8a ae7d067
...
commit ae7d06745891c215cc2980df520656509e4e36ef
...
现在我运行:
git rebase -i origin/master~4 master
我得到:
...
pick ae7d067 ...
pick d6d1954 Remove sensitive info
我不明白发生了什么:
568a9783f75b0c1ab12499beb32b518e19ab60c0
7428e0947bb47a3fdc46a1ea053bd86aa87934c8
e7c15371f39f4183c5f8c0645051a022851902f2
如何让上述三个提交出现,以便我可以手动选择要压缩的提交?
【问题讨论】:
-
"squash" 表示将两个提交合并为一个提交。如果您将包含敏感信息的提交与之前的提交一起压缩,您将获得仍然包含敏感信息的新提交。我不认为这真的是你想要的。您应该跳过或编辑包含敏感信息的提交,以便从提交历史记录中删除该信息。
-
同意 - 我想删除敏感信息,然后用它之前的提交(包含敏感信息)压缩该提交