Git 主なコマンド

Tag:

Gitの操作は、GUI経由で行うというかたも多いかと思います。ですが、GUIを使えないときもあり、そのような場合、Gitコマンドの使い方を抑えておく必要があります。ここでは、Git操作でよく使うコマンドについて取り上げます。

初期設定

git config --global user.name "ユーザー名"
git config --global user.email "メールアドレス"

上記コマンドを実行すると「~/.gitconfig」に書き込まれる。

※「/etc/gitconfig」
全ユーザに対する設定ファイル。
「git config --system -l」で内容確認できる。

※「~/.gitconfig」
特定ユーザに対する設定ファイル。
「git config --global -l」で内容確認できる。

※リポジトリ内の「.git/config」
リポジトリに対する設定ファイル。
「git config --local -l」で内容確認できる。

※最終的に適用される設定値
「git config -l」で確認できる。

ローカルリポジトリ作成

# リポジトリにしたいフォルダ内で実行
git init

状態確認

git status

インデックスに登録

# ファイル指定
git add ファイル名

# 全てのファイル
git add . 

コミット

git commit -m "message"

# 複数行のメッセージ
git commit

# 直前のコミットメッセージを変更
git commit --amend

直前のコミットのミスを修正

git commit
  ミスを修正
git commit --amend
先に行ったコミットが、ミスを修正したものに置き換えられます。

reset(取り消し)

履歴において、指定コミットをなかったものとする。

# 最終コミット後の作業ディレクトリにおける修正を取り消し 
git reset --hard HEAD

# 作業ディレクトリの内容を1つ前のコミットの状態に戻す
git reset --hard HEAD^
resetのオプションごとの動作を理解するのに、下記URLが参考になります。
⇒ http://d.hatena.ne.jp/murank/20110327/1301224770
# ワークディレクトリの内容をそのままに直前のコミットを取り消す
git reset --soft HEAD^
HEAD^  直前のコミットを表す

revert(打ち消し)

履歴は残したままで、指定コミットによって変更された内容を元に戻すための新しいコミットを生成。

git revert <commit>

コミットログを確認

git log

# 1行表示
git log  --oneline

gitignoreに入れ忘れてコミットした場合

後からでも、以下コマンドで無視させることができます。

git rm --cached -f filename

filenameには無視したいファイルを指定。

最新コミットとの差分を表示

git diff HEAD
HEADは、現在使用しているブランチの先頭を表します。

ブランチ操作

# ローカルブランチの一覧表示
git branch

# リモートとローカルのブランチの一覧表示
git branch -a 

# ブランチを作成
git branch ブランチ名

# ブランチを削除
git branch -d ブランチ名

# 現在のブランチをリネーム
git branch -m 新しいブランチ名

ブランチ切り替え

git checkout ブランチ名

# ブランチの作成とチェックアウトをまとめて実行
git checkout -b ブランチ名
checkoutにより、HEADが移動することで、使用するブランチが変更されます。コミットしてない変更内容も移動先のブランチに対して移動します。

別ブランチの変更履歴を統合

「merge」を利用すると、現在のブランチに別ブランチの変更内容を統合できます。
featureブランチにmasterブランチの変更を統合してみます。

git checkout feature
git merge master

※mergeとrebase
rebaseでも変更履歴を統合できます。違いについては下記サイトで詳しく解説されていました。

変更内容を一時退避

# 一時退避
git stash

# 退避を戻す
git stash pop

# 退避の一覧表示
git stash list

# 退避の消去
git stash clear
checkoutを行うと、元のブランチで行った変更内容は、移動先のブランチに対して移動します。変更内容を移動させたくない場合、stashを使って退避させてからcheckoutを行います。

リモートリポジトリを登録

# HTTPS接続の場合(GitHUBアカウントのユーザー名、パスワードによる認証)
git remote add origin https://github.com/ユーザ名/リポジトリ名

# SSH接続の場合(公開鍵認証)
git remote add origin git@github.com:ユーザ名/リポジトリ名
これ以降、originがリモートリポジトリの場所の別名(識別子)として利用できます。

※origin/masterとmasterの違い
origin/master  リモートリポジトリ「origin」のブランチ「master」の位置を表す。
master         ローカルリポジトリのブランチ「master」の位置を表す。
# fork元リポジトリを登録
git remote add upstream git@github.com:fork元ユーザ名/リポジトリ名
これ以降、upstreamがfork元リモートリポジトリの場所の別名(識別子)として利用できます。

リモートリポジトリの確認

git remote -v

リモートリポジトリを変更

git remote set-url origin https://github.com/ユーザ名/リポジトリ名
git remote set-url origin git@github.com:ユーザ名/リポジトリ名

クローン

# リポジトリ名のディレクトリができる
git clone https://github.com/XXX/XXX.git

# リポジトリ名と別名のディレクトリにしたい場合
git clone https://github.com/XXX/XXX.git ディレクトリ名
デフォルトで、リモートリポジトリをoriginで参照できます。

リモートリポジトリのブランチに現在のブランチを送信

git push リモート名 ブランチ名

# originが指すリモートリポジトリのmasterブランチに、現在のブランチを送信
git push origin master

現在のブランチに、リモートリポジトリのブランチ統合

git pull リモート名 ブランチ名


ローカルのmasterにリモートの変更を取り込むには以下のようにします。

# masterに切り替え(作業途中のファイルがある場合、先にstashしておく)
git checkout master

# origin(fork先:自分のアカウント内)が指すリモートリポジトリのmasterブランチを受信
git pull origin master

# upstream(fork元)が指すリモートリポジトリのmasterブランチを受信
git pull upstream master

「git pull upstream master」で何が行われる?
1. フォーク元の内容「upstream/master」の取り込み
2.「upstream/master」を現在のブランチに統合

つまり、以下コマンドを実行したこととなる。

git fetch upstream
git merge upstream/master

PRの動作確認をローカルでしたい

git fetch origin pull/PR番号/head:ブランチ名

forkしているならupstream。

その後、checkout。

git checkout ブランチ名

タグ操作

# タグの一覧表示
git tag

# コミットにタグを付ける
git tag v2.0

# タグを削除
git tag -d v2.0

gitでの管理を辞める

.gitを削除すれば普通のディレクトリになります。

スポンサーリンク