--no-ff是什么意思?? 和 git merge --squash 有什么区别???
--no-ff は、早送りモードを強制的にオフにすることを指します。 --no-ff指的是强行关闭fast-forward方式。
--no-ff
fast-forward方式就是当条件允许的时候,git直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情况如果删除分支,则会丢失分支信息。因为在这个过程中没有创建commit
git merge --squash 是用来把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用--squash进行合并,此时文件已经同合并后一样了,但不移动HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并。
git merge --squash
--squash
总结:--no-ff:不使用fast-forward方式合并,保留分支的commit历史--squash
git merge --squash は、いくつかの不要なコミットを圧縮するために使用されます。たとえば、機能の開発中に書き込まれたコミットが非常に乱雑である場合、これらの履歴コミットを削除したくありません。コミットが引き継がれるため、この時点でファイルはマージ後と同じですが、HEAD は移動または送信されません。 「まとめ」て最終的なマージを完了するには、追加のコミットが必要です。 概要: --no-ff: マージに早送りメソッドを使用せず、ブランチのコミット履歴を保持します--squash : squash メソッドを使用して、複数のブランチのコミット履歴を 1 つにマージ、圧縮します
http://git-scm.com/docs/git-merge
マージが早送りとして解決される場合でも、マージコミットを作成します。これは、注釈付き (署名付きの可能性がある) タグをマージするときのデフォルトの動作です。
--no-ff
は、早送りモードを強制的にオフにすることを指します。--no-ff
指的是强行关闭fast-forward方式。fast-forward方式就是当条件允许的时候,git直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情况如果删除分支,则会丢失分支信息。因为在这个过程中没有创建commit
git merge --squash
是用来把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用--squash
进行合并,此时文件已经同合并后一样了,但不移动HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并。总结:
早送り方式とは、条件が許せば、git が HEAD ポインタをマージされたブランチの先頭に直接指し、マージを完了することを意味します。 「早送りモード」に属しますが、この場合ブランチを削除するとブランチ情報が失われます。このプロセスではコミットが作成されないためです--no-ff
:不使用fast-forward方式合并,保留分支的commit历史--squash
git merge --squash
は、いくつかの不要なコミットを圧縮するために使用されます。たとえば、機能の開発中に書き込まれたコミットが非常に乱雑である場合、これらの履歴コミットを削除したくありません。コミットが引き継がれるため、この時点でファイルはマージ後と同じですが、HEAD は移動または送信されません。 「まとめ」て最終的なマージを完了するには、追加のコミットが必要です。 概要:--no-ff
: マージに早送りメソッドを使用せず、ブランチのコミット履歴を保持します--squash
: squash メソッドを使用して、複数のブランチのコミット履歴を 1 つにマージ、圧縮しますhttp://git-scm.com/docs/git-merge