頭脳一式

人の記憶なんて曖昧なもの。すべての情報を頭に記憶するなんてナンセンス。困ったらここに来ればいいじゃん?というスタンスで最強のナレッジベースを目指すブログ

【Git】よく使うGitコマンド&用語の意味

主に、Git for WindowsなどのCUIで使用するGitコマンドをまとめます。

git init

git initは、指定したディレクトリにリポジトリ機能を持たせることが出来るコマンド。
このコマンドを実行しないとコミットしたりできない。但し、リモートブランチを取得する場合はこのコマンドは不要。

カレントディレクトリにリポジトリ機能を持たせる

git init

指定したディレクトリにリポジトリ機能を持たせる

git init dir

git tag

git tagは特定のコミットに対して名前を付けるコマンド。
このtagはリポジトリ内で一意の命名にしなければならず、コミットIDやブランチ名の代わりとして使用できる。
通常、コミットを行うとコミットIDが生成されるが、後から見返したときにそのコミットIDの意味を見失いやすい。
使いどころとしては例えば1つのjsファイルの中で5つのメソッドを作成しなければならない場合、
メソッドが1つ完成するごとにtag付けを行うことで、後から見返したときにその時点のコミットがどんなものなのか思い出しやすくなるといった使い方ができる。

git branch

ブランチというはの一般的に"分岐"とか"枝"と言われます。
例えば本番運用中のサービスに機能Aを追加したい、機能Bを追加したい、バグを修正したいといった要望があると思います。 こういうときは要望ごとにブランチを作ります。
通常、本番運用中の資源はmasterブランチに格納されているので、masterブランチを起点として機能A用のブランチ(master + A)、機能B用のブランチ(master + B)、バグ修正用のブランチ(master + bug)を作ることによってそれぞれを独立した形で並行して開発作業を行うことができます。
この方法で開発作業を進めれば、機能Aと機能Bの資源がごちゃまぜになったりすることを防いだり、「機能Bだけ先行してリリースしたい」といったときに機能B用のブランチだけmasterとマージすることにより、他のブランチに影響せずスムーズにリリースすることができます。

新規ブランチを作成する

コマンド 意味
git branch [new branch] ローカルリポジトリ上に [new branch]の名前で新規ブランチを作成します。作成する際は今現在いるブランチを起点として新規ブランチを作成します。

ブランチの一覧を表示する

コマンド 意味
git branch ローカルリポジトリのブランチを一覧表示します。
git branch -r リモートリポジトリのブランチを一覧表示します。
git branch -a ローカルリポジトリと、リモートリポジトリのブランチを一覧表示します。
git branch -vv ローカルリポジトリのブランチが、リモートリポジトリのどのブランチを追跡しているか確認できます。

git checkout

このコマンドで私が良く使うのは以下の機能です。

  • 新規ブランチを作成してチェックアウト。
  • 既存ブランチへチェックアウト。

※チェックアウトとは、ブランチを切り替えることを指します。

ブランチの一覧を表示する

コマンド 意味
git checkout -b [new branch] 新規ブランチを作成し、チェックアウトします。
git checkout [branch] 既存ブランチへチェックアウトします。
# git checkout -b [new branch]
git checkout -b develop

git clone

リモートリポジトリの内容をローカルへ複製します。

# git clone [リポジトリURL]
git clone http://localhost/group1/prj1.git

git remote

ローカルリポジトリに登録されているリモートリポジトリの一覧を表示します。

$ git remote -v
origin  http://localhost/group1/prj1.git (fetch)
origin  http://localhost/group1/prj1.git (push)

originとは、リモートリポジトリ(URL)の別名を指します。
コマンド操作をする際にいちいちURLを引数に取ると長くなってしまうので、
コマンド操作をするときはこの別名を使用します。
SQLでいうAS句で指定する別名みたいなものです。

git merge

ブランチ同士のマージ(統合)をします。
例)
マージ元:developブランチ
マージ先:masterブランチ
つまり、developブランチの内容とmasterブランチへ統合します。

XXXXX@DESKTOP-AQBVPOG MINGW64 /c/workspace/prj1 (master) //…①
$ git checkout develop
Switched to branch 'develop'

XXXXX@DESKTOP-AQBVPOG MINGW64 /c/workspace/prj1 (develop) //…②
$ cat README.md
# prj1_develop2

abc

XXXXX@DESKTOP-AQBVPOG MINGW64 /c/workspace/prj1 (develop) //…③
$ git checkout master
Switched to branch 'master'

XXXXX@DESKTOP-AQBVPOG MINGW64 /c/workspace/prj1 (master) //…④
$ cat README.md
# prj_master1

abc

XXXXX@DESKTOP-AQBVPOG MINGW64 /c/workspace/prj1 (develop) //…⑤
$ git checkout master
Switched to branch 'master'

git push

ローカルリポジトリの内容(変更)をリモートリポジトリに反映する操作。

git pull

リモートリポジトリの内容(変更)をローカルリポジトリへ反映する操作。
git fetch + git mergeから成る。