開発中に、私はしばしばコミットし、 "中間"コミット、つまりコードをコンパイルできないか、何かを変更する途中などでコミットする必要があります。そのようなコミットを行いますが、これはオフィスから家への私の仕事を簡単に続けるために必要です。時には他の開発者が自分の仕事を始めるための基礎を得ることもあります。あるブランチから別のブランチへのコミットを含まずにGitをマージする
私はその問題の解決策を見つけたと思った:
私は別の「DEV」ブランチを作成し、すべての中間のコミットを作ります。
コードが正常な状態になったら、マスターにマージします。したがって、マスターには「中間」コミットは含まれず、「通常」コミットだけが含まれます。
"dev"ブランチをすべての中間コミットで削除します。
しかし、これは機能しません。私がマージすると、マージコミットだけでなく、すべての "中間"コミットも "dev"ブランチからコミットされます。したがって、 "dev"ブランチを削除すると何も得られません。 "中間"コミットはそこにとどまります。
質問には次のようなものがあります:マスターが自分自身のコミット+マージコミットのみを含み、2番目のブランチからのコミットを含まないようにマージすることは可能ですか?不可能な場合は、目標を達成する方法を教えてください。中間結果を一時的に保存する機能と、後でシームレスに削除する機能がありますか?
彼は他の開発者とこれらのコミットを共有しているので、スカッシュは良い考えですか? – jszakmeister
+1は 'git rebase -i'と言います。そして、人々は本当にローカルのdevブランチについて知りませんでした。 –
@jszakmeister、彼は地元のdevブランチの変更をマスターのローカルチェックアウトにマージしているので、それは問題ありません。彼が変更をプッシュすると、他の開発者には変更が1つの大きなコミットであるかのように見えます。言い換えれば、squashingは複数の "Oops。Fix typo"の代わりに "Add a new feature"という1つのコミットを持つことができます。 –