2012-09-24 61 views
4

我正在使用git-flow,但這並不重要。我的主分支是生產,我的開發分支是爲了開發。不知何故,我的git develop分支被合併到我的主分支中

今天早上,我的主分支(這是我的產品發佈)在幾周之內(從我上次發佈以來)沒有被觸及。現在,當我看着我的主分支,它擁有我的開發分支的所有提交。

我沒有在git log中看到合併,所以我很困惑我如何讓我的主分支恢復到無聊的自我。

我怎樣才能找到這個胭脂合併到我的主分支和扭轉它,而不會失去我的開發工作?

編輯:

這是否提供了足夠的信息來知道發生了什麼事?

這裏是git reflog輸出:

0fe067c [email protected]{0}: pull: Fast-forward 
300ba32 [email protected]{1}: checkout: moving from develop to master 
06f1dd9 [email protected]{2}: pull: Fast-forward 
0fe067c [email protected]{3}: commit: Add back prefix. 
815ffe8 [email protected]{4}: pull: Fast-forward 
f4c3e23 [email protected]{5}: pull: Fast-forward 
93d1037 [email protected]{6}: pull: Fast-forward 
e027c53 [email protected]{7}: commit: Don't commit changes to Prefix 
96e37a9 [email protected]{8}: commit: Update URLs based on current server 
+0

在發佈到生產之前,您是否標記了您的主人? – 2012-09-24 19:30:12

+0

如果我不得不恢復到特定的提交,我可以這樣做,但我寧願找出發生在這裏的事情,所以它不會再發生。 – Eric

+0

你可以搜索'git reflog'以獲得更多關於可能發生的事情的信息 – CharlesB

回答

0

好吧,如果合併已經快進,它不會產生一個合併提交這可能是發生了什麼事。

那麼,從那裏,我們去哪裏?

好吧,如果你有一個遙控器仍然指向好提交,你可以很容易地重新設置你的本地分支:

git reset --hard origin/master(其中remote/branch

否則,它更復雜一點,但依然:您可以篩選引用日誌只記錄主信息:

git reflog show master

如果記錄的信息是有意義的,那麼你可以重新設置:

git reset --hard [email protected]{1}

注意--hard將放棄對工作樹的所有局部的變化,如果這是一個麻煩,使用--keep

0

您是否在發佈時標記了您的製作分支?

你對上一個版本的sha1有什麼想法嗎?

我喜歡Simon Boudrias的回答,但它可能很簡單,只需使用git log找到您想要的提交併將分支重置爲提交git reset --hard <sha1>

注意:您可能需要首先重置--hard部分,以確保它在不丟失信息的情況下將您帶到想要的位置。由於您沒有刪除「開發」中的任何提交,因此您不會失去提交(只要沒有人直接在生產中進行開發)。

相關問題