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

git pull--rebase--ff只做什么?,git,git-merge,git-rebase,git-pull,Git,Git Merge,Git Rebase,Git Pull,我看到一个命令行参考,它建议使用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)/p

我看到一个命令行参考,它建议使用
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
选项将被忽略


将来,git可能会因为不兼容而拒绝这些选项,因此在使用显式的
--ff-only
时省略显式的
--rebase
,似乎
--ff-only
在使用
--rebase
时会被忽略

可能是重复的不,那不是重复的。它是
--rebase
--ff only
传递给
git pull
的组合。可能建议应该是rebase或--ff,因为默认行为会自动进行合并提交。