我已將主分支合併到我的功能分支中。然而,承諾並不順利。並且它弄虛作假來自主人的變化。功能分支45款進取,這些都是最新的4領先它承諾:達到某個提交併放棄提交之前的所有提交
現在我需要達到提交a3aec79。並放棄在此特定提交後完成的所有提交。
我已將主分支合併到我的功能分支中。然而,承諾並不順利。並且它弄虛作假來自主人的變化。功能分支45款進取,這些都是最新的4領先它承諾:達到某個提交併放棄提交之前的所有提交
現在我需要達到提交a3aec79。並放棄在此特定提交後完成的所有提交。
如果要撤消合併提交,並設置您的特性分支的確切狀態時,它是正確的前主人被合併到它,那麼你可以這樣做:
git checkout feature
git reset --hard HEAD^
這是假設有自從您完成合並後,功能分支中沒有其他任何操作。
HEAD^
git cli中的簡寫符號表示「之前的提交」。在你的情況下,功能分支指向一個特定的提交。由於我們知道commit是一個合併提交(將主合併到特徵分支中),因此我們知道該合併提交的第一個父代將是特徵分支的前一個狀態。 git reset
命令將帶您當前的分支,並強制它指向不同的提交。所以,我們通過運行上面的命令和中提琴來使用這兩個事實!你的業務。
爲了安全起見,您可以查看較新的分支。
git checkout -b bug_fix
你可以得到的承諾,你要切換到ID及使用方法:
git revert <commit_id>
爲了什麼我可以告訴,你只需要做一個git reset a3aec79
。如果您想放棄工作副本更改,請使用--hard
標誌。
如果您已經提交了提交,則必須使用git push --force
。在這種情況下,將更好地恢復而不是重置。
這就是我最終解決這個問題的方法。
第1步:使用reset hard命令和提交的sha,直到你想要遍歷的地方。我的情況是git reset --hard a3aec79c1f47f6d8df95f61236fc212556b5c224
。 如果你檢查狀態,你會發現你的分支背後已經推動提交。此時不要拉動更改。
步驟2:創建從當前版本使用新創建的分支功能/問題
git checkout -b new_branch_name
工作一個新的分支。