2016-08-31 8 views
0

私が見たことから、既存のブランチに切り替えると、ブランチ上の特定のコミットに切り替わることはありません。何故なの?ブランチに切り替えた後、特定のコミットを切り替えないのはなぜですか?

既存のブランチに切り替えると、自動的にブランチ上の最新のコミットに切り替えるのは正しいですか?

ブランチに興味のある人は、ブランチ上の最新のコミットだけに興味があり、ブランチ上の他のコミットには興味がありません。

コミットに切り替えるために使用するコマンドは何ですか?

+0

gitチュートリアルの分岐部分を読むことをお勧めします。https://learningpassion.wordpress.com/2016/06/19/git-tutorial-day-to-day-use-part-6-branching -in-a-nutshell/ – joker

答えて

1

既存のブランチに切り替えると、 は自動的にブランチの最新のコミットに切り替わりますか?

はい、該当します。

はそれが枝に興味がある人々が最新に興味がブランチにコミット だけではなく、枝上の他の コミットしているというのは本当でしょうか?

これは正しくありません。変更を加えてコミットする目的でブランチに切り替えると、ほとんどの場合、その変更がそのブランチに入ることを意味します。そのブランチの最新コミットに切り替えると、detached HEAD stateになり、コミットは別の場所(匿名ブランチの一種)になります。

+0

ありがとうございました。 「分離されたHEAD状態」とはどういう意味ですか? – Tim

+0

@Timこの記事を読む:https://www.git-tower.com/learn/git/faq/detached-head-when-checkout-commit – Leon

1

です。チェックアウトブランチで最後に使用可能なコミットを選択した場合、すでにチェックアウト済みのものに切り替えると、作業していたものか、ローカルマシン(HEAD)のチェックアウトの最後のものが選択されます。

ほとんどの場合、古いバージョンのプロジェクトを望んでいない(おそらくバグがあり、機能がない)ので、最後のコミットに興味のある人です。たとえば、現在のブランチに新しい機能を持たない他のブランチにいくつかの機能を追加したい場合、古いコミットを望むかもしれません。あるいは、この古いコミットのコードにあったものを見つけることができます。

+0

ありがとう。どのコマンドがコミットに切り替えるために使われますか? – Tim

+1

'git checkout 'ここで、コミットはいくつかの方法で指定できます。最も一般的なのは40文字のsha1sumですが、HEAD〜1またはタグ名を指定することもできます。 –

4

ブランチはコミットのポインタです。だから、ブランチをチェックアウトするときに、ブランチが指しているコミットをチェックアウトします。他のコミットはありません。 "同じブランチにある"と表示されている他の古いコミットは、ブランチによってまったく指されません。彼らは親のコミットによって指し示されます。

ブランチをチェックアウトしている人は、古いコミットに興味があるかもしれませんが、これらのコミットが同じブランチ上にあるのは少し誤解を招くかもしれません。 Gitにはその種のブランチはありません。古いコミットは、ブランチではなく、チェックアウトされたコミットのコミット履歴の一部です。

コミットをチェックアウトするには、git checkout <sha-1>を実行してください。これはあなたのHEADを切り離すことになります。つまり、ブランチをチェックアウトしていません。チェックアウトされたコミットの完全なコミット履歴は、ブランチとは何の関係もありません。

+1

これは私がここで見てきた特定のgitユーティリティの簡潔ではっきりとした完全な説明の1つであると言いたいと思います。 – BlueSpaceCanary

関連する問題