2017-08-17 68 views
1

我把我的更改遠程分支,然後意識到,我是用錯了GitHub的用戶名後的最後git的承諾,所以我試圖取消提交,但不成功。我讀過,我可以只使用git reset HEAD^ 如果我沒有把我的更改推送到遠程,但它沒有工作,因爲已提交到遠程回購。如何刪除推到遠程然後從遠程主分支拉動當地

我用git reset @~1這讓我的本地提交歷史回到最前面的一個後第一個被擦除整個提交歷史。我的目標是隻提交最後一個,所以我git pull origin mastergit fetch --all將遠程回購獲得到本地,但它沒有更新本地提交歷史。

所以,我應該怎麼辦: 1)來更新我的本地提交歷史匹配了遠程歷史? 2)然後提交我的最新提交遠程回購?

最後,它會導致一個問題,如果其他用戶刪除提交歷史(儘管都屬於我反正)?

回答

1

由於您已經推動了更改,因此您不應該改變其歷史記錄。但是,如果你真的想,現在你有你的本地倉庫恢復到狀態你願意,你可以運行:

git push -f origin <branch name that you want to push> 

-f選項強制更改到遠程倉庫。

正確的方式做到這一點是要恢復的承諾,這將創建一個新的提交是逆提交你的回覆,從而有效地擦除你不改變歷史所做的更改。

  • 第一,得到的sha提交要撤消(它甚至不需要成爲最後提交)
  • 運行命令在本地`git的恢復
  • 推的變化通常git push origin <branch you want to push>

注意,沒有什麼力量推動在這裏。沒有重寫歷史。

至於用戶名的區別,它使用什麼用戶名或電子郵件幾乎沒有什麼不同。在你的git配置中,因爲它們是信息性的。您可以在git配置中將您的姓名和電子郵件地址更改爲您喜歡的任何內容,並將顯示在git日誌中。正因爲如此,您可以選擇使用GPG簽名來確認提交人的真實身份。你可以看到一個description of signing here