git pull --rebase --ff-only 做什么?

What does git pull --rebase --ff-only do?

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

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

编辑:我完全知道每个人做什么。

[编辑,2016 年 12 月 4 日:从 Git 2.6 版开始,git pull 不再是脚本,因此不再容易看到它的作用和下面的技术细节 no再申请。但是 --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 可能会拒绝这些不兼容的内容,因此在使用显式 --rebase.[=20 时省略显式 --ff-only 可能更明智=]

似乎 --ff-only 在使用 --rebase 时会被忽略。