2017-10-05 137 views
0

好吧,所以我有點混淆在這裏,不知道該怎麼辦。這裏是我的遠程分支的當前狀態恢復我還原的本地提交併重置爲主

commit_1 
commit_2 
commit_3 
... 
commit_9 
commit_prod_code 

所有的1-9提交需要移動到一個單獨的分支,我的主人應該歸還給commit_prod_code。要做到這一點,我跑這條命令,我不知道

git revert HEAD~9..HEAD 

一件事是,我沒有把no-edit標誌。因此,錯誤地結束了改變這些提交的所有「提交消息」。我不想要。

現在我的本地分支是9後面提交併與提交消息搞砸了。我想將我的分支重置爲主,並再次執行「還原」過程。

我該怎麼做。

UPDATE

這是我目前的狀態

$ git log --oneline                              [2h43m] ✭ 
36557cb revert_commit 
7f2c406 revert_commit 
9db362e revert_commit 
202446d revert_commit 
7cb109d revert_commit 
ce3ebf7 revert_commit 
ad75615 revert_commit 
e234267 revert_commit 
9285d48 revert_commit 
753e421 revert_commit 
67aa988 revert_commit 
c5c7101 revert_commit 
6386a3b revert_commit 
28aee0d revert_commit 
69c74b6 revert_commit 
0e172ec revert_commit 
5e1b1cb revert_commit 
9b21c68 revert_commit 
commit_prod_code 

我想要做的就是放棄整個這個過程還原並回到我原來的主狀態。這個還原的代碼沒有被推到任何地方

我試着做git reset --hardgit reset --hard HEAD^但最後它仍然告訴我,我的分支是9提交在它之前。

所有我想要做的是取消所有這個逆向工程&過程中,不推這些還原更改上游和我的分支重置爲遠程頭

+0

並遠程分支目前有哪些提交? –

回答

1

你可以做一個硬復位,回到一個具體的承諾:

git reset --hard commit_prod_code 

或者,您可以硬重置到您的原點的分支:

git reset --hard origin/master 

請注意,你會「失去」所有提交的,但聽起來好像這就是你は什麼nt做。

避免git revert。這只是創建了新的提交,它們會顛倒之前的提交,當您嘗試合併回您的主分支時,這可能會讓事情變得非常糟糕。如果提交將其設置爲共享分支,則只應使用revert。我使用了revert一次,它具有取消其他人的更改的效果,因爲它看起來像我特別想要刪除一些行,而不僅僅是「不添加它們」。


根據您的更新,它看起來像您基本上重寫了您的分支歷史記錄。你需要做的是回到你的分支中不存在的原始提交。不要害怕......他們沒有離開!

首先,運行git reflog查看您簽出的所有提交的完整歷史記錄。滾動查看歷史記錄,直到找到要重新開始的提交,然後運行get reset --hard <commit-hash>

現在你已經回滾了你討厭的還原提交。

接下來,運行git checkout -b <new-branch-name>。這將創建一個以當前提交作爲頭部的新分支,允許您保留最近恢復的提交。

最後,回到你的主分支和運行git reset --hard origin/master讓你的主分支早在您的服務器完美同步。

如果您的服務器被搞砸了,那麼你就需要通過(danger, danger, danger)git push --force(danger, danger, danger)運行git reset --hard <commit-hash-you-want>緊隨其後。如果您有其他人與您一起處理此回購協議,那麼您需要警告所有人您即將更改主分支歷史記錄。這可能需要對您在服務器搞砸之後創建的任何分支進行一些清理。

+0

我不想失去所有這些變化。代碼的**當前**狀態將停放在單獨的分支中。問題是,我如何重新設置我的當前分支爲主(我想擺脫這種反彈的一段時間)。我嘗試了'git reset --hard',但它仍然顯示我的分支是** 9落後** –

+0

恢復只會添加一個新的提交,所以您應該能夠在恢復之前重置爲提交。 – JDB

+0

也許我不清楚我的問題。我該如何放棄目前還未提交的還原過程。我想重啓master,但是git reset --hard沒有幫助 –

0

嘗試建立從第九一個新的分支承諾:

git branch newBranch <SHA-1 of 9th commit> 

現在newBranch應該有9條坐在commit_prod_code頂部提交。如果您打算將這9個提交放在另一個基礎上,我們可以嘗試挑選櫻桃或使用rebase。

你可以在這裏完成,因爲你已經做了一個合併提交其撤銷承諾1-9原來的分支。