問題是關於歷史重寫:刪除上次提交 (這個問題相當於如何做到這一點,沒有討論它是壞的還是好的) 因此,想象最後一次提交的SHA是「dd61ab32」。 遠程和本地的同步和我們執行下面的命令來一次撤銷承諾:Git - 刪除上次提交(歷史改寫)
$ git push origin +dd61ab32^:master
$ git reset HEAD^ --hard
$ git push -f origin master
第一個,據我瞭解,將在最後一次刪除遠程提交。 第二個,將本地工作重置爲先前的本地提交,(--hard將完全清除所有更改, - soft將撤消上次提交,但更改將保存爲非暫存) 但是,第三個命令的作用是什麼?我明白它確實很重要,因爲如果沒有它,有些東西就搞砸了。
你能告訴我最後的第三條命令是做什麼的嗎?
UPD:
謝謝你的回答。目前還不清楚。我還有一個額外的問題,第一個命令是不是使當前的HEAD遠離前一個?解釋「它是無效的」。好的,我會盡力解釋,我需要哪個答案。我的意思是,當我首先執行命令時,我可以從視覺上看到發生了什麼。第二個命令也適用同樣的事情。但是第三個命令是不同的,因爲它很重要,但我不明白爲什麼它很重要。它看起來像多餘。你能描述更多的細節嗎?
'-f --force通常,該命令拒絕更新遠程ref,該遠程ref不是用於覆蓋它的本地ref的祖先。另外,當使用--force-with-lease選項時,該命令拒絕更新當前值與預期值不匹配的遠程參考。 此標誌禁用這些檢查,並可能導致遠程存儲庫丟失提交;從手冊頁https://git-scm.com/docs/git-push – bjhaid
謝謝。我將閱讀關於參考。沒有這個,我很難理解這個問題。 –
第三個命令也「刪除」來自遠程的以前的提交。國際海事組織,這是最好的辦法做到這一點,因爲它不需要知道前面提交的SHA散列。 –