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
时会被忽略。
我看到了推荐 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
时会被忽略。