2015-07-21 213 views
3

我看到一個命令行參考,推薦使用git pull --rebase --ff-only。我認爲git會拒絕這一點,但事實並非如此。git pull --rebase --ff-only會做什麼?

--rebase--ff-only的組合是什麼意思?

編輯:我完全知道每個人都做了什麼。

+0

[git pull --rebase和git pull之間的區別-ff-only]可能的副本(http://stackoverflow.com/questions/25430600/difference-between-git-pull-rebase-and-git-只是拉 - ff) – Avalanche

+1

不,這不是重複的。這是'--rebase'和'--ff-only'的組合,傳遞給'git pull'。 – sschuberth

+0

也許建議應該是rebase或--ff-only,因爲默認行爲會自動提交合並。 –

回答

4

[編輯,2016年12月4日:自Git版本2.6起,git pull不再是腳本,因此不再容易看到它的作用,下面的技術細節不再適用。但是--ff-only合併時,不重訂的時候還是唯一有用的。]

git pull腳本(你可以自己查看,比如,less $(git --exec-path)/pull)目前分離出來--ff-only到名爲$ff_only變量,它隨後被完全忽略,如果它捲起做一個rebase:

case "$rebase" in 
true) 
     eval="git-rebase $diffstat $strategy_args $merge_args $rebase_args $verbosity" 
     eval="$eval $gpg_sign_args" 
     eval="$eval --onto $merge_head ${oldremoteref:-$merge_head}" 
     ;; 
*) 
     eval="git-merge $diffstat $no_commit $verify_signatures $edit $squash $no_ff $ff_only" 
     eval="$eval $log_arg $strategy_args $merge_args $verbosity $progress" 
     eval="$eval $gpg_sign_args" 
     eval="$eval FETCH_HEAD" 
     ;; 
esac 
eval "exec $eval" 

這是什麼意思最後是你的--ff-only選項被忽略。

有可能在未來,git可能會拒絕這些不兼容的東西,所以當使用明確的--rebase時,可能會明智地省略明確的--ff-only

0

似乎--ff-only在使用--rebase時將被忽略。

相關問題