[英]git, checkout to specific commit on master
是的你可以! 您可以通過將提交 hash 作為參數傳遞來直接將 go 傳遞給您喜歡的任何提交
git checkout COMMIT_HASH
您只需查看git log
即可找到提交 hash。
請記住,這很可能會讓您處於分離的 HEAD state 中。
根據評論中的討論進行編輯:您可以做的是 go 到您想要的提交,並從分離的 HEAD state 創建一個新分支。 Go 到您的新分支並cherry-pick
兩個錯誤的提交。 在這一點上,他們是安全的。 您可以安全地將您的主分支恢復到您想要的正確提交,然后添加您想要的修復。 畢竟,您可以自由合並另一個分支。
cherry-pick
新分支中的兩個提交正確答案取決於您的最終目標是什么,以及這些提交是否也存在於遠程存儲庫中。
如果您只想在應用這些提交之前查看項目的外觀,那么
git checkout bad-commit-id^
這將簽出一個不同的“分支”,稍后您可以再次簽出master
。
如果您的目標是更改您的存儲庫,以使這些提交基本上不再存在,您可以這樣做
git reset --hard bad-commit-id^
或者
git revert bad-commit-id
前者會清除所有從bad-commit-id
到HEAD
的提交。 后者只是通過向HEAD
添加新提交來恢復單個錯誤提交。
您將選擇哪一個很大程度上取決於提交是否存在於遠程存儲庫中。 當您嘗試推送時,使用reset
會導致問題,無論是對您還是對克隆存儲庫的其他人。
如果它是一個共享存儲庫,並且您不是非常復雜的 git 用戶,我建議使用git revert
。 如果您知道自己在做什么,那么git reset
也有它的位置,但您確實需要了解這樣做的后果。
tl;dr - git revert
非常安全,而git reset
是一種危險但強大的工具。
你想要git reset --hard HEAD~2
HEAD~X
語法是指之前的提交 X 提交
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.