2012-12-19 90 views
0

我想了解當用兩種不同的代碼合併時,git尋找什麼。git如何合併工作?

當它刪除代碼或插入

所以,如果我有代碼

Foo.java(這是我的代碼)

class Foo { 
    void hello(){} 
    void bye(){} 
    void gone(){} 
} 

Foo.java(代碼被提取和合並)

class Foo{ 
    void hello(){} 
    void wait(){} 
    void bye(){} 
} 

如果我合併上面的代碼,請問這個

  1. 它刪除不了和再見的方法?
  2. 如果在hello方法中發生了變化,它是否會刪除我的'hello'並用提取的hello重寫它?
+1

只是說,像這樣的改變不值得一個新的分支,所以使用rebase而不是合併。 –

+0

「Foo.java」的通用基礎版本是什麼樣的? –

回答

3

首先,它不會刪除再見,它會在它上面插入wait()。它不會刪除已刪除(),除非它存在於上一個修訂版本中,並且在後續修訂中刪除了它們之間,而沒有在它們之間觸及它。如果你自己添加了()(即git沒有收到指示,應該刪除),那麼在合併文件的底部會找到()()。像這樣:

class Foo{ 
    void hello(){} 
    void wait(){} 
    void bye(){} 
    void gone(){} 
} 

其次,它不會刪除你的hello,它只會把修改放到已存在的hello()中。

請記住,如果它不能合併,它會引發衝突,你將不得不自己合併它。它不僅僅是刪除/添加沒有人意識的東西。