我想使用一个旧的提交并添加不同的修改(但我不想删除我的提交历史记录)。目前,类似这样的操作会删除我的GitHub拉取请求历史记录中的最后3个提交,并显示一个包含我的新修改的新提交:
git reset HEAD~3
git add .
git commit -m "New changes"
git push --force
有没有办法保留我最近的3次提交,然后在第4次提交时添加“新的更改”?
- 我尝试的内容:*
git reset HEAD~3
git add .
git commit -m "New changes"
git push --force
- 我希望发生的事情:* 添加一个新提交,而不删除历史记录中的最后三个提交
- 实际结果:* 一个新的提交,取代了前三个提交。
2条答案
按热度按时间1cosmwyk1#
现在的做法是这样的:
suzh9iv82#
一 个 提交 一旦 被 写入 , 就 不能 再 被 修改 了 。 但是 你 可以 用 一 个 新 的 类似 的 提交 来 替换 它 。
如果 你 有 提交 A-B - C-D - E , 并且 你 想 修改 提交 B 中 的 某些 内容 , 你 需要 创建 一 个 新 的 提交 B ' ( 和 C'- D'- E') 。 最 简单 的 方法 是 交互 式 重 定 基 :
中 的 每 一 个
如果 你 的 新 修改 与 C-D - E 的 修改 冲突 , Git 会 停止 重 定 基 并 要求 你 解决 冲突 。
如果 您 的 更改 独立 于 后续 提交 中 的 任何 现有 更改 , 则 可以 通过 创建 一 个 " fixup commit " 然后 使用 autosqash 运行 rebase 来 部分 自动 更改 " todo list " :
格式
同样 , 如果 有 任何 冲突 , Git 会 停止 rebase 并 要求 你 解决 冲突 , 然后 继续
git rebase --continue
。