23

git を VCS として使用する大規模なプロジェクトに取り組んでいます。いつでも、いくつかの機能/バグ修正などの実装に取り​​組んでいます。特定の機能/バグについては、ブランチの階層を作成すると便利です-たとえば

$ git branch
  feature1
       sub-branch1
       sub-branch2
       sub-branch3
  feature2
       sub-brancha
      *sub-branchb  #<--currently checked out
       sub-branchc
  bugfix1
       sub-branch-foo

$ git checkout sub-brancha
$ git branch
  feature1
       sub-branch1
       sub-branch2
       sub-branch3
  feature2
      *sub-brancha  #<--currently checked out
       sub-branchb  
       sub-branchc
  bugfix1
       sub-branch-foo

このようなことは可能ですか、それともより原始的な命名方式を採用する必要がありますか?

編集

私が探しているものをもう少し具体的にするために、feature1 が git ブランチの場合、上記の例では、sub-branch1 はすべてブランチ (master からブランチされている) から作成されgit checkout -b sub-branch1ますfeature1。例えば:

$ git checkout master
$ git checkout -b feature1
$ git checkout -b testing
$ git branch
master
   feature1
     *testing
$ git checkout master
$ git checkout -b feature2
$ git branch
master
   feature1
      testing
  *feature2

git branch を単純に、ブランチがどこから来たか (少しインデントを追加) で整理するだけで、おそらく私の目的には十分です。

$ git branch
  feature1
       testing
  feature2
       testing
  bugfix1
       sub-branch-foo

「feature1/testing」と「feature2/testing」の間の名前の競合を管理する方法

4

3 に答える 3

19

feature1/sub-brancha、feature2/sub-branchb などの命名スキーマを使用できます。名前のスラッシュは git の問題ではありません。ただし、ブランチは引き続き通常のブランチとして処理されます (ただし、サブブランチを別の方法で処理する方法はわかりません)。git branch コマンドは、もちろんブランチを完全な名前で一覧表示し、例のようには表示しません。

興味深いことに、スラッシュを含む命名スキーマにより、.git/refs/heads/ にディレクトリ階層が作成されます。低レベルのコマンドでサブブランチを処理するのに役立つのではないでしょうか?

于 2012-06-15T13:34:14.657 に答える
3

Git のブランチは、実際には、Git のオブジェクト ストア内のキーへのシンボリック リファレンスです。ドキュメントを引用するには(「ブランチとは」)

正確に言う必要がある場合は、「ブランチ」という言葉を開発ラインを意味するために使用し、「ブランチ ヘッド」(または単に「ヘッド」) をブランチの最新のコミットへの参照を意味するために使用します。上記の例では、「A」という名前のブランチ ヘッドは 1 つの特定のコミットへのポインターですが、その時点までの 3 つのコミットの行をすべて「ブランチ A」の一部として参照します。

Git は、下のファイルに保存されている参照のリストのみを管理します.git/refs。これらの参照は、ツリーのような構造として設計されていません。

階層を伝えるブランチ命名スキームを使用することをお勧めします。

もう 1 つの可能性は、ブランチ ツリーを処理する拡張機能を作成することです。

于 2012-06-15T13:39:31.613 に答える
0

私は以前のバージョンの Git でこのアプローチを個人的に使用していましたが、ネストされたブランチはバージョン 1.8 以降ではサポートされていないようです。

Git Tower での UI サポートも良かったです。

ここに画像の説明を入力

于 2013-10-16T21:32:35.083 に答える