リポジトリには、すべての変更の履歴など、プロジェクトに関するすべての情報が含まれています。各変更は、「コミット」の形でリポジトリに入力されます。
ブランチとリポジトリの違いを示すために、私が述べたプロセスを説明し、ブランチとリポジトリの使用方法を指摘します。これはgitチュートリアルではなく、ブランチとリポジトリについて話すことができます。
通常、ユーザーはコピーを取得し、変更を送信できるリモートリポジトリが存在します。実際の開発作業はリモートリポジトリでは直接実行されません。
ユーザーはリモートリポジトリの最初のコピーをクローンとして取得します。これにより、ユーザーマシン上にローカルリポジトリが作成されます。ローカルリポジトリは、リモートリポジトリの完全なコピーです。
ブランチは、単にリポジトリ内のコミットの1つを指すポインタです。 最も単純なケースでは、 "master"というデフォルトのブランチがあり、masterは最新のコミットを指しています。 各コミットは番号で識別されます。これはその時点でのレポのハッシュです。たとえば、この場合、マスタはコミットを指すことがあります。
2d2cd6cf6f634e88ad19fa454fdcd2e1c26009c7
開発者は、リモートリポジトリとチェックアウトブランチマスタを複製できます。 次に、開発ブランチを作成してチェックアウトします(featureX-devなど)。
git checkout -b featureX-Dev
この時点で、両方のブランチ(masterとfeatureX-Dev)は同じコミットを指しています。 ファイルを変更します。 ブランチfeatureX-devのローカルコピーへの変更をコミットします。 ローカルリポジトリのfeatureX-Devブランチは、masterよりも新しいコミットを指します。 分枝featueX-devをリモートリポジトリにプッシュして、レビューできるようにします。
git push -u origin featureX-dev
-uは、ブランチをリモートにプッシュしてgitにこのブランチを追跡させたいときに初めて使用されます。
他の開発者(リモートリポジトリを既にクローンしている)は、pullを実行することによって、リモートリポジトリからfeatureX-devブランチを取得できます。
それを確認してOKだと伝えたら、featureX-devブランチをローカルリポジトリのmasterのコピーにマージし、masterをプッシュできます。
お待ちください!既に他の開発者がリモートマスターに変更をプッシュした場合はどうなりますか?あなたの地元のレポで
あなたのチェックアウトマスター
git checkout master
は、あなたが彼らの最後に新しい誰かが行われた変更、およびマスターポイントがコミット持つリモート
git pull origin master
からマスターを引きます。 今、あなたは誰がマスターを変更していない場合に行わ害がないマスター
git merge featureX-dev
のローカルコピーにあなたのdevのブランチをマージすることができます。マージは、コミットをマスターブランチに追加するだけです。 作成されている場合は競合を解決し、マスターをリモートに戻します。
レポには複数のブランチが含まれています - あなた自身が言ったように、ブランチを追加* –
私のダウンワードではありません。リモートブランチが生きる場所としてレポを考えることができます。ローカルブランチはすべての作業を行い、ローカルブランチはリモートブランチと同期します。 –