Gitでバージョン管理されているプロジェクトに参加する人が知っておくべき基本操作

昔ながらのエンジニアは、バージョン管理といえば昔ながらのCVSやSubvesionしか使ったことが無いという人も多いと思う。

近頃では、Gitというバージョン管理システムが登場し、広く使われるようになってきて、私も実際に使ってみると使い勝手が非常によかった。

 

とはいえ、Gitのような分散型バージョン管理システムを使ったことが無い人にとっては、敷居が高いと思うが、Gitでバージョン管理されているプロジェクトに参加するというケースは増えていくと思う。

そんな時に知っておかないと話にならない基本操作について、まとめてみた。

 

本当に知っておかないと何も始まらない操作

まず第一に、ほんとうのほんとうに、知っておかないと何も始まらない的な部分の操作から紹介する。

インストールウィザードでの選択

Gitを、GitBash(Cygwinベースのコンソール)ではなくコマンドプロンプトから使用したい場合には、インストールウィザードの「Adjusting your PATH environment」選択で、「Run Git from the Windows Command Prompt」または「Run Git and included Unix tools from the Windows Command Prompt」を選択してインストールすること。

Gitの設定

Gitインストール後には、最低限2つ、名前とメールアドレスの設定を行う必要がある。

git config --global user.name "Tarou Yamada"
git config --global user.email yamada@example.com

この情報は主に、どのコミットを誰がしたのかという記録のために使用される。

リポジトリからソースを取得

git clone //something-server/something-dir/something.git

//something-server/something-dir/something.git部分は適切にGitのリポジトリURIに置き換えること。

このコマンドを実行すると、ローカルにsomethingというフォルダが作成されて、そこにソースファイルが取得される。

プロジェクトの状態を確認

git status

このコマンドにより、次の情報などを確認することができる。

変更をコミットする

git commit -a

現在の作業ブランチの変更を全てコミットする。

git commitコマンドでは、コミットメッセージの入力が求められる。

デフォルトではメッセージを入力するエディタはvimの設定になっているが、vimの使い方が分からなければ、PATHが通っている任意のエディタに変更することができる。

git config --global core.editor notepad

変更を取り消す

git reset --hard

作業フォルダの内容を最後のコミットの状態に戻す。

リモートリポジトリに反映させる

git push

Gitは、リモートにもローカルにも同様のリポジトリを持ち、コミットなどの操作は全てローカルのリポジトリに対して行われる。

ローカルのリポジトリに対して行われたコミット情報をリモートリポジトリに反映するためには、git pushコマンドを発行する必要がある。

 

もし他のメンバーがリモートリポジトリに対して何らかの変更をpushしていた場合、あなたの変更をpushするためには、次に紹介するgit pullコマンドをまず先に実行する必要がある。

ローカルリポジトリをリモートリポジトリで更新する

git pull

リモートリポジトリの情報をローカルリポジトリに取得し、差分をマージする。

バージョン管理させたくないファイルを指定する

.gitignoreファイルに、バージョン管理させたくないファイルの情報を記述すると、git commit -aコマンドでのコミット対象にならなくなる。

過去のコミットを確認する

git log -n 5

過去5回分のコミットのログを表示する。

知っておくと便利な操作

知らなくても何とかやっていけるかもしれないけど、知っておかないとCVSやSubversionなんかよりずっと不便になってしまい、やってられなくなってしまうような部分の操作を紹介。

ブランチを作成

git checkout -b new-branch-name

new-branch-nameの部分は、作成したいブランチ名で置き換える。

ここで作成するブランチは、ローカルリポジトリに対しての作成になる。

ブランチの一覧

>git branch
* master
my-branch

この例では、デフォルトで存在するmasterに加え、my-branchブランチも存在することが分かる。また、「*」マークがmasterに付いているため、現在checkoutされているブランチはmasterであることも分かる。

masterブランチがSubversionなどでいうところのtrunc(幹)ブランチに相当し、メインで使用するブランチである。

ブランチを切り替える

git checkout branch-name

branch-nameには、git branchで表示されるブランチの何れかを指定する。

ブランチの変更内容をmasterブランチにマージする

git checkout master
git rebase branch-name

まずmasterブランチをcheckoutしてから、git rebaseコマンドでマージしたいブランチをマージする。

Gitでは、ブランチのマージにgit mergeコマンドとgit rebaseコマンドが用意されているが、Git覚えたてならここで紹介したgit rebaseさえ知っていれば何とかなる。

マージして不要になったブランチを削除する

git branch -d branch-to-delete

branch-to-deleteは削除したいブランチ名で置き換える。

マージしていないが不要になったブランチを削除する

マージしていないブランチは、間違って削除しないように保護されているため、git branch -dコマンドでは削除できない。
-dオプションを大文字の-Dオプションにすることで、マージしていないブランチでも削除することができる。

git branch -D branch-to-delete

branch-to-deleteは削除したいブランチ名で置き換える。

ちょっとでもGitに興味が沸いた人向けの操作

ここまでの内容で、最低限必要な操作としては網羅しているものの、ちょっとでもGitに興味が沸いているなら、さらにGitを好きになれる操作について紹介。

リモートリポジトリの一覧を確認する

>git remote -v
origin //something-server/something-dir/something.git (fetch)
origin //something-server/something-dir/something.git (push)

最初に説明した、git cloneコマンドでリポジトリからソースファイルを取得すると、自動的にソース取得元のURIが記憶され、別名としてoriginという名前が付けられる。
git pushコマンドは、実際にはgit push origin masterと同じである。

ローカルリポジトリのブランチをリモートリポジトリに反映する

git checkout -bで作成したブランチは、ローカルリポジトリに作成されるだけで、リモートリポジトリには作成されない。

ローカルリポジトリ上のブランチをリモートリポジトリに反映させるコマンドは次の通り。

git push origin my-branch

リモートリポジトリにmy-branchブランチを反映させる。

リモートリポジトリのブランチ一覧を確認する

git branch -r

ローカルリポジトリのブランチ一覧を表示するgit branchコマンドに、-rオプションを付けるとリモートリポジトリのブランチ一覧の表示になる。

リモートリポジトリのブランチを削除する

git push origin :my-branch

リモートリポジトリにあるmy-branchブランチが削除される。

あとがき

Gitには、ブランチの作成やcheckout操作も時間が掛からず、気軽にブランチ操作ができるという利点や、万が一リモートのリポジトリデータが紛失しても、ローカルリポジトリからデータをほぼ全て復元できるという利点もあるし、コミットの細かな制御や比較なども行える。

 

Gitを使い始めた時は、なんだか学習コストが高そうと思っていたが、今回の記事のような内容なら、殆ど他の資料を参照することもなく、ソラでコマンドを書いていくことができた。

使えばちゃんと、身についていくものなんだと実感。

あなたも億劫にならずに、Gitを使い始めてみてはいかがだろうか。

コメントを残す

トラックバック: http://pgnote.net/wp-trackback.php?p=2039