はじめに
Gitは分散バージョン管理システム(DVCS)と呼ばれるソフトウェアのひとつである。
OSのひとつであるLinuxの開発・管理のために作られたもので、現代において一般的にはソフトウェア開発において広く使われている。
こうした背景もあって、Gitというのはプログラミングを行う者、それもやや深く踏み込んだ者のものという印象を持つ人も多い。
そして、一般に広く知られているとまでは言えないものだろう。
だが、そこに留めるには非常にもったいないものだ。
それ以前に使われていたSubversionあるいはCVSなどと違い、Gitは一般の人が日常的に使うのにも非常に適した便利なソフトウェアである。
私は特に 論文に悩む一般大学生にとてもおすすめしたい。
そこで本記事においては、ソフトウェア開発者ではない、ごく普通のパソコンユーザーがGitでコンピュータ生活を便利にする使い方をお教えしよう。
Gitでできること
歴史を記録する
Gitは現在の状態を歴史の中に記録することができる。
記録されたポイントは様々な形で利用できる。
例えば、現在の状態と歴史の地点との差分を比較することもできるし、編集してみたものの良い方向性ではなかったと思うのなら歴史の地点に戻してしまうこともできる。
また、文章を書いていて展開Aと展開Bが考えられどちらも捨てがたい……という場合は、歴史を分岐してAで展開した歴史とBで展開した歴史を作ることもできる。
もちろん、切り替えも可能だ。
バックアップ
Gitで歴史として記録されているものは復元できるため、間違ってファイルを消してしまったとしても1復元が可能だ。
Gitで管理しているものを「Gitリポジトリ」と言うが、リポジトリは複製ができる。
複製した場合は同期について考える必要が生じ、少し複雑になるが、より便利で扱いやすいバックアップ手段が増えると思えばいい。
複数台での運用
例えばデスクトップPCとラップトップPCを持っている人の場合、「家ではデスクトップで、外出中はラップトップで」という作業スタイルの人もいるだろう。
こうした複数台での運用・同期において、かなり利便性を向上させることができる。
複数人での作業
さらにGitはチームでの共同作業も支援してくれる。
ただし、Git単体で共同作業を行うためには原始的なルールの導入が必要になる。
一般的にはGitを共同作業で利用するのに適した機能を提供するソフトウェアやプラットフォーム2を組み合わせることになる。
一般的にGitが話題に出されるときはこの文脈で用いられることが多いが、Gitの用法としては基本からだいぶ離れた話になるため、本記事ではあまり触れない。
事前知識
ディレクトリ
本記事では「ディレクトリ」という言葉が出てくる。
これは、Windowsの場合はエクスプローラから見える「フォルダ」と同じものであると考えて良い。
(ただし、コレクションフォルダを除く)
リポジトリ
Gitが管理しているものを指す。
実体としては通常リポジトリの場合はディレクトリ内の.git
ディレクトリ。
ベアリポジトリの場合は*.git
ディレクトリ。
Gitの導入
Windows
Git For Windowsからダウンロードし、いつものようにウィザードでインストールする。
DownloadからはGitHubのReleaseにとばされて分かりづらいかもしれないが、スクロールダウンして "Assets" のところへ行く。
基本的に最新バージョンが並んでいるので、例えば最新バージョンが2.50.1
だとしたら
Git-2.50.1-64-bit.exe
をダウンロードする。
-arm64
はSurface Pro Xのようなタブレット系の端末向け(Windows on ARM環境)。32-bit
は現代のまともなWindows環境では特に必要ない。MinGit
やmingw
のような環境は今回の話の中では選択しないので気にしなくていい。
ライセンスの説明。一般的な「自由な」ライセンスが用いられており、説明文になっている。Next.
インストール先。
こだわりがなければこのままNext.
基本的にそのままでOK。
便利になるので全部にチェック入れてもOK。
逆にチェックを外すのはやめておこう。
スタートメニューのフォルダの話。
このままNext.
エディタの選択。Use Vimはちゃんと有効な設定なのだけど、普通の人にはちょっと難しい。
選択肢は色々あるけど、アプリをインストールしていれば使えるの話になってしまう。
そこで
Use Notepad as Git's default editor
を選択すれば、Windowsのメモ帳を使って動作させることができるようになる。
基本的に、必要な時に勝手に立ち上がってくるので、編集したら保存して閉じればOK。
Next.
強い思想やこだわりがないならこのままでOK。
Next.
基本的にはこのままでOK。
Gitをインストールする影響を最小限に抑えたいなら "Use Git from Git Bash only" にしてもいい。
Next.
基本的にこのままでOK。
Use the OpenSSL libraryはこだわりがある人向け3。
Next.
このままにする。変更するとめんどくさい。
Next.
これもこのままで良い。
"Use Windows' default console window" はだいぶ茨の道。
Next.
これはかなり難しい話をされている。
けれど、実際の選択としてはこのままでOK。Next.
このままNext.
"Enable symbolic links" すると使える機能は増えるけど、Windowsではそれ自体の制約がほかとちょっと違うので単純にら便利になるというわけではない。
チェックしてもいいけど、特にこの記事的には必要はない。
Mac
Macの場合、Gitは入っていたりいなかったり。
とりあえずターミナル4を開いてgit
って打ってあとは流れで。
Linux
だいたい最初から入っている。
入っていなければお使いのLinuxのパッケージ管理システムで入れる。
使い方
Windows
エクスプローラで右クリック → "Git Bash Here"
で今いる場所でGitが使えるようになる。
Mac
Finderで右クリック → サービス → 「フォルダに新規ターミナル」
で今いる場所でGitが使えるようになる。
Linux
GNOME
右クリック → 「端末で開く」
nautilus-open-terminal
が必要。
Ubuntuの場合は
sudo apt-get install nautilus-extension-gnome-terminal
Plasma
右クリック → 「ここでターミナルを開く」
Cinnamon
右クリック → 「端末で開く」
MATE
右クリック → 「端末で開く」
設定
Gitを使い始めるにあたり名前とeメールの設定が必要。
特に有効性は気にしなくていいので
git config --global user.email "namae@local"
git config --global user.name "なまえ"
とかでいい。
逆にemailに有効な値を入れる場合は、ホスティングサービスでの公開とかした場合にはeメールアドレスが漏れることに注意が必要。
はじめよう
まず、適当なディレクトリを作る。
どこでもいいしなんでもいいけれど、中に管理対象でないものは入れないこと。
ディレクトリを作ったら、その中に管理対象にしたいものを入れる。
直下ではなく、階層化してもOK。
まずは一度初期化しておく。
これは最初だけでいい。
git init
編集後、「この状態を記録しておきたい」と思ったら次のように2つのコマンドを順に実行する。
git add -A
git commit -m "こめんと"
コメントは今どういう状態かわかる内容を入れておくとあとで役に立つ。
活用する
歴史の確認
記録するだけだと嬉しさがわからないので、歴史を有効活用しよう。
git log
これで記録した歴史が表示される。
ちなみに、lessというプログラムを使って表示されるのでわかりにくいかもしれない。
spaceキーでページ送り、q
で終了する。
だいたいの環境ではPgUp/PgDnも利用可能。
こんな感じの内容が表示される。
commit aa6e376b1934690d5140f3b1d0a0779aa8213e1d
Author: MASAKI Haruka <haruka@example.com>
Date: Wed Jul 9 03:32:50 2025 +0900
ものすごくすごい更新
commit
のところにあるのが歴史のID。これは操作するときに必要になる。
コミットというのが、記録した歴史のポイントを意味している。
このコミットが一体なんなのか、というのは、Date
の値とコメントから推測しよう。
時を戻そう
歴史操作をしたい場合は、必ずgit commit
してからやること。
昔の歴史に一時的に戻りたい場合は次のようにする。
git checkout aa6e376b
さきほどのcommit
の値はaa6e376b1934690d5140f3b1d0a0779aa8213e1d
だったけれど、ほとんどの場合先頭8桁もあれば十分いける。なんなら、もっと短くできることもある。
現在の歴史の最先端に戻りたい場合は
git checkout HEAD
新たな歴史への分岐
現在いる場所から新しい歴史を始めたい場合は
git checkout -b newhistory
のようにして新しい歴史を始める。
このように枝分かれした歴史を「ブランチ」という。
newhistory
はブランチ名で、なんでもいいけれどアルファベットと数字とアンダースコア(_
)とハイフン(-
)くらいにしておくことを強くおすすめ。
ちなみに、ブランチは
git branch
で一覧できるし、
git checkout master
のように切り替えることもできる。
ただし、必ずgit commit
してから!
時を完全に戻そう
「この歴史は完全に誤りだった……死に戻りしたい……」と思っているのであれば
git reset --hard aa6e376b
のようにしてそれ以降を完全になかったことにして巻き戻してしまうこともできる。
ただし、実際はブランチにすれば十分なことがほとんどだし、かなり危険な操作なので基本的には使わないのがおすすめ。
もっと活用
比較
なにをどう変更したかを確認する機能としてdiff
がある。
単純に使うと、最後にコミットした状態と現在手元の状態を比較する。
git diff
1つ前のコミットと比較したい場合はこう
git diff 'HEAD^'
比較対象はブランチでもいい。
この場合、現在の状態と指定したブランチの比較になる。
git diff master
ただ基本的に、これはテキストファイルでないと有効に働かない。
せっかくなので、テキストベースのフォーマット5を中心に使うようにするとさらに有効に活用できる。
統合
例えばブランチaとブランチbで2つの未来を作ったけど、その結果aのほうがよかったからaを正史にしたい、と考えた場合、もとの歴史にaの歴史を統合することができる。
Gitでは今のところ正史となるブランチはmaster
だけれど、いろんなところでmain
にする動きが広がっていたりするので、
git branch
して確認すること。
そして、統合される側であるブランチmaster
に移動する
git checkout master
統合するブランチを指定してマージ。
git merge a
これで統合できる。
ただし注意点として、基本的に最新から分岐した状態のものを取り込むようにしたほうがいい。
そうでないと両方の歴史が進行してタイムパラドックス的な感じで競合が発生することがある。
これは解消することは可能なのだけれど、割と難しいので、最初から問題が発生しないような運用を徹底したほうが楽。
競合の解消は、基本的に解消に適したツールを使って行ったほうが良いので、話がだいぶ複雑になる。
バックアップ
復元
ファイルを誤って消してしまったり、間違った変更をしてしまった場合、コミットから復元することができる。
git restore foofile.txt
このファイルの指定は現在の位置からの相対。
今いるところのfoofile.txt
が対象ならfoofile.txt
でいいし、foo
ディレクトリの中にあるfoofile.txt
ならfoo/foofile.txt
になる。
複製
Gitのリポジトリはいくらでも複製でき、複製した側は「どこから複製したか」は覚えているけれど、それ以外は特に違いがない。
これを使ってリポジトリ丸ごと簡単にバックアップできる。
複製したリポジトリを置きたい場所で開き、こんな感じで行う。
git clone ~/path/to/repo
WindowsユーザーがGit Bash hereした場合は少し複雑になる。
例えばC:\Users\haruka\Documents\foorepos
がもとのリポジトリだとする。
(これは、haruka
ユーザーのマイドキュメント直下にfoorepos
をリポジトリとして置いている状態。)
その場合、こうなる
git clone /c/Users/haruka/Documents/foorepos
\
が/
に変わっていること、C:\
が/
になることに注意が必要。
このようにして複製したリポジトリはそれぞれが別の存在で自動では同期されない。
バックアップ目的で同期したい場合は、もっとも安全なのは*作業自体は常に複製されたオリジナルのほうで行い、*複製した側で次のようにして更新を取得すること。
git pull
次の記事
解説記事
Qiitaに掲載したGit記事の裏話と、ちゃんとした説明 @Chienomi