状況:
私はメインのリポジトリとメインのdevブランチを持ち、そこから多くの「実験」ブランチが発芽しています(例:exp1
およびexp2
)。これらの実験ブランチの目的は、数値結果を生成する実験のプレースホルダーとして機能することです。実験ブランチのブランチ名(およびコミットID)を記録して、コミットに戻って結果の背後にあるコードと履歴を正確に確認できるようにします。
しかし、現在、実験ブランチが多すぎるため、メインツリーが見づらくなっています。したがって、私は各結果セット(つまり、各実験)の背後にあるコードにプレースホルダーを保持するための私の戦略を再考しています。もちろん、各ブランチで作業ディレクトリを保存することもできますが、コミット履歴も保持しておくといいでしょう。
可能な解決策:
これに対処する1つの方法は、実験ブランチを独自の独立したリポジトリに移動することです。それぞれのリポジトリは、devブランチのコミット履歴の適切なノードの子ノードをルートとします。ここに私が何を意味するのかを示します:
画像の拡大版(imgur.com)は ここ をクリックしてください。
したがって、たとえば、ブランチexp1
、コミットをエクスポートしたいA->B->C
をコミットA
をルートとする別のリポジトリに追加します。次に、コミットのハッシュを記録できますP1
どこにいるかわかるようにexp1
の子孫です。
質問:
どうやってやるの?
より良い質問:
一方、私がやりたいことを行うにはもっと良い戦略があると強く思います---つまり、視覚的な検査のためにツリーを整頓しますが、必要に応じてプレースホルダーを前のブランチに保持し、それらに戻ることができるようにします。それで、誰もがこのための戦略を推奨できますか?
これは1つの代替方法です。ブランチ名を削除する前に、ブランチ以外の参照を使用してブランチのヒントを保存します。
これらは非分岐参照であるため、たとえばgit branch
の出力や、git log --branches
やgitk --branches
で表示されるものには表示されません。ただし、それらは--all
リストに表示され、リポジトリオブジェクトは保持されます。
非分岐参照を作成または更新するには、 git update-ref
を使用します。将来の使用と衝突しないと思われるrefs/
内の名前空間を選択します(現在の使用は、ブランチの場合はrefs/heads/
、タグの場合はrefs/tags/
、リモートブランチの場合はrefs/remotes/
、メモの場合はrefs/notes/
、隠し場所の場合はrefs/stash
)。