ようやくGitをちゃんと学ぶことができたのでコマンド一覧的なのをメモ。
Git基本操作まとめ
設定
# リポジトリのクローン git clone [url] # リポジトリの初期化(.gitディレクトリの作成) git init # リモート(ファイルをアップロードする場所)を登録 git remote add [リモート名(大抵はorigin)] [リモートのURL] git remote add origin https://.... # ユーザー名等の設定 git config --global user.name [ユーザー名] git config --global user.email [メールアドレス]
リポジトリ
# 共有するファイルを選択(監視対象に追加) git add [file name] # 選択したファイルを記録 git commit -m "コミットメッセージ" # 前回のコミットの修正 git add [追加し忘れたファイルなど] git commit --amend
リモートリポジトリ
# リモート参照(リモートのポインタ) git ls-remote [remote] # リモートの情報 git remote show [remote] # リモートにファイルをアップロードする git push origin master # リモートからファイルをダウンロードするだけ(現在のブランチにマージしない) git fetch [remote] # リモートでの更新をダウンロードして手元とマージする git pull [remote] # リモートブランチの削除(ガベージコレクションするまではポインタを削除するだけ) git push [remote] --delete [branch] # リモート名の変更 git remote rename [old] [new] # リモートの削除 git remote rm [remote name]
ファイルの確認
# 変更した/addしたファイル名の確認 git status # 変更内容の確認 git diff [ファイル名] # 自分・他人のコミットログの確認 git log # 変更内容を見たいとき:-p (表示を終了したいときはQキーで抜ける) git log -p
ファイルの操作
# ファイルの削除 git rm [file] # ハードディスク上にはファイルを残しておきたいけれど、もう Git では追跡させたくないというような場合 git rm --cached [file] # .logで終わるすべてのファイルを削除する場合 git rm \*.log # ファイルの移動/ファイル名の変更 git mv [file_from] [file_to]
タグ
# タグの一覧表示 git tag # 注釈付きのタグ annotated tag git tag -a v1.0 -m "my version 1.0" # タグのデータとそれに関連づけられたコミットを見る git show # 軽量版(lightweight)のタグ git tag v1.1-lw # タグの共有(デフォルトのgit pushではタグ情報は送らない) git push origin [tagname] # 手元にあるタグのうちまだリモートサーバーに存在しないものをすべて転送 git push origin --tags
Gitエイリアス
# git commitを git ciで指定できるようにする git config --global alias.ci commit # 直近のlogを見るコマンドlastを追加する git config --global alias.last 'log -1 HEAD'
ブランチ
# ブランチ一覧 git branch # 新しいブランチの作成 git branch [name] # 作業中のローカルブランチのポインタ(HEAD)を確認 git log --decorate # ブランチの切り替え git checkout [name] # ブランチの分裂の確認 git log --oneline --decorate --graph --all # ブランチの作成と切り替えを同時に行う git checkout -b [name] # ブランチの削除 git branch -d [name] # マージ:現在作業中のブランチにmasterブランチの内容をマージする git merge master # コンフリクトしてマージできなかったファイルを知る git status # コンフリクトの解決をグラフィカルに行う git mergetool # マージされていない作業を持っている(削除できない)すべてのブランチを表示 git branch --no-merged
リベース (rebasing)
- 分岐を残さずにすっきりしたツリーにするマージ方法
- 公開リポジトリにプッシュしたコミットをリベースしてはいけないらしい
- リベースをすると、既存のコミットを破棄して新たなコミットを作成することになるため
プッシュする前の作業をきれいに整理する手段としてだけリベースを使い、 まだ公開していないコミットだけをリベースすることを心がけていれば、何も問題はありません。 (『Pro Git』3.6節)
# リベース git checkout [branch] # 統合したいサブのブランチへポインタを移動 git rebase master # マスターにリベースする
参考
基本中の基本の操作はprogateで学ぶのが簡単でした。
『Pro Git』はかなり丁寧に詳細な情報を載せて書かれています。
練習によさそうなアプリ
ゲーム感覚で練習できる素晴らしいアプリをみつけました。