我看到一个命令行参考建议使用
git pull --rebase --ff-only
。我认为git会拒绝,但它并没有。组合--rebase
和--ff-only
是什么意思?编辑:我非常清楚每个单独的参数的含义。git pull --rebase --ff-only
。我认为git会拒绝,但它并没有。组合--rebase
和--ff-only
是什么意思?编辑:我非常清楚每个单独的参数的含义。[编辑,2016年12月4日:自Git版本2.6以来,git pull
不再是一个脚本,因此不再容易看到其功能,下面的技术细节也不再适用。但在合并时,--ff-only
仍然只有用处,而在变基时则没有用处。]
git pull
脚本(你可以自己查看,例如:less $(git --exec-path)/pull
)目前将--ff-only
分离成一个名为$ff_only
的变量,如果它最终进行变基,则完全忽略它:
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
选项被忽略了。--rebase
时最好不要包含显式的--ff-only
。使用 --rebase
时,似乎会忽略 --ff-only
。
--rebase
和--ff-only
一起传递给git pull
的组合。 - sschuberth