TortoiseGitでは、クローンしたフォルダ内のファイルを修正したり、新しいファイルを追加したりすることができます。
ただし、ファイルを修正・追加しただけでは、その変更がリポジトリに反映されるわけではありません。

本記事では、前回の記事で作成したクローンを使って、ファイルを修正・追加し、変更内容をコミットしてリポジトリに反映するまでの手順を紹介します。

クローンしたフォルダ内を最新にする(プル)

ファイルの追加や修正を行う前に、まずプルを実行します。
リポジトリに他の人が変更を加えている場合、自分のクローンしたフォルダは古い状態になっている可能性があります。
そこで、作業を始める前にプルを行い、リポジトリの最新の変更を取り込みます。

  1. それではクローンしたフォルダを最新にしてみます。右側の「TestRep」がリポジトリ、左側の「TestClone」がクローンのフォルダです。


  2. クローンのフォルダを右クリックして [TortoiseGit] → [プル] を選択します。


  3. 「プル」画面が表示されます。内容を確認して問題がなければ、[OK] ボタンをクリックします。


  4. 処理が正常に完了すると、プルの結果が表示されます。
    変更内容(差分)を確認したい場合は [プルした差分] ボタンをクリックします。


  5. [プルした差分] ボタンをクリックすると、変更されたファイルが表示されます。


クローンしたフォルダ内のファイルを追加・修正・削除する

プルが完了したら、クローンしたフォルダ内のファイルを追加・修正・削除します。
ここでは例として、以下の3つの変更を行います。
・既存のファイルを修正する
・新しいファイルを追加する
・不要になったファイルを削除する
これらの変更は、まとめて1回のコミットとしてリポジトリに記録することができます。

  1. クローンしたフォルダ内にある既存のファイル修正します。ここでは「sample.bat」を修正しました。


  2. クローンしたフォルダ内に新しくファイルを追加します。ここでは「test.csv」を追加しました。


  3. 追加したファイルを右クリックして [TortoiseGit] → [追加] を選択します。


  4. 成功のメッセージが表示されたら、[OK] ボタンをクリックします。追加したファイルのアイコンが「変更あり(赤)」に変わりました。


  5. クローンしたフォルダ内のファイルを削除します。ここでは「test.txt」を削除してみますが、ローカルにファイルを残したまま、Gitの管理対象から削除してみます。


  6. 削除するファイルを右クリックして [TortoiseGit] → [削除(ローカルを保持)]を選択します。


  7. 確認メッセージが表示されますので、[削除] を選択します。


  8. 選択したファイルのアイコンがなくなり、Gitの管理対象から削除されました。


変更内容をリポジトリに記録する(コミット)

ファイルの追加・修正・削除が完了したら、TortoiseGitを使って変更内容をコミットします。
今回は、複数の変更をまとめて1回のコミットとして記録します。

  1. クローンしたフォルダ内の何もないところで右クリックします。


  2. 「コミット」画面が表示されます。コミットのメッセージを入力して、[コミット] ボタンをクリックします。


  3. 処理が正常に完了すると、コミットの結果が表示されます。
    なお、この画面から「プッシュ」を実行することもできますが、本記事では次の手順でメニューから「プッシュ」を実行しますので、 [閉じる] ボタンをクリックします。


  4. コミットしたファイルのアイコンが「コミット済み(緑)」に変わりました。


コミットした変更をリポジトリに反映する(プッシュ)

コミットが完了すると、変更内容はローカルリポジトリに記録されます。ただし、この時点ではリモートリポジトリには変更が反映されていません。
リモートリポジトリに変更を反映するには、「プッシュ」を実行します。

  1. クローンのフォルダを右クリックして [TortoiseGit] → [プッシュ] を選択します。


  2. 「プッシュ」画面が表示されます。今回は master ブランチの変更をプッシュするため、上部の「すべてのブランチをプッシュ」はチェックしません。
    ローカルとリモートのブランチがそれぞれ master、宛先が origin になっていることを確認して [OK] をクリックします。


  3. プッシュ時にエラーが発生した場合


    今回のように、ローカルにある通常のGitリポジトリをクローン元として使用している場合、プッシュ時に次のようなエラーが発生することがあります。
    これは、プッシュ先のリポジトリで、プッシュしようとしているブランチが現在使用されているため、Gitが安全のためプッシュを拒否していることを示しています。

    この場合は、プッシュ先のリポジトリに設定を追加することで対応できます。
    続けてその手順を説明します。

  4. プッシュ先である「TestRep」のフォルダ内で右クリックして、[TortoiseGit] → [設定] を選択します。

  5. 設定画面が表示されますので、左側のツリーから「Git」を選択します。そして [ローカルリポジトリ設定を編集] をクリックします。



  6. 表示された設定ファイル(config)の末尾に、次の内容を追加して保存します。

    [receive]
    denyCurrentBranch = updateInstead




    ※この設定は、今回のようにローカルの通常リポジトリへプッシュする場合に必要となる設定です。GitHubなどの一般的なリモートリポジトリへプッシュする場合は、この設定は通常必要ありません。

  7. 設定ファイル(config)を保存して閉じたら、再度クローンしたフォルダからプッシュします。


リポジトリへの反映を確認する

プッシュが正常に完了したら、プッシュ先のリポジトリを開き、追加・修正したファイルが反映されていることを確認します。

  1. プッシュ先である「TestRep」のフォルダ内を開いて、プッシュしたファイルが追加・修正・削除した内容になっていることを確認します。



  2. プッシュ先である「TestRep」のフォルダを右クリックして [TortoiseGit] → [ログを表示] を選択して、ログメッセージから変更を確認することもできます。


まとめ

TortoiseGitでクローンしたフォルダ内のファイルを修正・追加・削除した場合、その変更をリポジトリに反映するには、コミットとプッシュの操作が必要です。

今回の記事では、
クローンしたフォルダをプルして最新にする
→ ファイルを修正・追加・削除する
→ 変更内容をコミットする
→ コミットした内容をプッシュする
→ リポジトリへの反映を確認する
という一連の流れを紹介しました。

ファイルを変更しただけではリポジトリには反映されないため、「コミット」と「プッシュ」の役割を理解しておくことがポイントです。
また、今回のようにローカルにある通常のGitリポジトリへプッシュする場合、設定によってはエラーが発生することがあります。その場合は、エラーの内容を確認し、必要な設定を行ってから再度プッシュします。

以上、TortoiseGitでクローンしたフォルダの変更をリポジトリに反映する方法について解説しました。