我希望我的git repo處於特定提交狀態。一旦回購處於該狀態,我希望能夠推送到Github,使遙控器處於該狀態。我知道我可以撥打git checkout <commit hash>
,我的本地回購將會處於特定提交的狀態,但它不會讓您推。Git可以嗎?
我猜我應該做些什麼git checkout
但我不知道該怎麼做。
感謝這個簡單問題的任何幫助:)
我希望我的git repo處於特定提交狀態。一旦回購處於該狀態,我希望能夠推送到Github,使遙控器處於該狀態。我知道我可以撥打git checkout <commit hash>
,我的本地回購將會處於特定提交的狀態,但它不會讓您推。Git可以嗎?
我猜我應該做些什麼git checkout
但我不知道該怎麼做。
感謝這個簡單問題的任何幫助:)
使用git reset --hard <commit>
重置回購到一個特定的提交。
這將使您失去工作目錄更改並在commit
之後執行任何提交。您仍然可以從git reflog
獲取較新的提交,然後在這些提交中使用git reset
。
此外,如果您已經推送了其他提交,則必須避免在沒有提交的情況下推送到遠程。
你需要強制推動,因爲你將失去歷史。
git push -f origin master
這將強制推送您的更改。如果您試圖撤銷某些內容,則可能需要考慮git revert
,因爲它可以讓您保留歷史記錄。
好的謝謝。我決定反對'git revert',因爲它在當前提交和我想提交的時間之間存在很大的差異。 – icnhzabot 2011-05-21 23:22:54
爲什麼?還原是可以恢復的。失去的歷史不是。 – vcsjones 2011-05-21 23:50:18
我認爲'git revert'是正確的方法,但OP將不得不恢復HEAD和目標提交之間的每個單獨提交,對吧?除非有另一種方式直接使用單個git命令來完成此操作。 – Jeet 2011-05-22 00:21:31