読者です 読者をやめる 読者になる 読者になる

プログラミングノート

プログラミングの備忘録です

TortoiseGit 共有ファイルの変更履歴を管理する 第4回

Git

複数の人と共有しているファイルを変更する場合、変更を一つの変更履歴にまとめて記録し、中央管理します。

 中央リポジトリを作成

 それぞれのローカルマシンで行った変更を、一つの変更履歴にまとめて記録する場合、変更履歴を保管するための中央リポジトリを、リモートマシンに作成します。

 そして、ローカルマシンから中央リポジトリの変更履歴を取得したり、ローカルマシンから中央リポジトリの変更履歴へ変更を反映します。

  1. 中央リポジトリを作成するフォルダで右クリックして表示されるメニューで「Git ここにリポジトリを作成」をクリックすると、リポジトリ作成画面が表示されます。
  2. リポジトリ作成画面で、Bareを作成(作業ディレクトリーを作りません)にチェックを入れて、「OK」をクリックします。(Bare作成にすると中央管理用の変更履歴が作成されます。)
  3. 「空のGitレポジトリとして初期化しました」が表示されたら、「OK」をクリックします。

中央リポジトリから変更状況を取得

 中央リポジトリから変更状況を取得する方法は2種類あります。

中央リポジトリに保管されているすべての変更状況を取得

 中央リポジトリに保管されているすべての変更状況を取得することを「クローン」と言います。

 クローンは、中央リポジトリに反映されたファイルと中央リポジトリの変更履歴がローカルマシンにコピーされます。

  1. 右クリックして表示されるメニューの「Git クローン(複製)」をクリックすると、クローン画面が表示されます。
  2. クローン画面の「すでに存在するリポジトリをクローン」で、「URL」には、中央リポジトリがあるディレクトリのURLを入力します。「ディレクトリ」には、ローカルマシン上の作業フォルダのパスを入力します。(あらかじめ作業フォルダを作成しておく必要はありません。)
  3. 「OK」をクリックします。
  4. 「成功」が表示されたら、「閉じる」をクリックします。
中央リポジトリに保管されている最新の変更状況を取得

 中央リポジトリに保管されている最新の変更状況を取得することを「フェッチ」と言います。中央リポジトリの変更状況をローカルマシンの作業フォルダに反映することを「マージ」と言います。「プル」という操作を行うと、フェッチをしてマージすることになります。

  1. ローカルマシンの作業フォルダを右クリックして表示されるメニューの「tortoiseGit」>「プル」をクリックすると、プル画面が表示されます。
  2. プル画面にはクローンした時の中央リポジトリ情報が入力されています。「リモート」には、originなどのリモート名が入力されています。「リモートブランチ」には、masterなどのブランチ名が入力されています。
  3. 「OK」をクリックします。
  4. 「成功」が表示されたら、「閉じる」をクリックします。

 作業フォルダの変更状況と中央リポジトリの変更状況で違いがあれば、自動でマージしてくれます。

 他の人が中央リポジトリの変更履歴に変更を反映した箇所と、作業フォルダで変更しコミットした箇所が同じ場合、プルをすると変更の競合が起きます。

 変更の競合が起きると「競合によりプルを失敗しました」という旨のメッセージが表示されます。それは、中央リポジトリの変更状況か作業フォルダの変更状況かどちらを反映するべきかわからず自動でマージできないためです。この場合、手動で変更の競合を解消する必要があります。

作業フォルダの変更を中央リポジトリに反映

 作業フォルダでの変更を中央リポジトリにある変更履歴に反映させることを、「プッシュ」と言います。作業フォルダでコミットした後に、変更をプッシュをします。

  1. ローカルマシンの作業フォルダを右クリックして表示されるメニューで「tortoiseGit」>「プッシュ」をクリックすると、プッシュ画面が表示されます。
  2. プッシュ画面には、クローンした時の中央リポジトリの情報が入力されています。「Ref」の「リモート」には、masterなどのリモートブランチ名が入力されています。「Ref」の「リモート」には、masterなどのローカルブランチ名が入力されています。「宛先」の「リモート」には、originなどのリモート名が入力されています。
  3. 「OK」をクリックします。
  4. 「成功」が表示されたら、「閉じる」をクリックします。

 中央リポジトリにある変更履歴で、プッシュしようとしているファイルが先に変更されている場合プッシュを失敗します。この場合、プルしてから変更しコミットして、再度プッシュする必要があります。

記事一覧

第1回 はじめてのバージョン管理システム Git

第2回 TortoiseGit Windows(64bit)にTortoiseGitをインストールする

第3回 TortoiseGit ローカルマシン上の作業フォルダの変更履歴を管理する

第4回 TortoiseGit 共有ファイルの変更履歴を管理する

第5回 TortoiseGit ブランチを使って効率的に変更作業を行う

第6回 TortoiseGit ブランチを統合(マージ)する