開発でGitやSVNをよく使うことがあると思います。
この記事はGitを使う時によく使用するコマンドをまとめています。
記事の内容追加に関して
こちらの記事は随時内容を追加しております。
不足分も追加する予定にしておりますのどうぞよろしくお願いいたします。
簡単にGitとは?
Gitはプログラムソースコードの変更履歴を追跡、記録するための分散型バージョン管理のシステムである。Linuxカーネル開発を担当しているリーナス・トーバルズ氏が開発、メンテナンスは濱野純氏が対応している。
Gitをインストールした後に使うコマンド
Gitを初期インストールした時に誰が対応したか把握できるようにユーザ名やメールアドレスを共通情報に登録しておきます。Gitの操作はWindowsならコマンドプロンプト・Macならターミナルでコマンド入力でおこないます。
git config --global user.name "[Gitで利用する名前]"
git config --global user.email "[Gitで利用するメールアドレス]"
Gitではコミット時にエディタを使ってコメント等を記載します。
下記コマンドで自身で使いやすいエディタを設定する事ができます。
git config --global core.editor "[エディタ名パス]"
例) SublimeEditerを設定した場合
git config --global core.editor "/Applications/Sublime\ Text.app/Contents/MacOS/Sublime\ Text --wait"
設定の確認は下記コマンドを利用します。
git config --list
設定された内容はホームディレクトリ直下にある .gitconfig に保管されています。直接設定ファイルを変更する事もできます。
よく使うGitコマンド (ローカル編)
ローカルリポジトリの新規作成 (init)
Gitで管理したいディレクトリに移動して下記コマンドを入力する事で新規でリポジトリを作成できます。リポジトリは同ディレクトリ内の .git で管理されます。
※ .git は隠しディレクトリのため設定により表示されない場合があります。
git init
ステージにファイル・ディレクトリの追加 (add)
変更履歴を残したいファイル・ディレクトリを指定します。
ディレクトリを指定すると中に存在するファイル全てが指定されます。
git add [ファイル名] or [ディレクトリ名]
例)
git add index.html
git add items/
ステージのファイル・ディレクトリを取り消す (reset)
ステージに追加したファイル・ディレクトリを取り消します。
取消時、作業ツリーの内容は変更されません。
git reset HEAD [ファイル名] or [ディレクトリ名]
例)
git reset HEAD index.html
git reset HEAD items/
git initを使って新規生成をした直後に取消をする場合、HEADが存在しないためエラーになります。特殊なケースだけ下記コマンドを使用してください。
git rm --cached [ファイル名]
git rm --cached -r [ディレクトリ名]
例)
git rm --cached index.html
git rm --cached -r items/
ステージファイルの変更を記録 (commit)
ステージに登録されているファイルの変更内容を保存します。
コマンドを実行するとエディタ設定がある場合、コメント入力用にエディタが開きます。保存を行い閉じる事でコミットが完了します。
git commit
git commit -m "[メッセージ]"
オプション
オプション | 内容 |
---|---|
-m "[メッセージ]" | エディタを使用せずコメントを入力 |
-v | 変更内容の詳細を表示してコミット |
--allow-empty | 空のコミットを作成 |
ファイルの変更状況を確認する (status)
Git管理下のフォルダで変更されているファイルを把握する事ができます。
git status
git status [ファイル名] or [ディレクトリ名]
ファイルの変更内容を差分で確認する (diff)
Git管理下のフォルダで変更されているファイルの内容を差分確認できます。
変更前と変更後の内容を表示して確認します。
git diff
git diff [ファイル名]
git diff --staged
オプション
オプション | 内容 |
---|---|
--staged | ステージに設定されるファイルのみ比較 |
--name-only | 差分があるファイル名のみ表示 |
ファイルの変更履歴を確認する (log)
Git管理下のフォルダで変更されているファイルの内容を差分確認できます。
変更前と変更後の内容を表示して確認します。
git log
git log -p [ファイル]
git log --oneline
オプション
オプション | 内容 |
---|---|
--oneline | 1行で内容を表示 |
--graph | ブランチの分岐を確認 |
--author=[ユーザ名] | 指定したユーザのコミットメッセージを表示 |
--name-only | 変更したファイル名のみ表示 |
-p | ファイルの変更を差分で確認 |
-p [ファイル名] | 指定されたファイルの差分で確認 |
-n [コミット数] | コミットの数を指定の数値で制限 |
ファイルの移動を記録する (mv)
Gitに記録されているファイルを移動する事に利用します。ファイル名の変更時にも利用できます。
git mv [旧ファイル] [新ファイル]
git mv [ファイル名] [ディレクトリ名]
例)
git mv abc.txt def.txt
git mv *.txt test/
ファイルの削除を記録する (rm)
Gitに記録されているファイルの内容を削除します。
変更前と変更後の内容を表示して確認します。
git rm [ファイル名]
git rm -r [ディレクトリ名]
オプション
オプション | 内容 |
---|---|
--cached [ファイル名] | ファイルは残しGit履歴から削除 |
-r [ディレクトリ名] | 指定ディレクトリ内のファイルを一括削除 |
ファイルの変更を取消する (checkout)
変更途中のファイルを変更前の状態に戻します。
checkoutコマンドの後に「--」と付いているのはブランチ名とファイル名が被る場合に不具合が発生するのを防ぎます。
git checkout --
git checkout -- [ファイル]
git checkout -- [ディレクトリ名]
例)
git checkout -- def.txt
git checkout -- test/
直前のコミット内容を修正する (commit)
コミットをした後に修正をしたい場合に使います。
このコマンドはリモートリポジトリに上げたコミットにしてはいけません。
もし上げてしまっている場合は、修正用のコミットを別で作成してください。
git commit --amend
よく使うGitコマンド (リモート編)
リモートリポジトリは多人数で開発をする際に利用される共有のリポジトリです。GitHubやBitbucketなどインターネット上で提供されているタイプと、社内ネットワーク内で提供されるタイプがあります。
リモートリポジトリから取得、作成 (clone)
リモートリポジトリから取得をおこないローカルリポジトリを作成します。
git clone [リモートリポジトリ名(URL)]
例)
git clone https://github.com/todatomohiro/xxxxxxxx.git
GitHubの場合は対象リポジトリのページ内にURLが表記されています。
リモートリポジトリを新規追加 (remote add)
リモートリポジトリを新規追加します。この設定をすることでローカルリポジトリの内容をプッシュ(アップ)することができます。
git remote add [リモート名] [リモートリポジトリ名(URL)]
例)
git remote add origin https://github.com/todatomohiro/xxxxxxxx.git
リモートリポジトリを解除 (remote rm)
登録されているリモートリポジトリを解除します。
git remote rm [リモート名]
例)
git remote rm origin
リモートリポジトリに送信 (push)
登録されているリモートリポジトリにローカルリポジトリの変更内容を反映します。
git push [リモート名] [ブランチ名]
例)
git push origin master
オプション
オプション | 内容 |
---|---|
-u | 次回以降、[リモート名] [ブランチ名]を指定なしで可能 |
-f | 強制的に送信 ※こちらのオプションはバージョンを壊す可能性があるため理由無く使わない |