gitなどのバージョン管理システムでコミットをグループ化するにはどうすればよいですか


9

1つの長いフラットなコミット履歴の代わりに、階層がないのはなぜですか。そのため、トップレベルでプルリクエストがあり、レベルを下げてそのPRのコミットを確認できます。PRはgithubに固有のものであると思いますが、あなたはそのアイデアを理解しています。たとえば、いくつかのコミットを機能やバグ修正としてグループ化することを意味します。

確かに、コミット履歴をナビゲートしやすくなります。

この質問には明白な答えがあると思いますが、それを見つけることができないようです。


1
ユーザーインターフェイスは、おそらく表示とナビゲーションのためにコミットをグループ化できます。しかし、(非常に一般的でワークフローにとらわれない)コアに配線するのに十分なほど普遍的に役立つとは思えません。

コミットが論理的に異なる場合は、それらをグループ化しないでください。それらが論理的に1つの変更の一部である場合、それらは1つのコミットである必要があります(それがすべてのリベースに関するものです)。そして、それらが関連している場合、それらはほとんど一緒であり、とにかく見つけやすいでしょう。
Jan Hudec、

これは、ブランチを使用しないで説明したように行われ、機能ブランチを確認します。
iveqy 2014年

gitを設計した人に聞いてみてください。彼らがなぜ彼らが設計を決定したのか知っているはずです。
2014年

概念的にポスターに同意します。何かが特定の方法で動作するという事実、今では、それがいることを意味するものではありませんはず。個人的には、「スカッシュマージ」を頻繁に使用して、いくつかのコミットを1つにまとめ、それをマスターブランチに入れています。マスターで見たいディテールのレベルは、例えば開発よりも高いです。その問題は、新しく作成されたスカッシュコミットとそれを発生させたコミットとの間に基本的に関係がないことです。複数のコミットを1つにグループ化できることは確かに想像できます。それ自体、前後に明確なコミット
Daniel Langdon

回答:


9

変更は順次的であるため、1つの長いフラットコミット履歴があります。それぞれが「前」の状態に基づいて構築され、「後」の状態を残します。これを反映しない変更を行うのは難しいでしょう。

-関連する変更をグループ化するための1つのオプションは、タグを使用することであるhttp://git-scm.com/book/en/Git-Basics-Taggingを彼らはより多くの歴史の中でポイントにタグを付けるのではなく、異種のコミットをグループ化するために使用されているけれども。

コミットをより大きなものにグループ化するには、インタラクティブなリベースを行うこともできます。

ブランチは1つのオプションです。ブランチを作成し、論理的に関連する一連のコミットを実行できます。おそらく--no-ffオプションを使用して、これらのコミットを必要に応じてマスターにマージできます。

ブランチ間の関係は、gitg / gitxなどのビジュアルツールでも確認できます ここに画像の説明を入力してください


0

Git その親ブランチに番号を付けることに気づくまで、私はこれについて同じ問題を抱えていました。これが与えられれば、通常生成される厄介なマージコミットはサマリーノードと見なすことできます。また、すべての余分な詳細を表示から除外して、単一の要約された線形履歴を残すことができます。

詳細と例については、このブログ投稿を確認してください。


0

コミットをブランチにグループ化します。各ブランチはコミットのセットです。コミットをマージするときは、1セットのコミットを別のブランチ内に置き、コミットの階層を効果的に構築します(メインブランチ、機能、バグ、実験など)。

理想的には、メインブランチは一連のマージコミットです。最初の親だけを見る場合(gitコマンドはそのようなオプションを受け入れます)、履歴の高レベルのビューが表示されます(うまくいけば、自動生成されたコミットではなく、意味のあるマージコミットを記述します)。ただし、履歴でマージの2番目、3番目などの親を見ると、ボックスを開いて、マージの内容を確認できます。ここに何が起こったかの詳細があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.