删除知道提交ID的特定提交

cod*_*der 2 versioning git version-control commit

假设我有一个包含以下提交的repo(git版本1.7.1)

A -> B -> C -> D ->E 我的HEAD开着E.现在我想删除C,同时保持一切相同 A -> B -> D -> E.

你能帮我怎么做吗?

twa*_*erg 5

你可以这样做git rebase -i B.但是要注意,DE将被改写(获得不同的提交的SHA),那么结果将是A -> B -> D' -> E'.内容E'应等于E(减去C您现在正在丢弃的更改),但ID会有所不同.这就是为什么你在任何地方发现有关已经被推送的可能被重新提交的提交的警告,并且可能被其他人用作新工作的基础.您正在重写历史记录,这将导致其他存储库混淆,除非他们期待它.但是,如果这是一个私有存储库,或者你尚未推送,那么你应该很好地重新安排提交.