2010-04-22 224 views
2

我對Git比較陌生,而且我對它還不是很滿意。現在,我正在尋找可以使當前分支看起來像另一個分支的命令/選項/魔法;即合併它們,但是當發生衝突時,總是選擇合併到當前分支中的分支中的差異。Git:使一個分支完全像另一個分支

我的情況就是這樣;我在「主」分支上有一個穩定(ish)的應用程序。我還有另一個分支,稱爲「功能」。我基本上想要更改/添加/刪除功能,直到我喜歡我正在處理的新功能。一旦我覺得它已經準備好了,我想讓主分支看起來與特性分支相同。

我知道這可能不是最佳實踐,但正如我所說,我是Git的新手。我計劃在未來學習如何做更復雜的事情,但現在,這就是我所需要的。

謝謝,所以!

+0

[用於製造像另外一個分支的git命令]的可能的複製(HTTP://計算器。com/questions/4911794/git-command-for-making-one-branch-like-another) – 2015-10-26 21:26:03

回答

2

分支只是提交圖中的指針。您可以將git-reset分支指向您喜歡的任何位置,只需確保在進行任何進一步提交之前簽出預期的分支。

+0

換句話說,我找到了我在功能分支上進行的最後一次提交的提交ID,切換到主分支,並對該提交ID執行git reset --hard,使得HEAD與特性分支相同內容?那會發生什麼? – 2010-04-23 14:11:47

+0

是的。我應該強調,這只是一個方法;在許多情況下,您最好使用從功能分支合併到您的主服務器的「傳統」工作流程。我會補充說git中的合併很聰明;他們不像CVS和SVN下的事情。 – crazyscot 2010-04-23 22:26:50

4

對不起!通過回答之前沒有看完呢......

git checkout master 
git merge feature 

因爲你支feature關閉呢?這將毫不費力地工作,如果你還沒有做出任何更改master

你正在試圖做的就是分支和合並應該工作的方式。在分支上開發您的功能,當您擁有穩定的功能並像您希望的那樣工作時,將其合併回主分支。

+0

如果我對可能導致衝突的主進行更改,該怎麼辦?我想我應該提到這種可能性,因爲我可能需要對小事做出改變。 – 2010-04-22 22:56:05

+0

@G。馬丁AFAIK應該沒有問題。在功能分支上執行'git checkout master'會出現任何合併問題。一旦你解決了master分支上的'git merge feature'應該沒有任何問題。 – 2010-04-22 23:56:28

3

我知道這是前一段時間要求,並有幾個答案了,但我想我會提供我的2美分:如果你希望做一個git merge

,你不希望擔心合併衝突(總是喜歡一個分支上的更改),那麼您可以使用git merge branch -X oursgit merge branch -X theirs。有關於此的更多解釋請參見 https://stackoverflow.com/questions/13594344

但是,我認爲git rebase會更有意義。一些優點/缺點在Rebase vs. Merge page。合併意在保留髮生的事件的歷史記錄,包括合併本身,但從您的問題的聲音看來,您似乎只想跟蹤應用程序開發中的事件,隱藏了您曾經擁有過的事實首先是一個單獨的分支。

0

接受的答案(「分支只是指針......」)對我來說並不好,因爲我不僅需要我的分支看起來像另一個分支 - 我只需要應用另一個提交(不是在我的分支目前的歷史中失去了任何提交)。

我喜歡這種方法制造分公司A看起來像支B

git checkout B git diff A > patch_to_make_A_like_B git checkout A git apply patch_to_make_A_like_B

(和rm patch_to_make_A_like_B末。)

相關問題