2

しばらくの間、私は次のような変わった方法で Git を使用していました。

  1. git checkout -b feature123
  2. 小さな編集、コミット、繰り返し
  3. git checkout master
  4. git merge --squash feature123
  5. の出力を使用git log --onelineして、次のようにコミット メッセージを設定します。
機能 123 を実装し、ブローブをフラッディングする

ここに長い詳細な説明があります。
    
         f5d1b77 REFACTOR: 抽出方法
         1c1346e REFACTOR: `A` を `B` に名前変更
         63457deなど
         884fga1 フローブ

作成したい動作の変更が簡単になるまで、リファクタリングの作業モードが特に気に入っています。行き詰まった場合は、いつでも最後のコミットにロールバックできます。動作の変更とリファクタリングは分離されており、動作の変更は単純で明白であるため、コミット履歴を読むのは簡単です。

Microsoft で Source Depot と一緒に働いていたときに、この習慣を身につけました。ブランチに対して一連の小さなコミットを行い、上流のブランチを 1 つのコミットとしてマージすることができました。+そのマージコミットをその隣に表示するGUIツール(gitkに似ています)がありました。拡大して、必要に応じて詳細を確認できます。すごくいい。Gitでそれを複製しようとしていました。

詳細にドリルダウンしたい場合、GitHubはそれらのコミットSHAを個々のコミットへのリンクにします。ただし、それは一部のコミットでのみ行われ、残りはリンクになりません。

ここに画像の説明を入力

これは明らかに Git での通常とは異なる作業方法です。ツールが改善される可能性は低く、他のプログラマーはこれを見て混乱する可能性があります。

通常、Git フィーチャー ブランチをマージした後は、それを削除できます。これを保持する理由はあまりありません。しかし、この場合、ブランチを削除すると、個々のコミットが消えてしまい、GitHub でそれらをクリックすることができなくなります。そのため、これらの古いブランチは、役に立たなくても雑然としています。どうすればそれらを取り除くことができますか?

たぶん、リベースの魔法の呪文ですか?

4

1 に答える 1

4

私があなたの意図を理解している限り、あなたの要点は、必要に応じて詳細を含む簡単な歴史を持つことです.

押しつぶされたマージを行う場合、(明示的な参照を追加しない限り) 元のコミットに直接アクセスする方法はなく、git は (最終的に) 到達不能なコミットをすべてクリーンアップします。

したがって、元のブランチの参照を保存する方法が必要です。これを行うのに最も自然な場所は、まあ、マージ コミット自体です。これにより、正確に、押しつぶされていないマージが行われます。

したがって、私の提案は、履歴を表示するときに定期的にマージして重要なコミットをフィルタリングすることgitk --first-parentです。これにより、メイン ブランチのコミットのみが表示され、サイド ブランチは除外されます。(つまり、最初のアプローチでマージを打ち消すときに取り除くものです。)

于 2013-03-15T06:14:47.837 に答える