2016-09-27 74 views
1

考慮以下提交歷史:徹底刪除先前的承諾

* 627f412 (HEAD -> master) final commit 
* 1425cf8 added some file 
* 2c8bb78 initial commit 

信息庫既不是推不提交這期間拉。

第二次提交1425cf8是不必要的提交。我想完全刪除該提交。

因此,新的日誌將看起來像:

* 627f412 (HEAD -> master) final commit 
* 2c8bb78 initial commit 

如何做到這一點?

git reset --hard HEAD~1在這種情況下做的正確事情是什麼?

回答

2

Is git reset --hard HEAD~1 the correct thing to do in this situation?

編號:git rebase -i 2c8bb78是。

您可以在交互式rebase會話中刪除額外的提交。 (如果你想完全放棄什麼1425cf8介紹)
或者你可以擠壓兩個提交。

對於這一點,在交互式會話(見 「Git Tools - Rewriting History」):

  • 在627f412

注意,最終結果將是627f412前加上一個s的壁球:新的提交將有不同的SHA1,因爲它的內容會有所不同。

+0

VonC這是當我'git rebase -i 2c8bb78'時發生的事情。 打開編輯器窗口。與下列: 挑1425cf8添加一些文件 挑627f412最終提交 我刪除了第一行。保存文件。 This results in: error:could not apply 627f412 ... final commit 我做錯了什麼? 我有git rebase --abort可以恢復到原始狀態 – deshmukh

+0

請參閱https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History:是否要刪除1425cf8更改,或者用627f412壓扁它們? – VonC

+0

VonC。這是一個不應該有的承諾。此外,627f412提交是我想要的,它包含了所有屬於1425cf8的東西 – deshmukh

0

您可以將您的HEAD重置爲(--hard!)2c8bb78然後提交更改。 或在2c8bb78上壓扁並擠壓到其他兩個提交(627f4121425cf8)。

隨着reset --hard,你可能會失去你的修改。

+0

user4780495我似乎不穩固。看到我對@ VonC的VonC的回答的評論。 爲了使事情更簡單,請您詳細解答答案? – deshmukh