Gitコマンド
使用頻度の高いGitコマンドをまとめた。
管理、設定
git init
- そのフォルダと配下のフォルダをGitでバージョン管理する
git config
- Gitの設定を行う
- 背後ではGit設定ファイルを編集している
- --globalオプションで全Repository共通の設定になる
- --localでプロジェクトごとの設定になる
$ git config -global user.name "Taro" $ git config -global user.email taro@suzuki.com
差分管理
git status
- 状態確認
git add
- 変更したファイルをStaging Areaに移動する
git add ファイル名
git commit
- Stating Areaの変更をコミット
$ git commit -m "コメント"
git rm
- Gitで管理しているファイルを削除する
- 普通にrmで削除すると空ファイルが残ってしまう
$ git rm ファイル名
git stash
- Staging前の変更を後で作業できるように退避する
git stash pop
- 過去に退避した変更を呼び戻す
Remote Repositoryとの連携
git remote add origin
- Remote Repositoryの登録
$ git remote add origin https://github.com/<user-id>/<repo-name>.git
git push
- Local Repositoryの変更をRemote Repositoryに反映
$ git push origin ブランチ名
git pull
- Remote Repositoryの変更をWorking Directoryへ取り込む
- git fetchとgit mergeを一発で実行している
$ git pull origin master
git fetch
- Remote Repositoryの変更をLocal Reposirotyへ取り込む
- Working Directoryは変更されない
git clone
- RemoteRepositoryをローカル環境に複製する
$ git clone https://github.com/<user-id>/<repo-name>.git .
取り消し
git rm --cached
- Staging AreaにあるファイルをWorking Directoryへ戻す
- 変更内容は戻さない
$ git rm --cached ファイル名
git reset
- HEADを指定した位置に戻す
- 中間の変更は全て破棄される
- 取り消した内容の復元は面倒くさい
- 過去のある地点に戻りたいときに使用する(ロールバック)
ヘッドの位置を2つ前のコミットへ戻す例:
$ git reset HEAD~2
- オプションを何も指定しないと--mixedと見なされる
Working Directory | Staging Area | |
---|---|---|
--soft | 現状保持 | 現状保持 |
--mixed | 現状保持 | 戻る |
--hard | 戻る | 戻る |
- 引数にファイル名を指定すると動作が変わる
- HEADのファイルをUnstageする例:
$ git reset HEAD README.md
- 過去のコミットのファイルをStaging Areaに持ってくる例:
$ git reset HEAD^ README.md
git revert
- 既にremoteにpushした内容を取り消す
- 指定したコミットを取り消すコミットを作成してコミットする(selective rollback)
- resetはHEAD位置が戻るがrevertは前へ進む
- 作ったものの最終的に使わないことになったが履歴を残したいときに使う
- 取り消した内容を元に戻すのは簡単
- 何世代も前の変更をRevertするとコンフリクトが発生する可能性がある
$ git revert コミット
ブランチ
git branch
- ブランチを確認する
$ git branch
- 全てのブランチを確認する
$ git branch -a
- ブランチを作成する
$ git branch ブランチ名
- ブランチを削除する
$ git branch -d ブランチ名
- RemoteRepositoryのブランチを削除する
$git branch -rd origin/ブランチ名
git checkout
- ブランチを移動する
$ git checkout ブランチ名
- HEADやファイルを移動することもできる
git merge
- ブランチAにブランチBをマージする
$ git checkout ブランチA $ git merge ブランチB
差分確認
git diff
差分を表示する
Staging前の変更を見る(Staging AreaとWorking Directoryの差分)
$ git diff
- Stagingした変更を見る(Staging AreaとHEADの差分)
$ git diff --cached
- 前回のコミット以降の変更を見る(Working DirectoryとHEADの差分)
$ git diff HEAD
- 前回コミットした変更を見る
$ git diff HEAD^ ($ git diff HEAD^..HEADと同じ)
- コミット同士を比較する
$ git diff ハッシュ..ハッシュ
git diffのオプション
ファイル名のみ表示
--name-only
変更行のみ表示。変更行の前後を表示しない
-U0
次の引数がファイル名であることを明治。推定できる場合は省略可。
-- ファイル名
一つ前のコミット
HEAD^
右側を最新とみなして比較
...
- 特定のコミットのファイルを比較する
git diff <コミット名>:<ファイル名> <コミット名>:<ファイル名>
- RemoteRepositoryとLocalRepositoryを比較する
$ git fetch origin master $ git diff master origin/master
過去のコミット確認
git log
- 過去の変更履歴を表示
$ git log --one-line
タグ
git tag
- タグを付与する
$ git tag タグ
- 作成したタグをRemoteRepositoryに反映する
$ git push origin タグ
- タグ削除(コミット自体は削除されない)
$ git tag -d タグ
- 削除したタグをRemoteRepositoryに反映する
git push origin :タグ