2015-07-21 358 views
3

我看到一个命令行参考,推荐使用git pull --rebase --ff-only。我认为git会拒绝这一点,但事实并非如此。git pull --rebase --ff-only会做什么?

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

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

+0

[git pull --rebase和git pull之间的区别-ff-only]可能的副本(http://stackoverflow.com/questions/25430600/difference-between-git-pull-rebase-and-git-只是拉 - ff) – Avalanche

+1

不,这不是重复的。这是'--rebase'和'--ff-only'的组合,传递给'git pull'。 – sschuberth

+0

也许建议应该是rebase或--ff-only,因为默认行为会自动提交合并。 –

回答

4

[编辑,2016年12月4日:自Git版本2.6起,git pull不再是脚本,因此不再容易看到它的作用,下面的技术细节不再适用。但是--ff-only合并时,不重订的时候还是唯一有用的。]

git pull脚本(你可以自己查看,比如,less $(git --exec-path)/pull)目前分离出来--ff-only到名为$ff_only变量,它随后被完全忽略,如果它卷起做一个rebase:

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

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

相关问题