2016-06-13 330 views
1

我的團隊最近從Using Perforce轉換爲Git進行源代碼管理。我無法找到一個好答案的一個問題是如何正確地將來自origin:master的更改更改集成到我的要跟蹤原始特徵的分支(兩個開發人員正在提交到分支中)。Git將主合併到遠程跟蹤功能分支

我試圖從主執行一個合併,但後來我看到一個合併提交,它顯示了我在當前分支中修改的所有文件。這是預期的嗎?

請注意,我的團隊正在使用SourceTree而不是命令行。

+2

是的,合併創建一個新的提交與兩個父母,_merging_兩個分支的歷史。如果兩個分支中的相同文件都發生了變化,您將看到此提交通過導入其他分支的更改來修改這些文件。 – Useless

+0

這是一個真正的合併或非快速合併。將BranchA合併到BranchB將BranchA的所有提交引入到BranchB中。如果BranchB的頭部是BranchA頭部的祖先,則會進行快速合併。即使是快速前進的情況,選項'--no-ff'也可以將合併解析爲真正的合併。如果你只需要一些BranchA的提交,你可以使用'git cherry-pick'或'git merge'來代替。 – ElpieKay

回答

1

如果功能分支由多個團隊成員使用merge是最好的選擇,在其他情況下,我更喜歡使用rebase

默認情況下,合併是快進(--ff),只要有可能,如果不是(conflits等),它們將不會快速轉發(--no-ff)。

當它們沒有被快速轉發時,它們會產生一個額外的合併提交(就像你的情況),並帶有一條消息告訴我們關於合併分支(和父母提交參考)。

某些people(和工具如GitHub)更喜歡強制--no-ff合併以提高git日誌的可讀性和清晰度。

相關問題