如何在过去的N次提交中重新应用(或重新基础)git提交来修改变量



问题:在破解该问题时,要使用沙箱密钥来测试一些API调用。后来我发现钥匙不合适;沙盒";因此不应该把它记录在我的犯罪记录中。如何重新应用所有提交,但只更改一个变量?

我可以处理合并冲突,并手动完成20多次提交,以确保前一个变量被正确覆盖,不会出现在git提交历史记录中。

我该怎么做这样的事?目前,我是唯一一个管理回购/代码并完全控制它的人。在我看来,我有以下选择:

  1. 只需复制所有文件并签入";胖承诺";。将只有一个单一的提交,所有的东西都是在";提示";我的分支。这让我得到了我想要的,但我失去了很多历史
  2. 摘樱桃的把戏?不知道怎么做
  3. 用rebase耍花招?不知道怎么做

该变量出现在几个提交中,因此必然存在合并冲突。我该怎么办?

以下是分支机构的当前状态:

  • master:具有前两个提交
  • myBranch:具有前两个提交+另外二十个

myBranch中的第三次提交引入了该变量。我需要先在那里更改它,然后在其他提交中重复。

使用rebase-i(当然,它将重写历史(:

git rebase -i revision-where-the-variable-was-badly-added~
# make sure to add the pigtail there
# the revision should show up as the first one in the list
# set that revision to 'edit'
# save and exit
# rebase should apply the revision and stop
# correct the file or files you want
git add the-file-or-files
git commit --amend --no-edit
# after this is done, you have a new corrected revision
git rebase --continue

你应该有一个正确的历史。您可能需要强制将其推送到远程,因为您正在改写历史。

最新更新