2011-12-21 41 views
1

Gitブランチの基本的な仕組みは不明です。Gitとの分岐とマージ

私はmasterブランチ(私のプロジェクトのトランクです)にレポを持っており、それはv 1.0です。私はexperimentalブランチを作成してファンキーな新しいことをしたいと思うので、私はgit branch experimentalをマスターブランチから行い、いくつかの新しい機能を追加し、変更をexperimentalにコミットします。

私のパートナーはmasterブランチをv 1.1にアップデートし、その変更をmasterブランチに引き出します。

experimentalブランチ内のすべてのv1.0ファイルは、experimentalに編集しても変更されていないため、最新のmasterファイル(たとえば、v 1.1になります)になりますか?

experimentalブランチの修正されていないすべてのファイルがv 1.0に留まらないように、masterブランチをexperimentalにマージする必要がありますか?

これらの1.1の変更をexperimentalにマージするプロセスは何ですか?私のファンキーな新しいものでブランチを汚染しないでください。あなたの実験的なブランチで

答えて

2

するすべてのV 1.0のファイルを実行するには、Vになります1.1)?

いいえ、背中の後ろのファイルは変更されません。

また、experimentalブランチの修正されていないすべてのファイルがv 1.0にとどまるのを防ぐためにmasterブランチをexperimentalにマージする必要がありますか?

正しい。

もしそうなら、これらの1.1変更を実験に組み込み、マスターブランチに私のファンキーな新しいものを混入させないでください。 Gitの中

$ git checkout experimental 
$ git merge master 
1

、最新のマスターファイル(例えば用いた実験ステイ電流に私の編集により変更されていない実験的なブランチで

git merge master 
+0

だから 'git merge master'はmasterブランチのすべての新しいものを' experimental'ブランチにプルしますが、 'experimental'ブランチの変更は' master'に戻されません。ありがとう! – julio

+0

はい、正しいです。 –

1

枝非常に軽量です。つまり、それらは単に特定のコミットへのポインタに過ぎません。コミットは、親ポインタを介して互いにリンクされます。これは、特定のものへの参照がある場合、子(後続のコミット)を知らないことを意味します。マージは、複数の親とのコミットです。ブランチは、複数のコミットの親によってポイントされることになるコミットです。各コミットは、リポジトリ内のすべてのファイルのスナップショットを指しています。

このコミットのWebは、DAG(有向非循環グラフ)と呼ばれます。

あなたはここでそれについての詳細を読むことができます:

http://progit.org/book/ch9-2.html

、ここに:

http://eagain.net/articles/git-for-computer-scientists/

あなたがこれを理解すれば、分岐が日として明確になります! :)

関連する問題