[英]How do I revert a pushed commit back to being unstaged?
我試着尋找一個答案,但沒有發現任何匹配這個問題。 如果已有答案,請隨時將我鏈接到答案。
我所做的是提交並推送大量更改作為一次提交。 雖然我沒有將這種推動合並到主人身上。 我現在想在上演任何內容之前回到狀態,所以我可以將更改分階段提交。
我嘗試使用推送的更改創建一個新分支(保存工作),刪除原始遠程分支(用戶登錄),然后將新分支合並到原始本地分支,但這只是讓我回到我所在的位置現在,用戶登錄分支不包含任何要添加/提交的內容。
那么我如何獲得所有這些更改,以便我可以單獨審核和分階段(使用git add -p)?
如果這是一個共享存儲庫,並且如果有人已經撤消了您的提交,那么請不要嘗試修改您的歷史記錄。 如果其他人已經撤回了您的提交,那么您將要打一場失敗的戰斗,以協調對您的錯誤分支進行的任何其他提交。
如果不是這種情況,那么你需要做一些重置,重新定位和推送-f
。
例如,您可以使用相關分支上的git reset --soft <hash>
重置。 這會將分支的頭部重置為此提交,同時使所有后續提交保持未分級。 然后,您可以運行git add -p
來有選擇地一點一點地重新更新您的更改。
一旦你對分支感到滿意,你就可以用git push -f
。 這將強制覆蓋遙控器上的歷史記錄 - 但它無法刪除任何其他人可能已經拉過的歷史記錄。
git reset --soft HEAD~1
來獲取一個階段中的所有HEAD
更改。
$> man git-reset
...
git reset [<mode>] [<commit>]
...
--soft
Does not touch the index file nor the working tree at all (but
resets the head to <commit>, just like all modes do). This leaves
all your changed files "Changes to be committed", as git status
would put it.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.