LoginSignup
0
0

More than 3 years have passed since last update.

Gitコマンドメモ

Last updated at Posted at 2021-01-09

Gitのコマンドメモ

「独習 Git」の内容がよくまとまっていて分かりやすかったので、備忘録として一覧化。

Gitメモ

  • コミットされる順番
    • 作業エリア→ステージングエリア→コミット履歴
  • ローカルとリモート
    • ローカルに別フォルダを作成しその場所をリモートとすることも可能。
    • ベアレポジトリには作業エリアがない。通常はベアレポジトリをクローンして使う。
    • HEAD:現在のブランチを指しているポインタ。通常は最後のコミットを指すが、別のコミットポイントを指すことも可能。
    • master:デフォルトのブランチ名。嫌なら消してしまうことも可能
    • origin:レポジトリが指しているリモートの呼び名。嫌なら別の名前に変更可能。

全体操作、最初にやること

コマンド 内容 補足
git config --global alias.ll "log --graph..." git llという別名定義
git init ディレクトリをGitのレポジトリとする

基本の作業

コマンド 内容 補足
git status レポジトリの状態チェック
git add ファイル ファイルをステージングエリアに登録
git add --dry-run . どう動くか試す
git commit -m "commit message" レポジトリに登録されたファイルをコミット

レポジトリの調査

コマンド 内容 補足
git ls-files レポジトリに入っているファイルのリスト

履歴の調査

コマンド 内容 補足
git log コミット履歴の表示
git log --oneline 1行でヒストリ表示
git log --oneline ファイル 特定のファイルのヒストリ表示
git log --shortstat --oneline 変更になったファイル数の情報のみ。履歴をコミット毎に1行表示
git log --parents --abbrev-commit 親コミットSHA IDの短縮表示
git log --patch 個々のコミットの差分表示
git log --stat 個々のコミットの間で変更されたファイルの概要表示
git log -1 git log -n 1 と同じ。最新のコミットだけを表示
git log --merges マージの結果であるコミットのリストを表示
git log --grep=STRING コミットメッセージがSTRINGを含んでいるコミットのリストを表示
git log --graph --decorate --pretty=oneline -all --abbrev-commit レポジトリの履歴を全てのブランチ含めてグラフィカルに表示
git log --stat HEAD^..HEAD 現在のコミットと、その親の間にあるコミット(と、そのファイル)のリスト
git log --patch HEAD^..HEAD 現在のコミットと、その親の間にあるコミット(と、テキストの変更)のリスト

差分調査

コマンド 内容 補足
git diff 作業エリアとステージングの差分 新規作成だと表示されないらしい
git diff --staged コミット履歴とステージングエリアの差分
git grep STRING STRINGを含む、全てのファイルを探し出す

ファイルの変更・削除

コマンド 内容 補足
git rm ファイル ファイルをステージングエリアから削除
git mv ファイル1 ファイル2 ステージングエリアのファイル名変更
git reset ファイル ステージングエリアをリセット。作業エリアは変更なし。ファイルをコミット予定から外す。
git checkout -- ファイル 最後にコミットしたバージョンをレポジトリから取り出し作業エリアに入れる。作業エリアの変更を廃止する。 ステージングエリアに登録済みの場合は無効

タグ・ブランチの操作

Git2.23からgit branchの代わりにgit switchgit restoreが使える。

コマンド 内容 補足
git tag タグのリスト出力
git branch ブランチのリスト表示
git branch BRANCH BRANCHというブランチを作成 このブランチはHEADと同じコミットを指す
git rev-parse HEAD ブランチのHEADをSHA1_IDに変換する
git tag タグの一覧を表示
git show TAG_NAME TAG_NAMEというタグ名の情報表示
git tag TAG_NAME -m "message" YOUR_SHA1_ID YOUR_SHA1_IDにTAG_NAMEを割り当てる
git checkout BRANCH_NAME 作業エリアをBRANCHE_NAMEに変更する
git checkout YOUR_SHA1_ID SHA1IDで指定したバージョンを作業エリアにチェックアウトする
git branch -d master masterという名前のブランチを削除する
git branch -v 全てのブランチのリストをSHA1 IDを付与して表示
git branch YOUR_BRANCH_NAME YOUR_SHA1_ID YOUR_SHA1_IDを開始地点として、ブランチYOUR_BRANCH_NAMEを作成する
git reflog これまでに(git checkoutによって)行ったブランチ切り替えの全ての記録を表示

Stash操作

コマンド 内容 補足
git stash 作業中の作業エリア(WIP)をスタッシュに入れgit checkoutを可能とする
git stash list スタッシュに対比させたWIPのリストを表示
git stash pop 最後にスタッシュに入れた内容を作業エリアに反映させスタッシュから消去する

ブランチのマージ

コマンド 内容 補足
git diff BRANCH1...BRANCH2 BRANCH1とBRANCH2の差分表示
git merge BRANCH2 BRANCH2を現在の(カレント)ブランチにマージする
git merge --abort 2つの競合するブランチ間のマージを中止する
git merge-base BRANCH1 BRANCH2 BRANCH1とBRANCH2に共通するベースコミットを表示

クローン作成

コマンド 内容 補足
git clone SRC DEST_DIR SRCにあるGitリポジトリのクローンをDEST_DIRに作る
git log --oneline --all 全てのブランチからすべてのコミットログエントリを表示する 通常のgit logは、カレントブランチからのエントリだけを表示
git branch --all ローカルブランチだけでなく、リモート追跡ブランチも表示する
git clone --bare SRC DEST_DIR SRCにあるGitリポジトリのクローンをDEST_DIRにベアリポジトリとして作る DEST_DIRは、規約に従って.gitで終わるようにするのがベター
git ls-tree HEAD HEAD(カレントブランチ)の全てのファイルを表示

リモートとの共同作業

コマンド 内容 補足
git init --bare remote.git remote.gitという名前のベアリポジトリを作成
git checkout -f master masterブランチをチェックアウト。現在のブランチに変更がある場合は破棄
git remote 現在のリポジトリにあるリモートを表示
git remote -v show リモートの名前を、対応する利ノートURLと一緒に表示
git remote add hoge ../test.hoge hogeという名前のリモートを追加する。そのリモートは、ローカルリポジトリ../test.hogeを指し示す よくわからん。。。
git ls-remote REMOTE ローカルリポジトリREMOTEのリファレンスを表示。
GIT_TRACE_PACKET=1 get ls-remote REMOTE リモートとのネットワーク通信の内容を表示

変更をプッシュ

コマンド 内容 補足
git push origin master masterブランチをoriginという名前のリモートにプッシュする
git push 現在のブランチを、デフォルトのリモート追跡ブランチにプッシュする。デフォルトはgit checkoutまたはgit push --set-upstreamにより設定される。
git push --set-upstream origin new_branch originという名前のリモートにあるnew_branchへのリモート追跡ブランチを作成する 意味不明
git config --get-regexp branch 名前にbranchという言葉が含まれているGit構成設定のリストを表示
git branch -d localbranch localbranchという名前のローカルブランチを削除する
git push origin :remotebranch remotebranchという名前のリモートブランチを、originという名前のリモートから削除する 削除するの?
git tag -a TAG_NAME -m TAG_MESSAGE SHA1_ID SHA1_IDにタグをつける。タグ名にTAG_NAME、メッセージはTAG_MESSAGE
git push origin TAGNAME TAGNAMEという名前のタグを、originという名前のリモートにプッシュする
git push --tags 全てのタグをデフォルトのリモートにプッシュする
git push origin :TAGNAME originという名前のリモートから、TAGNAMEという名前のタグを削除する
git tag -d TAGNAME ローカルリポジトリから、TAGNAMEという名前のタグを削除する

同期を保つ(プル)

コマンド 内容 補足
git pull リポジトリを複製元(上流リポジトリ)と同期 get fetchとgit mergeの2つで構成
git fetch リモートリポジトリから新しいコミットが取り込まれ、リモート追跡ブランチが更新される
git merge FETCH_HEAD FETCH_HEADからの新しいコミットを、カレントブランチにマージする
git pull --ff-only --ff-onlyスイッチを指定すると、FETCH_HEADがカレントブランチの子孫である場合に限り、マージが許可される(fast-forwardマージ)

git rebaseの理解

コマンド 内容 補足
git log --oneline master..new_feature masterブランチの先で、new_featureブランチまでにあるコミットを表示
git rebase master masterの最新コミットをカレントブランチにリベースする
git reflog reflog(HEADの変更をすべて記録した内部履歴)を表示
git reset --hard HEAD@{n} HEAD@{n}によって表現されるSHA1 IDを指し示すように、HEADをリセット。1ーーはrdスイッチは、ステージングエリアと作業ディレクトリの両方をリセットする。
git rebase --interactive master masterの最新コミットをカレントブランチに対話処理でリベースする。エディタが開き、どのコミットをリベースに含めるかの取捨選択が可能となる。
git cherry-pick SHA1ID 指定のコミットをカレントブランチにコピーする

GitHub(やその仲間たち)との連携

コマンド 内容 補足
git remoet add mygit https://[URL]/sample.git GitHubにあるリポジトリ(sample.git)を指すmygitという名前のリモートを追加する。
git push -u mygit master masterブランチをmygitリポジトリにプッシュする。-uをつけると次回以降もそれを上流とする。
git clone https://[URL]/sample.git GitHubにあるsampleという名前のリポジトリを複製する

GitのConfig色々

コマンド 内容 補足
git config --local --list ローカル(リポジトリ固有の)Git構成をリストで表示
git config --global --list グローバル(ユーザ固有の)Git構成をリストで表示
git config --system --list システム(サーバ全体の)Git構成をリストで表示
git config --local --edit ローカル(リポジトリ)Git構成を編集する
git config --global --edit グリーバル(ユーザ)Git構成を編集する
git config --system --edit システム(サーバ)Git構成を編集する
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0