簡體   English   中英

不知怎的,我的git develop分支被合並到我的主分支中

[英]Somehow my git develop branch got merged into my master branch

我正在使用git-flow,但這並不重要。 我的主分支是生產,我的開發分支是開發。

今天早上,我的主分支(這是我的產品發布)幾周沒有被觸及(自我上次發布以來)。 現在,當我查看我的主分支時,它包含了我的開發分支的所有提交。

我沒有在git log看到合並,所以我很困惑如何讓我的主分支回到它無聊的自我。

如何找到這個rouge合並到我的主分支並反轉它而不會丟失我的開發工作?

編輯:

這是否提供了足夠的信息來了解發生了什么?

這是git reflog的輸出:

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

好吧,如果合並已經快速轉發,它將不會創建合並提交,這可能是發生的事情。

所以,從那里,我們去哪里?

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

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

否則,它有點復雜,但仍然:您可以過濾您的reflog以僅記錄主信息:

git reflog show master

如果記錄的信息有意義,那么您可以重置:

git reset --hard master@{1}

請注意--hard將丟棄對工作樹所做的所有本地更改,如果這是一個麻煩,請使用--keep

你發布時是否標記了生產分支?

你對上一版的sha1有什么看法嗎?

我喜歡Simon Boudrias的答案,但它可以像使用git log定位你想要的提交並將分支重置為提交git reset --hard <sha1>

注意:您可能希望在沒有--hard部分的情況下重置,以確保它能夠將您帶到您想要的位置而不會丟失信息。

git co production
git log # find the sha1
git reset <sha1> # to check if this is the point you want
git co production
git reset --hard <sha1>

由於您沒有從“開發”中刪除任何提交,因此您不會丟失提交(只要沒有人直接在生產中開發)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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