2017-08-31 108 views
0

由於產品需求的變化,我需要做一些看起來不自然的事情。長話短說我需要基於舊提交的提交,將更改提交到主分支,然後獲取之前的主分支並將其放在該提交之上。由於Git和SourceTree的用戶敵意,應該是一個5分鐘的工作花了一個多小時,並導致了似乎是5個分支。Git,違規提交

我會試圖找出我在下面試圖做什麼,所以它更有意義。也許最簡單的底部閱讀頂部:

[]    <- New master which is Commit A minus an old file 
[] ---\   <- Branch B is merged 
[] \ []  <- Branch A is merged 
[] [] []  <- Branch A is based off another, way older branch, code just cut and paste in. Branch B is the same as Commit A minus an old file 
[] /--/   <- Commit A gets two branches 

我幾乎在這裏失去了我的心,不知道該怎麼尋找和不知道如何做到這一點,因爲很顯然,我不能只是分支的兩倍並重新提交。根據SourceTree的說法,當我試圖從上面的例子中將Master B合併到分支B中時,它不做任何事情,它只改變一個事物並忽略分支B中的所有其他更改(實質上使主分支與分支A相同這是我想要避免的)。然後,我嘗試重新裝配主人,然後,在做完這些事情之後,它將分支A從主線上拋下,這不是我想要做的。在這一點上,我有4個分支合併和/或浮動在一個主分支,射過它的一切。我不關心它看起來乾淨,我只需要妥善合併。

謝謝

+3

建議:不要考慮*分支*。只考慮*提交*。你想要的提交順序是什麼?每個提交的父項應該是什麼,其相應的源代碼樹應該是什麼?把它們畫出來(在白板上,紙上,不管)。只有當你把所有這些想出來的時候,你應該關注分支*名字*。這是因爲這也是Git的工作原理,所以你將在這一點上做好準備,讓Git實現你想要的。 (另外,我認爲你已經到了這一步的一半了!) – torek

+0

聽起來像一個5分鐘的工作'git rebase -i' – o11c

回答

0

我敢肯定,這不是做事的正確方法,但-torek讓我在正確的軌道上;考慮提交而不是分支機構。所以,我只是在兩個不同的提交中剪切並粘貼所有文件。現在一切都是有序的,除了枝條無處可去,但無論如何,它們都會腐爛。

謝謝。