参考書籍
エンジニアのためのGITの教科書 (WEB Engineer’s Books)
- 作者:株式会社リクルートテクノロジーズ,株式会社リクルートマーケティングパートナーズ,河村 聖悟,太田 智彬,増田 佳太,山田 直樹,葛原 佑伍,大島 雅人,相野谷 直樹
- 発売日: 2016/01/20
- メディア: 大型本
- 参考書籍
- コマンドライン構文
- gitの設定
- リポジトリの設定
- 変更履歴の登録
- リポジトリの状態とステージングエリアの状態を確認
- ワーキングディレクトリの変更をステージングエリアに追加
- ワーキングディレクトリの変更をステージングエリアに追加(予行演習)
- ワーキングディレクトリの全ての変更をステージングエリアに追加
- ワーキングディレクトリの全ての変更をhunk毎、対話的に追加
- ワーキングディレクトリの変更をコミットしたバージョンに戻す
- ステージングエリアから削除、ファイルへの変更は残す
- ステージングエリアから削除、ファイルへの変更内容は全て破棄
- ワーキングディレクトリとステージングエリアの差分を表示
- ステージングされた変更をコミット(簡易)
- ステージングされた変更をコミット
- 特定のコミットを指定してそれをコミット
- 直近のコミットメッセエージを修正する
- ブランチの操作
- リポジトリ上のローカルブランチの一覧を標示
- ローカルブランチとリモート追跡ブランチの一覧を表示
- ローカルブランチとリモート追跡ブランチの一覧、SHA1-IDを表示
- 新規ブランチを作成
- 指定したブランチに切り替え
- 指定したブランチの作成と切り替えを同時に行う
- 指定したブランチの履歴を現在のブランチにマージ
- マージの中止
- 指定したローカルブランチを削除(未コミット、チェックアウト中は不可)
- 指定したローカルブランチを削除(未コミットでも強制削除)
- 指定したブランチ名を変更
- ステージングエリアの変更内容をワーキングディレクトリに上書き
- 特定のコミットを指定しチェックアウト
- 特定のコミットを指定しチェックアウトした後に何かしら作業、で本来の HEAD (master) に戻る
- タグを作成(現在のブランチ)
- タグを作成(現在のブランチ、注釈付き、エディタが立ち上がるのでメッセージを入力)
- タグを作成(後から指定したブランチに対して、注釈付き)
- タグの削除
- タグの一覧(コメントも同時)
- リベース(ローカルブランチの開始地点を変更)
- ファイルの移動と削除
- ファイルの削除(ワーキングディレクトリにあるファイルを削除、ステージングエリアに追加)
- ファイルの削除(ステージングエリアにあるファイルのみを削除)
- ワーキングディレクトリのファイル名(ディレクトリ名)を変更、ステージングエリアに追加
- 指定したファイルをcommit_idの内容に戻し、かつステージングエリアに追加される
- .gitignore で指定する前に登録したファイルを削除
- .gitignore で指定する前に登録したディレクトリを削除(物理ファイルは削除されず、インデックスからのみ削除)
- ワーキングディレクトリの追跡対象外のファイルをもとに戻す(削除対象を確認)
- ワーキングディレクトリの追跡対象外のファイルをもとに戻す(強制削除)
- 一時的な変更の記録
- 履歴の確認
- 履歴の修正
- リモートリポジトリの変更の同期
- その他
コマンドライン構文
$ git [スイッチ] <コマンド>
例
$ git -p config --global user.name "taro"
gitの設定
バージョン
$ git --version
コミットに付加される名前を設定
$ git config --global user.name <user_name>
コミットに付加されるメールアドレスを設定
$ git config --global user.email <user_email>
コマンドラインの出力を見やすくる色を設定
$ git config --global color.ui auto
設定値の一覧
$ git config --list
デフォルトエディタの設定
$ git config --global core.editor 'code --wait'
エディタを起動
$ git config --local --edit
$ git config --global --edit
$ git config --system --edit
リポジトリの設定
リポジトリを作成
$ git init
指定した名前でローカルリポジトリを作成
$ git init <project_name>
リモートリポジトリの設定を指定した名前で追加
$ git remote add <name> <url>
リモートリポジトリの設定を変更
$ git remote rename <old_name> <new_name>
指定したURLのリポジトリをローカルリポジトリとして複製
※destination_dirを省略した場合ソースリポジトリをベースとしたディレクトリを作成する
$ git clone <source_url> <destination_dir>
変更履歴の登録
リポジトリの状態とステージングエリアの状態を確認
$ git status
ワーキングディレクトリの変更をステージングエリアに追加
$ git add <file>
ワーキングディレクトリの変更をステージングエリアに追加(予行演習)
$ git add --dry-run .
ワーキングディレクトリの全ての変更をステージングエリアに追加
$ git add --all
ワーキングディレクトリの全ての変更をhunk毎、対話的に追加
$ git add --patch <file>
ワーキングディレクトリの変更をコミットしたバージョンに戻す
$ git checkout -- <file>
ステージングエリアから削除、ファイルへの変更は残す
$ git reset <file>
ステージングエリアから削除、ファイルへの変更内容は全て破棄
$ git reset --hard
ワーキングディレクトリとステージングエリアの差分を表示
$ git diff <file>
ステージングされた変更をコミット(簡易)
$ git commit -m "initial commit."
ステージングされた変更をコミット
※詳細、テキストエディタが起動されるので、ミットメッ-ジを入力、保存
$ git commit
特定のコミットを指定してそれをコミット
$ git cherry-pick <commit_id>
直近のコミットメッセエージを修正する
$ git commit --amend
ブランチの操作
リポジトリ上のローカルブランチの一覧を標示
$ git branch
$ git branch --column
ローカルブランチとリモート追跡ブランチの一覧を表示
$ git branch -a
ローカルブランチとリモート追跡ブランチの一覧、SHA1-IDを表示
$ git branch -v
新規ブランチを作成
※現在のHEADが指し示すブランチから作成、チェックアウトは行われていない
$ git branch <branch_name>
指定したブランチに切り替え
※コミットしていない変更内容はそのまま
$ git checkout <branch_name>
指定したブランチの作成と切り替えを同時に行う
$ git checkout -b <branch_name>
指定したブランチの履歴を現在のブランチにマージ
$ git merge <branch_name>
マージの中止
$ git merge --abort
指定したローカルブランチを削除(未コミット、チェックアウト中は不可)
$ git branch -d <branch_name>
指定したローカルブランチを削除(未コミットでも強制削除)
$ git branch -D <branch_name>
指定したブランチ名を変更
$ git branch -m <branch_name>
ステージングエリアの変更内容をワーキングディレクトリに上書き
$ git checkout <file>
特定のコミットを指定しチェックアウト
$ git checkout <commit_id>
特定のコミットを指定しチェックアウトした後に何かしら作業、で本来の HEAD (master) に戻る
$ git checkout -f master
タグを作成(現在のブランチ)
$ git tag <tag_name>
タグを作成(現在のブランチ、注釈付き、エディタが立ち上がるのでメッセージを入力)
$ git tag -a <tag_name>
タグを作成(後から指定したブランチに対して、注釈付き)
$ git tag -a <tag_name> -m <message> <commit_id>
タグの削除
$ git tag -d <tag_name>
タグの一覧(コメントも同時)
$ git tag -n
リベース(ローカルブランチの開始地点を変更)
$ git rebase <branch_name>
ファイルの移動と削除
ファイルの削除(ワーキングディレクトリにあるファイルを削除、ステージングエリアに追加)
$ git rm <file>
ファイルの削除(ステージングエリアにあるファイルのみを削除)
$ git rm --cached <file>
ワーキングディレクトリのファイル名(ディレクトリ名)を変更、ステージングエリアに追加
$ git mv <file-original> <file-renamed>
指定したファイルをcommit_idの内容に戻し、かつステージングエリアに追加される
$ git checkout <commit_id> <file_name>
.gitignore で指定する前に登録したファイルを削除
$ git rm --cached <target_file>
.gitignore で指定する前に登録したディレクトリを削除(物理ファイルは削除されず、インデックスからのみ削除)
$ git rm -r --cached <target_dir>
ワーキングディレクトリの追跡対象外のファイルをもとに戻す(削除対象を確認)
$ git clean -n
ワーキングディレクトリの追跡対象外のファイルをもとに戻す(強制削除)
$ git clean -f
一時的な変更の記録
作業途中でのブランチの切り替え(stash)
$ git stash # 一時待避
$ git stash save "message" # メッセージを付けて一時退避
$ git stash pop # 最新のスタッシュを適用し、削除
$ git stash pop stash@{N} # N番目のスタッシュを削除
$ git stash apply # 最新のスタッシュを適用し、残す
$ git stash apply stash@{N} #N番目のスタッシュを適用し、残す
$ git stash clear # 全削除
$ git stash list #リスト標示
$ git stash drop # 最新のスタッシュを削除
$ git stash drop stash@{N} # N番目のスタッシュを削除
$ git stash clear # 全削除
履歴の確認
現在のブランチのバージョン履歴を一覧で表示
$ git log
現在のブランチのバージョン履歴を一覧で表示(各履歴を一行で表示)
$ git log --oneline
2つのブランチ間の差分を表示
git diff <first_branch> <second_branch>
ステージングエリアと最新のコミットの差分を表示
git diff --cached
または
git diff --staged
指定されたコミットのメタ情報と変更内容を表示
$ git show <commit_id>
指定されたファイルの各行毎に、最終変更の情報を表示
$ git blame <file>
指定コミットのリビジョンの内容をワーキングディレクトリに反映(全てのファイルをcommit_idの状態に戻す)
$ git checkout <commit_id>
履歴の修正
指定コミットによって加えられた変更をもとに戻す新しいコミットを作成、適用(コミットを打ち消すコミット)
$ git revert <commit_id>
現在のブランチのHEADを指定コミットまで移動、ステージングされた内容をクリアし、ワーキングディレクトリの変更状態を保つ
※ワーキングディレクトリの作業内容は保持される
$ git reset <commit_id>
現在のブランチのHEADを指定コミットまで移動、ステージングエリアとワーキングディレクトリの状態をクリア
※ワーキングディレクトリの作業内容は保持されない
$ git reset --hard <commit_id>
コミット履歴を修正(rebasee -i)
$ git rebase -i <commit_id>
コマンド | 説明 |
---|---|
pick | コミットを利用する |
reword | コミットを利用するが、コミットコメントを編集する |
edit | コミットを利用するが、amend刷るために、そのコミットでHEADがを止める |
squash | コミットの内容は利用するが、直前のコミットに内容を融合する |
fixup | squashに似ているが,コミットメッセージを放棄する |
exec | シェルを使ってコマンドを実行 |
コミットの行を消す | 該当のコミットを消す |
コミットの行を入れ替える | コミットの順番を入れ替える |
リモートリポジトリの変更の同期
リモートリポジトリから全てのブランチの更新履歴をリモート追跡ブランチに取り込む
$ git fetch <remote>
リモート追跡ブランチを指定ブランチに統合
$ git merge <remote_torack_brancch> <branch>
リモートリポジトリが .git/config に指定されている場合、現在のブランチのリモートの履歴を更新
$ git push
<refspec>として指定した名前をローカルリポジトリから探し、指定したリモートリポジトリの同名の参照を更新
※ブランチ名を指定した場合、ブランチ名を含む参照をローカルリポジトリから検索し、リモートリポジトリをの同名の参照を更新
$ git push <remote_repository> <refspec>
リモートブランチの更新履歴をリモート追跡ブランチに取り込み、リモート追跡ブランチを現在のブランチにマージ
$ git push <remote_repository>
その他
ワーキングディレクトリから圧縮ファイルを作成
$ git archive --format=zip HEAD -o backup.zip
グラフィカル標示
$ git --graph --decorate --oneline