3

わかりました:

svn と bzr では、ブランチ、コミット、マージが可能で、コミット履歴は次のようになります。

41: Theodore R. Smith 2013-09-14 Jump to list by name instead of number.
40: Theodore R. Smith 2013-09-14 [merge] [m] Miscellaneous cleanups.
  39.1.4: Theodore R. Smith 2013-09-14 [m] Removed old files.
  39.1.3: Theodore R. Smith 2013-09-14 [m] Fixed bug where test could not...
  39.1.2: Theodore R. Smith 2013-09-14 [m] Fixed a CSS layout bug from th...
  39.1.1: Theodore R. Smith 2013-09-14 [m] Fixed a typo.
39: Theodore R. Smith 2013-09-14 Added a progress bar.
38: Theodore R. Smith 2013-09-14 [merge] Updated the core libraries.
  37.1.3: Theodore R. Smith 2013-09-14 Updated HTML Kickstarter.
  37.1.2: Theodore R. Smith 2013-09-14 Upgraded to from jQuery 1.8.3 to 2.0.3.
  37.1.1: Theodore R. Smith 2013-09-14 Upgraded to jQuery Address v1.6.

履歴を拡張したくない場合は、次のことができます。

41: Theodore R. Smith 2013-09-14 Jump to list by name instead of number.
40: Theodore R. Smith 2013-09-14 [merge] [m] Miscellaneous cleanups.
39: Theodore R. Smith 2013-09-14 Added a progress bar.
38: Theodore R. Smith 2013-09-14 [merge] Updated the core libraries.

いつでも、マージされた個々のコミットの差分などを、たとえばを介して非常に簡単に取得できます。bzr diff -r37.1.2..37.1.3

重要なのは、ブランチの履歴が保持され、メインラインのコミット履歴がマイナーな機能のコミットによって汚染されないことです。

現在、git でフィーチャー マージを行うたびに、 の有無にかかわらず--no-ff、コミット履歴に次のように表示されます。

<hash>: Theodore R. Smith 2013-09-14 Jump to list by name instead of number.
<hash>: Theodore R. Smith 2013-09-14 [merge] [m] Miscellaneous cleanups.
<hash>: Theodore R. Smith 2013-09-14 [m] Removed old files.
<hash>: Theodore R. Smith 2013-09-14 Added a progress bar.
<hash>: Theodore R. Smith 2013-09-14 [m] Fixed bug where test could not...
<hash>: Theodore R. Smith 2013-09-14 [merge] Updated the core libraries.
<hash>: Theodore R. Smith 2013-09-14 [m] Fixed a CSS layout bug from th...
<hash>: Theodore R. Smith 2013-09-14 Updated HTML Kickstarter.
<hash>: Theodore R. Smith 2013-09-14 [m] Fixed a typo.
<hash>: Theodore R. Smith 2013-09-14 Upgraded to from jQuery 1.8.3 to 2.0.3.
<hash>: Theodore R. Smith 2013-09-14 Upgraded to jQuery Address v1.6.

これに関する私の問題は何倍もあります。

  1. 機能のマイナー コミットはすべてメインラインの履歴にあります。なんてこったい?
  2. 機能のマイナー コミットは、メインラインの履歴でごちゃまぜになっています。マージ時間ではなく、元のコミット時間に基づいてスタックしているようです;o
  3. リビジョン ID の即時の数値ランキングはなく、ランダム ハッシュのみです。しかし、それは修正不可能だと思います。
  4. これを見ると、機能ブランチがどこで終了または開始するのか、まったくわかりません。

解決策が欲しい

  1. すべてのコミット履歴を保存し、マイナーな機能のコミットを比較できるようにします。これは、コード フォレンジックに必要です。そのままgit rebaseでは、絵の外ですgit merge --squash
  2. メインラインのコミット ログを汚染しません。これはおそらく最も深刻です。
  3. マージ時間に基づいて、すべてのコミットを適切な順序で保持します。お願いします、マイナー コミットを混在させることはできません。
  4. 少なくともすべてのマイナーな機能のコミットを適切な順序で、メインラインの履歴と共に、bzr がどのように動作するかなどを確認できるようにするのが最適ですが、この情報をドリルイン コマンドで表示することしかできなくてもかまいません。のようにgit log

この非常に複雑なプログラムを理解するのを手伝ってくれてありがとう!

4

1 に答える 1

11

Git と Bazaar のグラフはまったく同じです。私は Git の公式 Bazaar ブリッジを書いたので知っています。唯一の違いは、logコマンドを使用してグラフを表示する方法です。

git logにはたくさんのオプションがあるため、グラフの表示方法を正確に指定できます。

あなたが望むのはこれのようです:

git log --oneline --graph

以下と同様の方法でマージが表示されますbzr log

*   eaaec50 Merge git://github.com/git-l10n/git-po
|\  
| * 1b5f46f l10n: Add reference for french translation team
| * 6b388fc l10n: fr.po: 821/2112 messages translated
* |   2809258 Merge branch 'sb/mailmap-updates'
|\ \  
| * | cdb6b5a .mailmap: Combine more (name, email) to individual persons
| * | 10813e0 .mailmap: update long-lost friends with multiple defunct addresses
* | | 8ed205a git-remote-mediawiki: ignore generated git-mw
| |/  
|/|   
* |   96cb27a Merge branch 'maint'

「マイナーコミット」を完全に無視することもできます

git log --oneline --first-parent

eaaec50 Merge git://github.com/git-l10n/git-po
2809258 Merge branch 'sb/mailmap-updates'
8ed205a git-remote-mediawiki: ignore generated git-mw
96cb27a Merge branch 'maint'

これらすべてのオプションを入力するのにうんざりしている場合は、エイリアスを構成できます。

git config --global alias.l 'log --oneline --graph'

したがって、入力するだけですgit l

于 2013-10-01T17:10:42.193 に答える