Gitコマンドのまとめ
- .gitignoreファイルについては
- git diffについて詳しく別エントリにしました
- さらにまとめ直し中
ci | git add File1 [File2...] | File1[とFile2...]をステージングする |
---|---|---|
ci | git add -p | ステージする部分を対話的に決める*1 |
ci | git rm --cached File | Fileをステージから取り除く。ワークツリーからだけ削除してしまったファイルをGitの管理から外すときなどに |
r | git reset [HEAD^ [File...] ] | 全てのステージングをやめてHEADとindexをHEAD^の状態に戻す [Fileだけが対象]※HEADを動かすと元のHEADはORIG_HEADになる |
r | git reset --hard [HEAD^ [File...] ] | 全てのステージングをやめてHEAD,index,ワーキングツリーをHEAD^の状態に戻す ※HEADを動かすと元のHEADはORIG_HEADになる |
r | git reset --soft [HEAD [File...] ] | HEADのみをHEADの状態に戻す ※HEADを動かすと元のHEADはORIG_HEADになる |
r | git revert [-n] commit | commitを打ち消すコミットをする。すでにリモートに公開してしまってreset --hard, reset --mixedが出来ないとき用。[打ち消す変更をするがコミットはしない。圧縮revertしたいとき用*2] |
ci | git commit [-v][-c] [ [-a] [-m 'message'] ] [File/"ORIG_HEAD"] | ステージされてるものをコミットする[変更点を表示][注釈を再利用][ [過去にaddされたことのあるものを][注釈を直接付ける] ][Fileを指定して/git resetした後に再度] |
ci | git commit --amend | コミットをやり直す |
d | git diff [HEAD[ [..]HEAD^] ] | workingTreeとindex比較[workingTreeとHEAD比較[HEADとHEAD^比較] ] |
d | git diff --cached [HEAD] | indexとHEAD比較[indexとHEAD比較] |
b | git branch [NewB [FromB] ] | ブランチを一覧する [NewBブランチを作る [FromBブランチから] ][コミットをやり直す] |
b | git branch -lf B To | ブランチBをToの位置に動かす |
b | git checkout NewB | NewBブランチに切り替える |
b | git checkout -b NewB [FromB/Tag0.1] | NewBブランチを作成して切換[FromBブランチ/Tag0.1から] |
b | git branch -m FromB ToB | FromBブランチをToBブランチに名前変更する |
b | git branch -d OldB | OldBを削除する(マージされてないとダメ) |
b | git branch -D OldB | OldBを強制的に削除する |
s | git stash save [-k] [--patch] ['message'] | 現在ワークツリーの状態を保存する(状態は最後にcommitしたところまで戻る)[indexをそのままにする][一部を保存する][注釈を付ける] |
s | git stash list | stashを一覧する |
s | git stash pop [stash@{1}] | 直前のstashを解放しワークツリーに展開する(stashは削除される)[指定したstashを] |
s | git stash apply [stash@{1}] | 直前のstashをワークツリーに展開するが削除しない[指定したstashを] |
s | git stash drop [stash@{1}] | 直前のstashを破棄する[指定したstashを] |
s | git stash clear | stashを空にする |
s | git stash show [stash@{1}] | stashと親コミットの差を見る[指定したstashを] |
s | git stash branch ToB [stash@{1}] | 直前のstashからToBブランチを作る[指定したスタッシュから] |
t | git tag [ [-a] Tag0.1 [-m 'message'] ] | タグを一覧する [直前のブランチにTag0.1タグを付ける[注釈を付ける(-mなしだとエディタが立ち上がる) 注釈は-nで見られる] ] |
t | git tag -d Tag0.1 | Tag0.1タグを削除する |
m | git merge [--no-ff] FromB | FromBブランチを現在ブランチにマージする [現在ブランチの方を主流とする(マージ元のブランチが痕跡として残る)] |
m | git merge --squash FromB | FromBブランチでの変更部分を現在ブランチにステージングする(commitされていない) =圧縮コミット*3 |
e | git rebase FromB | 現在ブランチの変更点を全取消してFromBブランチをマージした後、現在ブランチの変更点を全コミットする*4 |
e | git rebase -i A | コミットAからHEADまでのコミット履歴を書き換える(並べ替えやsquash(直前commitに統合)など)*5 |
e | git rebase --continue | 競合を解決したのでrebaseを再開する |
e | git rebase --skip | 競合するコミットをスキップしてrebaseを再開する |
e | git rebase --abort | rebase前の状態に戻す |
o | git remote [-v] | リモートリポジトリを一覧する[url付きで] |
o | git remote add origin git@github.com:LeafCage/sample.git | 指定したリモートリポジトリにoriginというNNを付ける*6 |
p | git fetch [remote_name] | リモートからデータを取得する。*7pullは覚える必要がない。*8 |
p | git push [ [-u] remote_name master[:ToB] ] | 追跡中のリポジトリのブランチにpushする[masterブランチをリモートリポジトリの同名ブランチ(master)にpushする*9 [追跡ブランチに登録する(--set-upstream)*10] [origin/ToBブランチに] ] |
p | git push origin :ToB | originリポジトリのToBブランチを削除する*11 |
p | git push --delete origin ToB | originリポジトリのToBブランチを削除する*12 |
p | git push -f | 祖先ではないために拒絶されるリモートリポジトリに強制的にpushする ※普通は行ってはいけない |
*1:横着で神経質な私とあなたに贈るgit add -p #git #AdventCalendar - Qiita
*2:git revert で複数コミットを打ち消す - miauの避難所
*3:複数の変更を1つのコミットで行いたいときに使う
*4:Git超入門 - 猿でもできるGit rebase - DQNEO起業日記
*5:git rebase -i はやっぱりイケてる件【git】【rebase 】【iオプション】 - DRYな備忘録
*6:Git超入門:"git push origin master"の"push"と"origin"と"master"の意味がわからないあなたへ - DQNEO起業日記
*7:類似コマンドにremote updateがある。違いは、remote updateがリポジトリ全体を取得するのに対して、fetchはブランチ単位で取得すること。
*8:Git pullを使うべきでない3つの理由 - DQNEO起業日記