git pull 的警告訊息
git pull -使用 git 2.27.0
或更高版本時, git pull
出現警告,可使用
git config pull.rebase false
除去。
但依狀況我更建議用 git config pull.ff only
。
Why
使用 git 2.27.0
以上版本時, git pull
命令會出現下列警告,
hint: Pulling without specifying how to reconcile divergent branches is hint: discouraged. You can squelch this message by running one of the following hint: commands sometime before your next pull: hint: hint: git config pull.rebase false # merge (the default strategy) hint: git config pull.rebase true # rebase hint: git config pull.ff only # fast-forward only hint: hint: You can replace "git config" with "git config --global" to set a default hint: preference for all repositories. You can also pass --rebase, --no-rebase, hint: or --ff-only on the command line to override the configured default per hint: invocation.
What
- rebase
-
會在本地和遠程維護一個分支,如果兩者沒衝突則會直接接在後面不會產生新的
commit
。
而在一般情況下會是,下面這樣的
- fast-forward
-
快進模式,如果源頭沒有變動也沒有衝突則
commit
會直接接在後面不會產生新的commit
。
How
這是在 Git 2.27
後中增加的。
主要是希望在進行拉取時指示如何處理,有三個建議:
你可以將 git config
改為 git config --global
作為所有存儲庫的默認。
git config pull.rebase false # 合併(默認策略) // (1) git config pull.rebase true # rebase // (2) git config pull.ff only # fast-forward only // (3)
-
這會跟之前一樣並消除警告。
-
等同
git pull --rebase
。 -
只有在本地分支可以快進時才執行拉取。如果有衝突會直接中止並顯示錯誤消息(不會創建任何提交)。
這實際上是在遠程分支之上提交,在本地和遠程維護一個分支(與涉及兩個不同分支的默認行為不同 - 一個在本地,另一個在遠程 - 並且,為了將兩者結合起來,執行合併)。
上面的命令都能抑制警告,但作用不同。
若實際上,有不同的需求則可直接使用參數來取代 config
的設定。
若設定為 git config pull.ff only
而在需要用到
rebase false
可以使用 git pull --no-ff
;需要用到
rebase true
可以使用 git pull --rebase
。
在 Git 2.29
或更高版本,也可以設置 pull.ff [false|true|only]
。
-
git config pull.ff true
默認。如果可能,拉取快進,否則合併。 -
git config pull.ff false
拉取永遠不會快進,並且總是會創建合併。 -
git config pull.ff only
如果可能,拉取快進,否則中止並顯示錯誤消息。