git pull --rebase --ff-only是什么意思?

3
我看到一个命令行参考建议使用git pull --rebase --ff-only。我认为git会拒绝,但它并没有。组合--rebase--ff-only是什么意思?编辑:我非常清楚每个单独的参数的含义。

可能是git pull --rebase和git pull --ff-only之间的区别的重复问题。 - Avalanche
1
不,这不是重复的。这是关于将 --rebase--ff-only 一起传递给 git pull 的组合。 - sschuberth
也许建议应该是使用rebase或--ff-only,因为默认行为会自动创建合并提交。 - Joseph K. Strauss
2个回答

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会拒绝这些不兼容的内容,所以使用显式的--rebase时最好不要包含显式的--ff-only

0

使用 --rebase 时,似乎会忽略 --ff-only


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接