Gitに入門し終わった人のためのGitの使い方一覧

使い始めるとき

リポジトリの作成

Gitで管理するようにディレクトリを初期化する。

リポジトリを作成するディレクトリにて次を入力。

git init

リポジトリのクローン

既存のリポジトリの続きから開発したい場合、既存リポジトリの内容を自分のリポジトリへコピーするのが、クローン。

リモートからクローンする場合。

$ git clone https://github.com/<userid>/<repo>.git

状況確認のコマンド

今の状態を確認

git status

ログを確認

git log

見にくい場合は、1コミット一行でログ表示する。コミットIDを確認したい場合にも便利。

git log --oneline

コミットログだけじゃなくて、より細かいHEADの辿った履歴をみたい場合。

git reflog

コンフィグ一覧

ユーザ名、メールアドレス、”origin”のエイリアスの確認をしたい場合。

git config

ブランチ一覧

ブランチの一覧と、現在使用しているブランチの確認をする場合。

git branch

ファイルの管理

indexに加える

作成/変更したファイルを、次回のコミット対象に加える作業が index。

git add <filename>

で、ファイルをindexに追加(stage)する。

indexから外す

git rm --cached <filename>

indexから消して、さらにファイルの実体も消す。

git rm -f <filename>

間違えてファイルを消した場合、コミット済みのファイルであれば、ここまでの編集内容を破棄し、コミット時まで戻すことでファイルを復元することもできる。

indexを元に戻す

indexにファイルを誤って追加した場合などにHEADの状態まで戻します。ワーキングツリーはそのまま。

git reset HEAD

ワーキングツリーを元に戻す

addしていないファイルの変更内容を破棄する場合。

git checkout -- <filename>

–なしで、git checkout <filename>としてもよいが、filenameと同一のブランチ名が存在すると、意図せずブランチが切り替わってしまうので注意する。<filename>を.とすると、全て戻す。

コミット後の変更を全て破棄する

ワーキングツリーとインデックスをHEADの位置に戻す。

git reset --hard HEAD

このあたりの細かい違いについては、次の記事が詳しい。

http://qiita.com/shuntaro_tamura/items/db1aef9cf9d78db50ffe

ローカルへの記録

コミット

コミットメッセージは3行で書く。慣習上、1行目には変更箇所、3行目には変更理由を書く。

-m オプションを2つ使うと、一つ目が一行目、二つ目が三行目に入る。

git commit -m "<変更箇所>" -m "<変更理由>"

コミットの取り消し

git reset --soft HEAD^

ブランチ

既存のブランチを確認

git branch

ブランチを作成

git branch <新規ブランチ名>

ローカルでブランチを作成した場合も、プッシュしなければリモートには作成されません。

新規ブランチをリモートへプッシュする

git push origin <新規ブランチ名>

ブランチを削除

git branch -d <ブランチ名>

ブランチの移動

git checkout <ブランチ名>

ブランチを作成して移動

git branch <新規ブランチ名> + git checkout<新規ブランチ名>を一気に行う場合

git checkout -b <新規ブランチ名>

リモートとのやり取り

リモートへ反映させる(プッシュ)

ローカルでのコミット内容をリモートへ反映させる。

git push origin <ブランチ名>

ブランチ名にはmasterなどを入れる。masterに反映させる場合は省略して、

git push

とすることもできる。

origin というのは、リモートレポジトリのurlのエイリアス。

git config

でoriginの設定内容を確認できる。git cloneした場合は、自動で設定されている。

自分でoriginを設定したい場合は、

git remote add origin <url>

プッシュできない

プッシュできるのは、リモートの当該ブランチがpushするコミットまで fast-forwardできる場合のみ。

リモートブランチが変更されている場合は、マージしてから、pushし直す。

リモートの内容をローカルへ反映させる(プル)

git pull

git pull は、git fetch + git merge をしたのと同じ効果を持ちます。

競合しており、自動でマージ出来ない場合は、手動で競合を解決します。

  1. 競合しているファイルを編集します。
  2. git add <filename>で競合が解決したファイルをindexします。
  3. 変更内容をcommitします。

すると、競合が解決されたコミットが作成され、pushできるようになります。