2016-03-22 16 views
3

昨日の午後、私の大学はgitコミットを下の図に示しました。私はあなたがどのようにgitでそのような変なことをすることができるのだろうか。通常、すべてのブランチには前に存在していた祖先ブランチが必要です。少なくとも私のgitの理解では。なぜ祖先がいないgitブランチ

このgitの履歴を取得するにはどうすればよいのですが、これはなぜ有用なのですか?

Strange Git branch

+0

"*すべてのブランチは、前に存在する先祖ブランチを持つ必要があります*" - 最初のブランチはどのように作成されましたか? – Maroun

+0

最初のブランチには祖先がありません。そのとおりです。しかし、最初の後のすべての枝には先祖がいるはずです。 – FluepkeSchaeng

+0

@FluepkeSchaengなぜですか?支店には、祖先を1つ以上持つこともできます。あなたがそれを想像することができれば、Gitは本当に柔軟性があります: –

答えて

4

しかし、最初の後、すべての枝が祖先を持っている必要があります。

ありません:あなたは何の親を持ちません

git checkout --orphan newbranch 

最初にこの新しい枝に作られたコミットをしてブランチいつでも一つ以上の孤児を作成することができ、それが新しいのルートになります履歴は他のすべてのブランチから完全に切断され、コミットされます。

あなたのケースでは、リモートrepo側の4-x-dev-camブランチの履歴をチェックし、その履歴が親なしのコミットで始まるかどうかを確認してください。

なぜこれが

  • 有用であるレポのgit自体が(masterそばに)少なくとも一つの孤立枝を持っている:todo branch、gitのの一部ではない管理スクリプトを保つためにソース自体。
  • GitHub page projectsには、プロジェクトに関連付けられたWebサイトを管理するために、少なくとも別のオーファンブランチ(masterの横に):gh-pagesがあります。

基本的には、同じリポジトリで、メインプロジェクト(管理スクリプト、プロジェクトを説明するウェブサイト)と直交するコンテンツを管理する必要があるときはいつでも、オーファンブランチは良いその二次履歴を分離する方法。

4-x-dev-camの場合、考えられる1つの説明は、最初から始めて大規模なプロジェクトの書き換えです。
この場合、孤立したブランチは、新しい履歴を以前のブランチから分離するための良い方法です。

+0

これは、あなたがそのようなコミット履歴を得る方法を説明します。迅速なご回答をありがとうございました。特定のケースでは、孤立したブランチを作成すると便利でしょうか? – FluepkeSchaeng

+2

@FluepkeSchaengたとえば、公開リポジトリから履歴の一部を非表示にします。 [Git checkout](https://git-scm.com/docs/git-checkout/1.7.3.1)から: "これは完全な履歴を表示せずにコミットからツリーを公開したいときに便利です。現在のツリーが「クリーン」であるが、完全な履歴に独自のコードやその他のコードが含まれているプロジェクトのオープンソースブランチを公開するには、これを実行することができます。* " –

+0

@FluepkeSchaeng複数の具体的な例を2つ追加しました孤児の枝。 – VonC

関連する問題