【发布时间】:2022-01-15 23:19:13
【问题描述】:
我有 2 个提交,我们称它们为 A 和 B,B 是一个很好的提交,但 A 有一些文件需要删除,而且我对 git 有点陌生,所以我真的不知道该怎么做这种情况。
顺便说一句,使用 bitbucket。
【问题讨论】:
我有 2 个提交,我们称它们为 A 和 B,B 是一个很好的提交,但 A 有一些文件需要删除,而且我对 git 有点陌生,所以我真的不知道该怎么做这种情况。
顺便说一句,使用 bitbucket。
【问题讨论】:
这里有 2 种更新提交的机制(它们都没有真正更新提交 - 它们是不可变的):
第一个选项是从 git 存储库中删除提交及其数据的真正方法。但它是侵入性的,需要用力推动。第二个选项是轻量级的,不需要重新创建提交历史。但它并没有真正删除它们指向的错误提交和数据——仍然可以找到它们,只是变得更难了。
【讨论】:
更合适的解决方案可能是git rebase。提交 B 保持不变,而提交 A 被编辑。
例如。
git rebase -i HEAD~2
将 rebase 来自 HEAD 的 2 个提交。其中 HEAD 是当前提交
git 接下来会提示你描述你想对每个提交做什么。在列表中找到提交 A 并将第一个单词替换为 edit 然后退出并保存(很可能您在 vim 中)。这将使您的 git 处于可以继续进行编辑的状态,例如 git rm -f --cached somefile.txt。
完成编辑后,只需运行git rebase --continue 即可。使用 git rebase 编辑的提交 A
【讨论】: