2017/12/27
Gitの主要コマンド
Vanです。
引き続き勉強会で学んだことを紹介します。
今回はLuiさんの調べたGitの主要コマンドです。
コマンド | 解説・詳細 |
git config --global user.name "<ユーザ名>" git config --global user.email "<メールアドレス>" | 設定 |
git config --global color.ui auto git config --global alias.co checkout | gitの出力をカラーリング エイリアス設定(checkoutをcoに) |
git branch <NAME> git checkout -b <新ブランチ名> git branch -d <ブランチ名> | ブランチ作成 ブランチの作成とチェックアウトをまとめて行う ブランチ削除 |
git remote add <NAME> <URL> | リモート化・・・インデックス(ファイルの変更点などのリスト?)をGitHubに作成 リモートリポジトリのアドレスを名前付け(普通は<NAME>はorigin) |
git status : 確認 git add -A : 追加削除情報をインデックス登録 git commit -m "add event" : コメント git push -u <リポジトリ名> <ブランチ名> : 反映 | git status : 確認 git add -A : 追加削除情報をインデックス登録 git commit -m "add event" : コメント git push -u <リポジトリ名:origin> <ブランチ名> : 反映 クローンしたリポジトリでは、pushのパラメータのorigin masterは省略可 プッシュやプルは実行時にリモートリポジトリ名を省略すると、originという名前のリモートリポジトリを使用 |
git log git log --graph --oneline git log --decorate | リポジトリの変更履歴を表示 可視化 タグ情報も見れる |
stash | まだコミットしてないファイルがインデックスやワークツリーに残したまま他ブランチへチェックアウトすると、その変更内容は元のブランチから移動先のブランチに対して移動する。 移動先のブランチで同じファイルが既に変更されている場合チェックアウトに失敗。 このような場合は、変更内容を一度コミットするかstashで一時的に変更内容を退避させてからチェックアウトしなければならない 退避させた変更は後から取り出して、元のブランチや別のブランチに反映可 |
rebase | merge : 変更内容の履歴はそのまま残るが、履歴が複雑になる rebase : 履歴は単純になるが、元のコミットから変更内容が変更される(元のコミットを動かない状態にしてしまうことがある) rebaseしただけだとmasterの先頭の位置はそのままなので、masterブランチからNEWブランチをマージして、NEWの先頭まで移動 (例:統合ブランチにトピックブランチを取り込む場合は、まずrebaseしてからmerge) rebaseにiオプションを指定すると、コミットの書き換え、入れ替え、削除、統合を行うことができる → pushする前にコミットコメントをきれいに書きなおす、意味的に同じ内容のコミットをわかりやすいように一つにまとめる、コミット漏れしたファイルを後から追加する |
git fetch | pullを実行するとリモートリポジトリの内容のマージが自動的に行われる。(pull = fetch + merge) 単にリモートリポジトリの内容を確認したい場合はfetch 取得したコミットは名前の無いブランチとして取り込まれ、FETCH_HEADという名前でチェックアウト |
git tag <tagname> git tag -am "注釈" <tagname> git tag -d <tagname> | タグ名を指定してcheckoutしたり「コミットの書き換え」で説明するresetをすることで、簡単に過去の特定の状態に戻せる -aで注釈つきタグ、-mでコメント タグ削除 |
git commit --amend | 指定してコミットを行うと、同じブランチの直前のコミットに対して内容を追加やコメントの修正 |
git revert HEAD | 指定したコミットの内容を打ち消すコミットを作り出す。rebase -iやresetによるコミット削除は、そのコミットが既に公開済みだと削除できない。 |
reset | 要らなくなったコミットを捨てる モード名 soft ・・・ HEAD位置変更する + インデックス変更しない + ワークツリー変更しない → コミットだけを無かったことにする mixed ・・・ HEAD位置変更する + インデックス変更する + ワークツリー変更しない → 変更したインデックスの状態を元に戻す hard ・・・ HEAD位置変更する + インデックス変更する + ワークツリー変更する → 最近のコミットを完全に無かったことにする |
cherry-pick | cherry-pickでは、別のブランチから指定したコミットをコピーして、現在のブランチに取り込む (ブランチを間違えて追加したコミットを正しい場所に移す、別ブランチのコミットを現在のブランチにも追加する) |
squash | このオプションを指定してブランチをマージすると、そのブランチのコミット全てをまとめたコミットが追加される |
rm -rf ディレクトリ名 | gitディレクトリごと削除 |
git pull origin develop | developブランチのものを取ってくる(pull = fetch + merge) |
git add -A 1.Xと2.Xの違い | (1.X) git add . と git add -u を足したもの(削除と追加ファイル全部反映) git add . ・・・ ワーキングツリーに新規作成、あるいは変更されたファイル対象(削除されたファイルはaddされない) git add -u ・・・ 一つ前と最新のステージを比較して、変更があった部分のみをadd(新しく作られたファイルはaddされない) (2.X) git add -A : ツリー全体を対象とする git add . : カレントディレクトリ以下のツリーを対象とする Git 1.x では対象に削除されたファイルを含むかが違い、Git 2.0からはその違いはない。 |
git checkout master git merge(rebase) develop git add myfile.txt(競合修正後) git rebase --continue | まず取り込み先の別のブランチに移動 developブランチの内容を持ってくる(競合しなければdevelopにブランチ切り替わって統合) rebaseの場合、競合箇所を修正した後はコミットではなくrebaseコマンドに --continue オプションを指定実行。もしrebase自体を取り消す場合は --abort オプションを指定 最後にgit push origin master |
git checkout . git reset --hard HEAD~ | 変更を打ち消す マージを取り消し |
今回は初心者の自分にもわかりやすい内容ですね。
今回の勉強会で学んだことの紹介は以上です。
また次回の勉強会をお楽しみに(?)