Gitコマンドをまとめて書いておきます。
いろいろまとめてくれているサイトはあるのですが、細かいコマンドも併せてまとめている記事がすくない(?)と感じたため、自分の知っているコマンドたちは利用シーンなんかも併せて載せていければと思っています。
ルールとして、#から始める文字列はコメント、[]で括られている箇所はユーザが与える任意の文字列とします。
- ローカルリポジトリの作成
- ステージへの追加(add)
- ローカルリポジトリへのcommit
- git addのやり直し(取消)
- git commitのやり直し
- ファイルの削除を記録する
- ブランチの作成/移動/削除/変更/一覧/
- GitHubにデータを送信する(リモートリポジトリにデータをプッシュする)
- 他人のGitリポジトリをローカルにコピーする
- その他の便利なコマンド
- コマンドにエイリアスを付与する
- git管理対象から特定ファイルを外す
ローカルリポジトリの作成
これはGitでバージョン管理するためのはじめの一歩です。
まずGit管理下にしたいディレクトリ(フォルダ)を作成し、ターミナルでそのディレクトリまで移動します。
そこで下記コマンドを実行して、Git管理下にします。
$ git init
Initialized empty Git repository in ~~~
と表示されれば成功です。
※ちなみに、すでにGit管理下になっている場合は
Reinitialized existing Git repository in~~~ と表示されます。
この処理で現在のディレクトリに.gitフォルダが作成されていると思います。
(隠しファイルになっているので、エクスプローラやFinderからはそのままでは見えないかもしれません)
ステージへの追加(add)
該当のディレクトリにファイルやフォルダを置いたら、
$ git add [ファイル名 or フォルダ名]
とコマンドを入力します。 上記のコマンドを叩くと、リポジトリに圧縮ファイルが、ステージにインデックスファイルが作成されます。
圧縮ファイル?ステージ?なんだよソレという方は下記記事を参照ください。
入力してEnter後、何もメッセージが表示されなければ成功です。
addコマンドには下記のような様々なオプションが指定でき、覚えると格段に楽になります。
(オプション指定しない場合は-Aと同等)
$ git add -A #新規作成/変更/削除されたファイル全てを追加(AllのA) $ git add -u #変更/削除されたファイルを追加。新規作成は対象外。(updateのu) $ git add . #新規作成/変更されたファイルを追加。削除は対象外。 $ git add *.md #ファイル形式を指定して追加。 $ git add -n #addされるファイル一覧を表示
基本的には、ファイルを作成 or 修正したら、git add -n
コマンドでステージに追加されるファイルを確認し、OKであれば git add -u
などでステージに追加する、という流れが良いかと思います。
ステージにインデックスを追加したら,次は登録(commit)し、リポジトリに反映させます。
ローカルリポジトリへのcommit
$ git commit -m "初めてのGitHub"
上記コマンドで,インデックスの内容が全てローカルリポジトリに登録されます。
細かく説明すると、ツリーファイルとコミットファイルがリポジトリに作成されます。
-m
はコメント追加のオプションです。このオプションを追加しなかった場合、Gitでデフォルト指定しているエディタが起動し、 そこでコメントを追加することができます。ただし、いちいち「エディタが起動→コメント入力→エディタを終了」は面倒くさいので、-m
オプションは付けることをオススメします。
また、-v
オプションをつけることで、変更箇所を確認してcommitすることができます。
この時点では,『ローカル』リポジトリなので、リモートリポジトリ(GitHub)上には反映されておりません。
基本的な作業の流れとしては、上記までで紹介した通り、
ファイルの作成 or 編集 → ステージへadd → リポジトリにコミット
の繰り返しになると思います。
git addのやり直し(取消)
# 全て一括で取り消す場合(2つは同義) $ git reset HEAD . $ git reset . # ファイル指定で取り消す場合(2つは同義) $ git reset HEAD [file_path] $ git reset [fie_path]
間違えて修正途中でステージに追加しちゃった、などのときに使います。
ここで注意してほしいのが、このgit reset
コマンドではインデックスを(直前のコミット状態に)リセットしているのであって、最後のaddを取り消ししているのはないということです。
例えば、git add
を2回行った後に、git reset
を行うと、2回のaddがリセットされます。(最後の1回のaddが取り消される訳ではない)
git commitのやり直し
$ git commit --amend
例えば、Aファイルを追加してgit add
, git commit
した後に、Bファイルを追加し忘れていた場合、Bファイルを作成後、git add
を行った後に今回のコマンドgit commit --amend
を利用したりします。
この場合、元のコミットを上書きするのではなく、元のコミットを無効にして、新たなコミットを作るという動作になります。
ファイルの削除を記録する
# ファイルごと削除する場合(リポジトリとワークツリーの両方から削除) $ git rm <ファイル名> $ git rm -r <ディレクトリ名> # ファイルを残す場合(gitからのみ削除(ワークツリー上は残す!!)) $ git rm --cached <ファイル名>
基本的に--cached
オプション付けた方が良いのかな?と思います。
ブランチの作成/移動/削除/変更/一覧/
$ git branch [branch_name] #ブランチの作成 $ git checkout [branch_name] #ブランチの移動 $ git branch -d [branch_name] #ブランチの削除(deleteのd) $ git branch -m [branch_name] #現在のブランチ名の変更 $ git branch # ローカルブランチの一覧表示(現在いるブランチには*が付きます) $ git branch -a #リモートとローカルのブランチの一覧 $ git branch -r #リモートブランチの一覧 $ git checkout -b branch_name origin/branch_name //リモートブランチへチェックアウト
今自分がいるブランチどこだっけ?というときに使えます。
GitHubにデータを送信する(リモートリポジトリにデータをプッシュする)
GitHubにログインし、該当のURLをコピーしてください。
# originというショートカットでurlのリモートリポジトリを登録 $ git remote add origin [上記URL(https://~~)]
そしてコミットされたデータをGitHubに送信(プッシュ)します。
上記のように登録した場合、下記コマンドでPUSHすることが可能です。
# git push [リモート名] [ブランチ名] # 例 $ git push origin master
ちなみに、初回PUSH時に-u
オプションをつけることにより、以降はgit push のみで送信することが可能になります。
$ git push -u origin master
・・・
$ git push
他人のGitリポジトリをローカルにコピーする
下記コマンドでクローン(コピー)を作成できます。
$ git clone https://github.com/~~~~
このコマンドで、ファイル群とgitリポジトリがローカルにコピーされます。
その他の便利なコマンド
$ git status #ワークツリー、ステージ、リポジトリ間差分の表示 $ git diff ○○○ #変更差分を確認 ○○○はオプションファイル名 ワークツリーとステージの差分(git addする前の変更分) $ git diff --staged #変更差分を確認 ステージとリポジトリの差分(git addした後の変更分) $ git log #変更履歴を確認する
補足オプション
- git log
--online
:1行で表示する
-p ファイル名
:ファイルの変更差分を表示する
-n <コミット数>
:表示するコミット数を制限する
コマンドにエイリアスを付与する
$ git config --global alias.エイリアス名 コマンド名 # 例 $ git config --global alias.ci commit
git管理対象から特定ファイルを外す
プロジェクトフォルダ内に.gitignoreファイルを作成する。
そして、そのファイル内にgit管理から外したいファイル名を記載する。
.gitignore
# このように記載することにより、secret.txtファイルはgit管理されない secret.txt