2011-11-07 59 views
1

我使用的是git/github,偶然我一直致力於「主」分支而不是「4.2」。我現在已經創建了一個獨立的分支,這就是「主」應該是「4.1」,並且挑選了基本的提交。我一直在犯錯誤的Git分支。如何清理?

Merges

我現在想複製「4.1」到主,以避免我在Nov1,2,3中所做的提交和7.什麼是做到這一點的最好方法是什麼?


我一直奉行:Create git branch, and revert original to upstream state,但得到這個:

$ git push origin :master 
remote: error: refusing to delete the current branch: refs/heads/master 
To [email protected]:atk4/atk4.git 
+0

它在Github上:https://github.com/atk4/atk4/network,並有相關的問題:http://stackoverflow.com/questions/4759492/how-to-recreate-the-github-network-圖 – romaninsh

回答

1

我已經成功地恢復使用此:

# git back to my master branch 
git checkout master 

# reset branch to other branch 
git reset --hard 4.1 

# push changes and --force to avoid rejection 
git push --force origin master 

enter image description here

法師現在應該是這樣。我想知道它會如何影響那些會「拉」主人的克隆人。

+0

拉和基本相同的提取和合並。因此,進行拉取(並且已經破碎的主人)的用戶將在破碎的主人和固定的主人之間進行合併。這可能是奇怪的事情。您必須讓他們重置爲新的主服務器,如下所示:'git checkout master; git獲取原點; git reset --hard origin/master'。 – igorw

1

如果他們做了git fetch,他們將有他們的遠程追蹤分支(起源/主人)指向一個新的地方。如果他們做了git pull他們將不得不處理衝突,如果他們的工作,他們還沒有推動(如果他們也是主要工作)。取決於有多少人在這方面與你一起工作,這可能會或可能不是什麼大不了的事情。

他們應該做什麼,如果他們有主人簽出是'混帳重置 - hard origin/master`。這會失去他們沒有提交的任何提交。他們可能想要首先分手。然後,他們可以在準備好時重新設定或合併這些更改。

如果他們沒有工作過主人,他們只是想更新自己的本地master分支,他們可以簡單地

git push . +origin/master:master 

這樣您就不必檢出一個分支簡單地同步它與遠程。

+0

了不起的信息,很難得到。我很幸運可以很快注意到它,因爲用戶使用我的穩定版本,所以不會影響它們。你知道如何去做嗎?我嘗試恢復,但結束了很多衝突。我怎麼能一次性恢復所有提交? – romaninsh

+0

你需要一個好的分支策略。如果你錯誤地把東西放在主人身上,解釋情況的電子郵件很棒。無論使用什麼工具,良好的溝通都會更進一步。以下是我的分支策略:https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR –