簡體   English   中英

如何將推送的提交還原為未分級?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM