「忘れちゃっても実装できる仕組み」を作りたくて、基本的なgitコマンドをまとめました。
今後も長らくお世話になるものだと思うので、自分を含め他の人のお役に立てれば幸いです。
init【リポジトリの準備】
ディレクトリにリポジトリを作成.
$ git init
ベアリポジトリの作成
$ git init --bare
グループ書き込み権限を有効にする.
$ git init --shared
remote 【リモートリポジトリの一覧】
リモートリポジトリの一覧表示
$ git remote
リモートリポジトリの追加
$ git remote add [username] [remote repository PATH]
リモートリポジトリの名前変更
$ git remote rename [remoterepository] [new name]
リモートリポジトリの情報を見る
$ git remote show [remote repository]
リモートリポジトリで排除されたブランチをローカルからも削除
$ git remote prune [remote repository]
fetch 【リモートリポジトリの情報のついかと更新】
リモートリポジトリの最新情報を追加
$ git fetch [remote repository]
リモートリポジトリの削除情報をローカルに更新
$ git fetch --prune
branch【ブランチの操作】
現在のブランチの確認と、新しいブランチを作成
$ git branch &[new branch]
すべてのブランチを確認
$ git branch -a
リモートブランチを確認
$ git branch -r
ブランチを削除
$ git branch -d [branch]
ブランチの名前を変更
$ git branch -m [branch] [new branchname]
他のユーザーのブランチ、自分のブランチを関連付ける
$ git branch --set-upstream [my branch] [other branch]
add 【インデックスに追加・登録する】
ファイルやディレクトリをインデックスに登録.
$ git add [filename]
すべての変更を含むワークツリーの内容をインデックスに追加.
$ git add -A
以前コミットしたことがあるファイルだけインデックスに追加.
$ git add -u
commit【コミットの操作】
インデックスに追加されたファイルをコミット
$ git commit
コミットメッセージを添えてコミット
$ git commit -m “[comment]”
新規を除く変更されたファイルをインデックスに追加してコミット
$ git commit -a
###直前のコミットを修正
$ git commit --amend
status ファイルの変更を表示
前回のコミットと比較してどのファイルが変更されたかを表示.
$ git status
log 【コミットログの操作】
コミットログを参照
$ git log
コミットログの先頭7桁のコミットIDを表示
$ git log --oneline
コミットログのHEADの位置を明示
$ git log --decorate
コミットログを縦グラフで表示
$ git log --graph
指定した文字がコミットログに含まれるコミットを表示
$ git log --grep [filter]
diff 【差異を表示】
インデックスとワーキングツリーの差異を表示
$ git diff
HEADとインデックスの差分を表示
$ git diff --cached
コミット間の差異を表示
$ git diff [commit id 1] [commit id 2]
checkout
コミットされた過去のファイルを復元
$ git checkout [commit id] [filename]
ブランチを変更
$ git checkout [branch]
コンフリクトしたときに上方を指定してファイル内容を採用
$ git checkout --ours [filename]
コンフリクトしたときに下方を指定してファイル内容を採用
$ git checkout --theirs [filename]
show 【表示に関する操作】
最新のコミット内容を表示
$ git show
タグを指定してコミット内容を表示
$ git show [tagname]
reset 【やり直しなどの操作】
インデックスを現在のHEADの状態にする
$ git reset [commit id]
インデックスからファイルをアンステージ
$ git reset HEAD [filename]
すべてをコミットIDの状態に戻す
$ git reset --hard [commit id]
git reflogで確認した番号の状態に戻す
$ git reset --hard HEAD@{[number]}
直前の状態に戻す
$ git reset --hard ORIG_HEAD
rm 【ファイルを削除】
ワークツリーとインデックスからファイルを削除
$ git rm [filename]
インデックスのファイルを削除
$ git rm --cached [filename]
mv 【ファイル名を変更】
インデックスとワークツリーに同ファイル存在時、ファイル名を変更
$ git mv [filename 1] [filename 2]
revert / rebase 【コミットの取り消し】
コミットIDのコミットを取り消す
$ git revert [commit id]
rebase
コミットIDから古い順にコミットを表示
- コミットの行を消すとコミットの取り消し
- 先頭のpickをほかのものに置き換えるとコミットメッセージなどの編集が可能
$ git rebase -i [commit id]
直前のgit rebaseの編集を中止
$ git rebase --abort
git rebaseの変更を適応
$ git rebase --continue
clone 【リポジトリをコピー】
リポジトリをコピー
$ git clone [repository PATH] [new repository PATH]
push 【リモートリポジトリに変更を書き込む】
リモートリポジトリに変更を書き込む.
$ git push [remote repository PATH] [branch]
リモートリポジトリにすべてのタグをアップロード
$ git push [remote repository] --tags
リモートリポジトリに指定したタグをアップロード
$ git push [remote repository] [tagname]
指定したブランチ,もしくはタグをリモートリポジトリから削除
$ git push [remote repository] :[branch or tagname]
pull
リモートリポジトリの変更を取り込む
$ git pull [remote repository PATH] [branch]
merge 【ブランチ同士をマージ】
現在のブランチをほかのブランチとマージ
$ git merge [branch]
tag
タグの一覧を表示
$ git tag
タグとそのメッセージ[行数指定]の一覧を表示する(行数指定なしの場合1行)
$ git tag -n[number]@
タグを,フィルターをかけて表示する.
$ git tag -l [filter]
現在のコミットIDにタグを関連付けする.
$ git tag [tagname]
コミットIDを指定してタグを関連付けする.
$ git tag [tagname] [commit id]
現在のコミットIDにメッセージ付きのタグを関連付けする.
$ git tag -a [tagname]
指定したタグを削除する.
$ git tag -d [tagname]
stash
現在の状態を保存する.
$ git stash
メッセージ付きで現在の状態を保存する.
$ git stash save “[message]”
保存した状態の一覧を表示する.
$ git stash list
最新の保存状態を復元する.
$ git stash pop
番号を指定して保存状態を復元する.
$ git stash pop stash@{[numbar]}
保存状態をリストに残したまま最新の保存状態を復元する.
$ git stash apply
保存状態をリストに残したまま指定した番号の保存状態を復元する.
$ git stash apply stash@{[number]}
保存状態を削除する.
$ git stash drop stash@{[number]}
保存状態をすべて削除する.
$ git stash clear
reflog
過去にHEADが指していたコミット一覧をを表示する.
$ git reflog
ブランチを指定して過去にHEADが指していたコミット一覧を表示する.
$ git reflog [branch]
cherry-pick
別のブランチのコミットを現在のブランチにコピーする.
$ git cherry-pick [commit id]
config
使用されるリポジトリの設定を表示する.
$ git config -l
ユーザ名の設定.
$ git config --global user.name [username]
メールアドレスの設定.
$ git config --global user.email [email address]
出力結果を色づけする.
$ git config --global color.ui auto
まとめ
テーブルにすべきか、コードにすべきか悩みましたが、とりあえずコピペ出来る校舎にしてみましたがいかがでしょうか。
とりあえず最初は
- リモートリポジトリをクローン
- ブランチを切って作業
- 変更してコミット
- コミットメッセージを添えてプッシュ
- レビューを受けて修正
- マージして1にもどる
という開発の基本的な流れができるようになりましょう!
長文お疲れさまでした!