git拉什么--rebase --ff-only呢?

时间:2015-07-21 20:33:36

标签: git git-merge git-rebase git-pull

我看到了推荐git pull --rebase --ff-only的命令行参考。我认为git会拒绝,但事实并非如此。

--rebase--ff-only的组合是什么意思?

编辑:我完全知道每个人的所作所为。

2 个答案:

答案 0 :(得分:4)

[编辑,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选项会被忽略。

将来,git可能会拒绝这些不兼容的内容,因此在使用明确的--ff-only时,忽略明确--rebase可能更明智。< / p>

答案 1 :(得分:0)

使用--ff-only时,系统会忽略--rebase