git とは
バージョン管理システムのことでファイルの変更の履歴を管理してくれる。
複数人で共同開発をするときに git を使うことで開発をスムーズに進められる。
git の使い方
git の初期設定
git のバージョンを確認
$ git --version
git の設定
上 2 つはユーザ情報の設定で必ず行う必要がある。
3 つ目は出力メッセージを色分けできるようにする設定。
$ git config --global user.name "ユーザ名"
$ git config --global user.email "メールアドレス"
$ git config --global color.ui true
git の設定情報の確認とヘルプの見かた
$ git config -l
$ git config --help
ファイルのバージョンの管理
git の初期化
git を使うためにはバージョンを管理したいソースコードがあるディレクトリで以下のコマンドを実行する。
$ git init
コマンドを実行すると、.git というディレクトリが作成される。
.git ディレクトリをリポジトリといい、ここにファイルの変更履歴が記録される。
履歴に追加したいファイルの指定
ステージングエリア(インデックス)に履歴を管理したいファイルを add すると、そのファイルがバージョン管理の対象になる。
フィアル名に.を指定すると、カレントディレクトリ下にあるすべてのファイルが add される。
.gitignore にファイル名を記述しておくと、そのそのファイルは add されない。
.gitignore はカレントディレクトリ下のファイルにのみ適用される。
$ git add ファイル名
$ git add .
リポジトリに変更履歴を追加
ステージングエリアからリポジトリに変更履歴を追加することをコミットするという。
コミットするときにはコミットメッセージも入れる。
-mオプションを使うと、コマンド入力時にメッセージも入れられる。
--amendオプションを使うと、ログを増やさずに直前のコミットを変更できる。
$ git commit
$ git commit -m "commit_message"
$ git commit --amend
コミット履歴の確認
コミットにはオブジェクト名というコミットを一意に表す ID 的なものが付けられる。
$ git log
--oneline:履歴がコンパクトに表示される。
-
-p:ファイルの変更箇所が表示される -
--stat:どのファイルを何箇所変更したかが表示される。
作業ディレクトリの状態を表示
以下のコマンドで自分がどのファイルに変更を加えたかや、どのファイルを add したかがわかる。
$ git status
変更履歴を確認
add する前には 1 つ目の、 add したが commit していないときには 2 つ目のコマンドを使えばファイルの変更箇所(差分)を見れる。
$ git diff
$ git diff --cached
ファイルの変更を元に戻す
add する前にファイルの変更を取り消したい場合は以下のコマンドを実行する。
$ git checkout -- ファイル名
過去のコミット内容に戻したい場合は以下のコマンドを実行する。
コミット ID に HEAD を指定すると直前のコミット内容に戻れる。
--softはコミットが取り消されるだけであるが、--hardはコミット及びステージングエリアにある内容も取り消される。
$ git reset --hard コミットID
$ git reset --soft コミットID
コミットの reset を取り消すこともできる。
$ git reset --hard ORIG_HEAD
その他
ステージングエリアに上げたファイルを操作する際にはコマンドの先頭に git を必ず付ける。
ブランチ
複数のバージョンを並行して作りたい場合にはブランチを使うと便利。
ブランチとは枝分かれした履歴の道筋のことをいう。
ブランチの一覧を確認
今いるブランチには「*」が先頭についている。
master ブランチがメインのブランチでこれは自動的に生成される。
$ git branch
* master
branch2
ブランチの作り方
$ git branch ブランチ名
ブランチの切り替え
ブランチを作っただけだと、master ブランチにいる状態。
以下のコマンドで作成したブランチへ自由に移動できる。
$ git checkout ブランチ名
ブランチを作成すると同時にそのブランチに切り替えることも可能。
$ git checkout -b ブランチ名
マージ
ブランチで変更・修正した内容を master ブランチに反映させることをマージするという。
マージ先のブランチで以下のコマンドを実行するとマージできる。
git merge マージしたいブランチ名
マージ後に必要なくなったブランチは以下のコマンドで削除する。
$ git branch -d ブランチ名
コンフリクトの解消
違うブランチで同じ部分に変更を加えてマージしようとした時にコンフリクトが発生する。
その場合、コンフリクトを解消しコミットする必要がある。
タグ
コミット ID は長いのでタグという別名を付けられる。
直前のコミットにタグを付けたい場合はコミットIDは不要。
git tagとのみだとタグの一覧が表示される。
$ git tag タグ名 コミットID
コミットの内容を見たい場合にはタグ名を使って以下のコマンドを実行する。
$ git show タグ名
設定したタグを削除したい場合は以下のコマンドで削除できる。
git tag -d タグ名
エイリアス
コマンドに別名を付けることをエイリアスを設定するという。
長いコマンドにはエイリアスを設定しておくと作業がスムーズになる。
例えば、以下のように設定するとgit checkoutの代わりにgit coが使えるようになる。
$ git config --global alias.co checkout
共同作業するときの git
リモートリポジトリの登録
リモートリポジトリをローカルリモートリポジトリに登録することでファイルを共有できるようになる。
リモートリポジトリにの名前は origin とするのが一般的。
git config -lやgit remote -vで 登録したリモートの情報も確認できる。
$ git remote add リモート名 リモートのURL
リモートリポジトリの削除
$ git remote rm origin
プッシュ
リモートリポジトリにローカルリポジトリ内のファイルをアップロードすることをプッシュという。
これによって他の開発メンバーとファイルを共有できるようになる。
$ git push origin master
プル
他の人がプッシュしたファイル内容をローカルリポジトリに反映させる(マージする)ことをプルという。
$ git pull origin master
以下のようにすれば、共有リポジトリの内容のクローンをローカルリモートリポジトリに作成できる。
$ git clone