2016-01-11 28 views
0

我想設置一個本地跟蹤分支,它將通過合併而不是通過rebase跟蹤遠程分支。
當我做git pull我想從遠程分支合併,而不是rebase。git:我如何配置通過合併而不是重新綁定來跟蹤分支?

當我這樣做:

git checkout -b someBranch origin/someBranch 

然後

git remote show origin 

我看到:

Local branches configured for 'git pull': 
    someBranch rebases onto remote someBranch 
Local refs configured for 'git push': 
    someBranch pushes to someBranch (local out of date) 

同樣的事情也會發生,如果我做

git checkout --track origin/someBranch 

這是以某種方式配置本地?
我該如何改變這種行爲?

回答

4

默認情況下,GIT在提取過程中執行merge。如果你正在做rebase,那麼看起來在某個時候你已經改變了這種行爲。或者有人幫忙爲你做了這些。 this article (1)和​​和this article (3)

引用 - 這一切說明了如何做相反的事:

(1) 有一個在GIT配置標誌,啓用時,從改變pull默認行爲mergerebase。檢查你是否設置了它:

# git >= 1.7.9: 
git config --global pull.rebase 
git config pull.rebase 

在新的GIT客戶端,它的工作直觀。它被啓用,如果它是true。只需關閉標誌。

然而,在較舊的版本中,它的工作原理不同。

# git < 1.7.9: 
git config --global branch.autosetuprebase 
git config branch.autosetuprebase 

# and also 
git config branch.<name>.rebase 

autosetuprebase設置爲always,git的自動設置上的每個新的分支rebase標誌。這意味着只有您可能不僅要禁用autosetuprebase,還要關閉已爲每個分支設置的rebase標誌。

(從#2)
如果你想另一種方式(即你有舊GIT客戶端和噸樹枝,你其實很介意編寫復位標誌的腳本),那麼另一種選擇是創建一個別名對於git pull這將添加--no-rebase選項,會強制它進行合併。

(from#3)
本文說每個分支rebase標誌保存在配置文件中。因此,在關閉autosetuprebase之後,似乎可以通過從該配置文件中刪除所有rebase行來快速禁用所有或某些分支的重新綁定。

相關問題