🌟

【保存版】TortoiseGit で始める「ひとり Git」入門

に公開

正直プルもプッシュも全部 AI 任せでもいいんですが、そこまで行くといつか痛い目にあいそうだとまだまだ感じている私です。

とはいえ CLI で Git コマンド叩くのもあんまり好きじゃありませんので、Windows で有名な TortoiseGit を使って、私がよくやる使い方を備忘録的に残しておきます。
「おひとり様でも気軽に」を目指しているのでデータはリポジトリも含め、基本ローカルディスクです。

前提知識として、TortoiseGit を使い、クローン、コミット、プッシュ、プルくらいは経験のある人が対象です。

📦 Git を履歴つき保存スペースとして使う

そろそろ Git で管理しようかな、と思うとき

最初は適当なフォルダに作業ファイルをいくつか入れてたけど、そろそろ履歴管理したいなと思ったらまずこれ。

  • 作業フォルダ(ここでは test/ とします) を右クリック > ここにリポジトリを作成 > Bare はチェックしないで OK

テキストでもなんでも、バージョン管理したくなってきたら最初はこれ。
Bare はチェックしないがポイントです。
ローカルリポジトリが作られます。コミットはできるけどプッシュできないやつです。

(結構大事)管理したくないファイルを除外する

ビルド生成物、一時ファイル、Thumbs.db のような OS 由来ファイルなど、履歴に残したくないものは .gitignore に書いておきます。

  • 除外したいファイル・フォルダを 右クリック > TortoiseGit > 削除して無視リストに追加
  • または作業フォルダ直下に .gitignore を直接作成して、1行 1パターンで書く

例:

*.log
node_modules/
build/
Thumbs.db

最初に整えておくと、コミット時に余計なファイルが混ざりません。

ローカルだけだと不安になってきたら

フォルダの規模が大きく、大事になってきたらリモートリポジトリの作成を検討しましょう。
万が一 PC が壊れてもとっておける場所にしておくのが大事。

リモートリポジトリ作成

  • 任意の場所に repository.git/ のようなフォルダを作成
  • そのフォルダを選択して 右クリック > ここにリポジトリを作成 > Bare にチェックして OK

Bare にチェックするかしないかで、ローカルリポジトリかリモートリポジトリが決まります。

リモートリポジトリとローカルリポジトリの紐づけ

リモートリポジトリはローカルディスクでも、 GitLab でも GitHub でも、なんでも OK。

  • Sample/右クリック > TortoiseGit > 設定
  • Git > リモート
  • リモート: 任意名(通常は Origin)
  • URL: リモートリポジトリのパス
ローカル: D:/backup/repository.git(スラッシュ推奨。バックスラッシュも可)
ネットワーク: \\server\share\repository.git
SSH: git@server:repository.git
  • 新規追加/保存 > OK
  • 以降、プッシュ(プル)が可能になる

PC が壊れた!リモートから復旧する

リモートを作っておけば、PC が壊れても元通り。

  • 復旧先の親フォルダで 右クリック > Git クローン(複製)...
  • URL に上で設定したリモートのパスを指定して OK
  • 作業フォルダが丸ごと復活します

リモートを作る一番の理由がこれ。保存先は必ず別の物理ディスクや Dropbox などのストレージにしましょう。GitHub が使える方はそれでも構いません。

🕰️ 過去の状態を見る・戻す

履歴つき保存スペースの本領発揮はここ。「あの時のファイル、どうだっけ?」をいつでも確認できます。

特定の時点のファイル内容を見たい

  • 右クリック > TortoiseGit > ログ でコミット履歴を開く
  • 確認したいコミットを選択 > 下部のファイル一覧から対象ファイルを右クリック
  • 開く で当時の内容を確認、名前を付けて保存 で別ファイルに書き出し

「消したと思ってたあの関数、いつまで残ってたっけ?」みたいな時に重宝します。

過去の状態に戻したい

戻し方は2種類あります。状況に応じて使い分けましょう。

戻したことを履歴に残す(リバート)

  • 右クリック > TortoiseGit > ログ
  • 戻したいコミットを選択 > 右クリック > この変更を取り消す(Revert)
  • 「打ち消し」のコミットが新しく作られる

履歴は残るので安全。リモートに push 済みのコミットを取り消したい時はこちらが基本。

なかったことにする(リセット)

  • 右クリック > TortoiseGit > ログ
  • 戻したい地点のコミットを選択 > 右クリック > このコミットに "main" をリセット
  • Hard を選ぶとファイルも含めて完全に巻き戻る

🌿 Git で破壊的な変更を管理する

大きな改造をするため、失敗したら元に戻すのが面倒だな……と思った時はブランチを使う。
チーム開発だと当たり前だけど、個人開発でもそこそこ有用。

例えばこういう時:

  • 大規模なリファクタリングをしたい
  • 実験的な機能を試してみたい
  • 動くか分からないライブラリを導入してみたい

破壊前にブランチを作成

  • 右クリック > TortoiseGit > ブランチを作成
  • ブランチ名(ここでは test とします)を入れて OK

破壊しちゃった! 破壊前に戻す

  • 右クリック > TortoiseGit > 切り替え/チェックアウト
  • ブランチを main に戻して OK

要らなくなった test ブランチは、後述の「不要になったブランチを削除する」で消せます。

破壊せず無事改良したら、本流へとマージ

  • 上記と同じ手順で main に切り替え
  • 右クリック > TortoiseGit > マージ
  • マージするブランチ test を選んで OK
  • main が無変更であればファストフォワードマージmain 側に変更が無いので、test のコミット列が main にそのまま繋がるだけ)になり、面倒なし

コンフリクトが起きたら

マージ中に**「競合が発生しました」**と言われた時の対処。

  • 衝突したファイルが赤マークになる
  • そのファイルを 右クリック > TortoiseGit > 競合の編集
  • 左(main 側)と右(test 側)を見比べて、残したい行を選択
  • 解決したら 右クリック > 解決済みとしてマーク
  • 全部解決したらコミットして完了

慌てずに1ファイルずつ片付ければ大丈夫。

不要になったブランチを削除する

失敗ブランチでも、マージ済みブランチでも手順は同じ。

  • 右クリック > TortoiseGit > refブラウザ
  • 消したいブランチ test を選択して 右クリック > ✘ブランチを削除 > OK

🛠️ 番外編:エクスプローラーのアイコンが更新されない時

TortoiseGit を使っていると、ファイル・フォルダに付くアイコンオーバーレイ(緑のチェック・赤のビックリマーク等)が古い状態のままだったり、そもそも表示されなかったりすることがあります。
そんな時は TortoiseGit のキャッシュプロセス (TGitCache.exe) を一度落とすだけで大抵直ります。

PowerShell から一発で

powershell
Stop-Process -Name TGitCache -Force

TGitCache.exe は次にエクスプローラーがアイコン情報を要求した時点で自動的に再起動するので、これだけでキャッシュがゼロから作り直されてアイコンが正しく表示されるようになります。
エクスプローラー自体を再起動する必要はありません。

それでも直らない時:エクスプローラーごと再起動

powershell
Stop-Process -Name explorer -Force; Start-Process explorer

コマンドプロンプト:

cmd
taskkill /f /im explorer.exe
start explorer.exe

最終手段:Windows のアイコンキャッシュごと削除

それでも直らないなら、Windows 全体のアイコンキャッシュが壊れている可能性があります。
管理者権限でコマンドプロンプトを開いて、以下を順に実行:

cmd
taskkill /f /im explorer.exe
del /a /q "%LocalAppData%\IconCache.db"
del /a /f /q "%LocalAppData%\Microsoft\Windows\Explorer\iconcache*"
start explorer.exe

ここまでやっても直らない場合

TortoiseGit のオーバーレイは Windows のシェル拡張上限(最大 15 個)の影響を受けています。

他のクラウドストレージ系ツール(OneDrive, Dropbox 等)もこの拡張アイコンをどんどん消費するため、TortoiseGit アイコンは 15 個の中に入っていないことがあります。

その場合はもはやお気軽な修正ではどうにもならないので「IconOverlay 並べ替え」などでググった記事を参考にしつつ、順序を入れ替えてください。

Discussion