Git/GitHub関連のコマンドはたくさんあって最初にぜんぶ覚えるのは大変です。
初心者が「最初にこれは知っておくと良かったなぁ」と思えるGitコマンドを目的別に整理して一覧にしてみました。
最初はわからなくても良いので、ひとつずつ使いながら覚えていくと、開発作業がだんだん効率的になっていくと思います!
目次
1. Gitの設定
git config【こんふぃぐ】- 設定
ユーザー名、メールアドレスを設定する
$ git config --global user.name <XXXX>
$ git config --global user.email <XXXX@hogehoge.com>
エディタを変更する
$ git config core.editor <エディターの設定>
# 例)エディタをVimに変更する場合
$ git config core.editor 'vim -c "set fenc=utf8"'
2. リポジトリ作成
git init【イニット】- リポジトリを作成する
- リモートリポジトリ(共有)
githubなどホスティングサービスで作成 - ローカルリポジトリ(自分)
自分のローカルPC環境で、コマンドで作成
で作成することがほとんどなので「2.ローカルリポジトリ」の作成方法を説明します。
$ git init [ディレクトリ] [オプション]
対象ディレクトリに移動すれば
$ git init
だけでローカルリポジトリが作成できます。
git remote【リモート】- リモートリポジトリを使う
リモートリポジトリとは、インターネット上あるいはその他ネットワーク上のどこかに存在するプロジェクト
# リモートリポジトリを名前をつけて追加
# 新しいリモートGitリポジトリにアクセスしやすい名前をつけて追加
$ git remote add <名前> <URL>
# リモートリポジトリの一覧を表示
$ git remote
git clone【クローン】- リポジトリをコピーする
リモートリポジトリをクローン(コピー)して、自分の開発用にローカルリポジトリを作る。
$ git clone <クローンしたいリポジトリ> <クローン先のディレクトリ(省略可)>
いくつかの通信方式があります。
//http方式 通信が早い。GitHubなどで利用。
$ git clone http://リポジトリのurl/プロジェクト名.git
//git方式 高速だが、認証構造なし、ReadOnlyになる点に注意。
$ git clone git://リポジトリのurl/プロジェクト名.git
//ssh方式 秘密鍵の設定などでき安心。社内PJなどで利用。
$ git clone ssh://ユーザー名@リポジトリのurl/プロジェクト名.git
git pull【プル】- 他のリポジトリの変更点をマージ
リモートリポジトリの変更点をローカルリポジトリに取り込む。
$ git pull <リモートリポジトリ> <ローカルリポジトリ>
<ローカルリポジトリ>は省略すると、現在使っているローカルリポジトリとなります。
git push【プッシュ】- リモートリポジトリに反映
ローカルブランチのコミット(登録)を、リモートリポジトリにプッシュ(反映)する。
git push <リモートブランチ名> <ローカルブランチ名>
3. コミット
git add【アド】- 更新内容をインデックスに反映
ワーキング・ツリーにあるファイルの更新内容を、インデックスに追加します。
インデックスに追加された変更内容は、次のgit commit
でコミットに含まれます。
// 任意のファイルの変更をステージする
$ git add <file>
// 現在のディレクトリのファイルすべてをステージする
$ git add .
git commit【コミット】- ファイルやディレクトリの追加・変更を、リポジトリに記録
インデックスにあるファイルの変更内容を「コミット」します。
リポジトリに登録され記録が残ります。
$ git commit -m "コミットメッセージ"
-mオプションで、コミットメーセージを添えます。
git reset【リセット】 – 直前のコミットを取り消す(取り消し)
Gitでコミットした内容を取り消します。
ローカルリポジトリへの変更内容に誤りがあり取り消したい場合によく使います。
# 指定したファイルをステージングから削除
git reset <file>
# ステージングをリセット
git reset
# 現在のブランチを指定したコミットに戻す
git reset <commit>
次の3つのセクション(場所)を覚えておくと、どこに対しての作業なのかイメージできるようになると思います。
- Working Directory
ステージされる前のファイルが置かれる場所 - Staging Area
ステージされたファイルが置かれる場所。置かれたファイルは次のコミットに含まれる。 - Git directory
コミットされたファイルが保存される場所
git tag【タグ】 – コミットにタグを付ける
後から参照しやすいようにコミットに名前をつけます。
# 注釈なしタグ
git tag <タグ名>
# 注釈付きタグ
git tag -a <タグ名> -m <“コメント“>
引数なしのgit tag
でタグの一覧が表示されます。
$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.3
v1.0.4
これでコミットを指定して行う操作は、コミットの代わりにタグを指定することができます。
4. ワーキング・ツリーのコマンド
git status【ステータス】- ローカルの変更を確認する
ワーキングディレクトリや、インデックスのバージョン管理の状態を確認します。
$ git status
コマンドを打つと、主に3つのステータスがわかります。
git add
されたけど、git commit
されていないファイル- 編集・変更・削除されているが、まだ
git add
されていないファイル - Git管理 &
gitignore
で管理除外対象にされていないもの
git log【ログ】- commitの変更履歴を確認
今までのコミット履歴を確認します。
コミットメッセージ一覧として表示するため、コミットする際は、何の更新を加えたのかメッセージが必要となります。
$ git log
git diff【ディフ】 – リモートとローカルのファイル差分を確認
# 「インデックス」と「ワーキング・ツリー」の差分を確認
# →まだインデックスに'add'(追加)していない差分を表示
git diff
# 「最新のコミット」と「ワーキングツリー」の差分を確認
$ git diff HEAD
# 「最新のコミット」と「インデックス」の差分を確認
$ git diff --cached
# リモートとローカルのファイル差分を確認
$ git diff master origin/master
git mv【ムーブ】- ファイル名の変更
Gitで管理しているファイルをリネームします。
$ git mv <変更前のファイルのパス> <変更後のファイル>
Gitを通さないで名前を変更すると、別のファイルになるためログが途切れてしまいます。
git revert【リバート】- ワーキング・ツリーを戻す(打ち消し)
すでにpush
されているcommit
を元に戻します。
# 指定したコミットを元に戻して新しいコミットにする
$ git revert <commit>
(参考)’revert’と’reset’の違い
- git revert (打ち消し)
指定したコミットを元に戻して新しいコミットにする - git reset(取り消し)
指定したコミットを取り消して過去の状態に戻る。
git stash【スタッシュ】 – 作業ツリーの状態を一時的に保存
コミットしていない変更を退避します。
急に別の作業が入ってきて一時中断したい時などに使います。
# saveコマンドの後ろに、保存するメッセージをつける
$ git stash save "任意のメッセージ"
# 退避保存されている一覧を確認
$ git stash list
# 一時退避保存を復旧再開
$ git stash apply <復旧したいstash名>
# 復旧が無事完了したら、退避しているデータは削除
git stash drop <削除したいstash名>
5. ブランチの管理
git branch 【ブランチ】- ブランチの作成
# ブランチを作成します。
$ git branch <ブランチ名>
# 作成されたブランチを確認します。
$ git branch
git checkout【チェックアウト】- ブランチの切り替え
今いるブランチAから、他のブランチBに切り替えます。
# 指定したブランチに切り替えます。
git checkout <ブランチ名>
git merge【マージ】- 別のブランチの変更点を取り込む
現在のブランチに、他のブランチの更新を取り込みます。
git merge <取り込みたいブランチ名>
git rebase【リベース】コミットが綺麗になる
変更したブランチを、分岐元のブランチにつなぎます。
順番にコミットが記録されるので、’git log’が見やすくなります。
使い方を間違えると、ブランチが消えるので注意。Gitに慣れるまでは使わない方がいいと思います。
# ブランチの派生元を変更
git rebase <派生元ブランチ名>
まとめ
Git/GitHub関連の初心者が「これだけは最初に知っておいて良かった」Gitコマンドを目的別に整理して一覧にしてみました。
1. Gitの設定
2. リポジトリ作成
3. コミット
4. ワーキング・ツリー
5. ブランチの管理
最初はわからなくても良いので、ひとつずつ使いながら覚えていくと、開発作業がだんだん効率的になっていくと思います!
参考) リファレンス – Git
https://git-scm.com/docs