SVN経験者が図を使ってGitローカルリポジトリまわりを理解する

このエントリーはイノベーター・ジャパン Advent Calendar 2021 3日目の記事です。 こんにちは、株式会社イノベーター・ジャパン ウェブエンジニアの小野寺です。 エンジニア枠で10月に入社して約2ヶ月経過しました。 職場が変わればもろもろの環境は大きく変わりますね。 働く場所、働く人、いただく給与、開発環境、etc。 エンジニアにとって開発環境は重要なポイントです。

僕の場合はGitに苦労しました。 Gitはもはや新しい技術ではないですし、バージョン管理システムでは圧倒的シェアですが、反面、昔の名残でSVNを使い続けている企業も多く存在します。 僕も5年ほどアサインしていたプロジェクトではSVNを使っていました。 SVNはリモートリポジトリのファイルをcheckoutして、ファイルに追加・変更を加えたらcommitする。シンプルな仕組みなので手軽に導入できます。

一方で、Gitはもう少し細かい作業が必要になります。 この記事ではSVNを使っていた方がGitで躓くであろう点について書こうと思います。

SVNのcommit ≠ Gitのcommit

SVN経験者がGitを使い始めるときにおそらく最初に戸惑う点がcommitの使い方です。 SVNにおけるcommitは、リモートリポジトリにファイルの追加・変更を記録する作業です。 ローカルで変更したファイルをリモートリポジトリに記録する作業がSVNのcommitです。 リモートリポジトリに記録されるので慎重に行う必要があります。

一方でGitにおけるコミットはローカルリポジトリにファイルの追加・変更を記録する作業です。 Gitにはローカルリポジトリが存在します。 Gitのcommitはローカルリポジトリに対する作業なので、他の開発者に影響を与えません。そのためバンバンcommitしても何ら問題ないです。

同じワードですが、目的が違うのでこの違いはしっかり理解したほうが良さそうです。

ローカルリポジトリ操作について(SVNにはない!)

「Gitにはローカルリポジトリがある」とさきほど記述しました。 SVNには、Gitでいうローカルリポジトリという概念はないですね。 (リモートリポジトリをローカルにcheckoutしたファイル群はありますが) SVN愛用者のためにローカルリポジトリにcommitまでの操作をかんたんに時系列で説明します。

1.ローカルリポジトリ作成する = git init

まずはローカルリポジトリを作成します。 git initはローカルリポジトリを作成するコマンドです。 ターミナルなどでファイル管理したいディレクトリに移動してgit initを実行するだけ。 例えば、ディレクトリ名dirの中にa.txtというテキストファイルが入っているだけの状態でgit initを実行します。すると、下記画像のようにrepository(local repository)が作成できます。

f:id:onody0218:20211130143318p:plain

2.ファイルをstageへ登録する = git add

dirに入っているファイルは無条件にcommit対象になるわけではありません。ローカルリポジトリを作成したら次はファイルをstageに登録する必要があります。 使うコマンドはgit add。

画像にあるa.txtを追加する場合はgit add a.txtを実行します。 git add a.txtを実行すると、a.txtはstageと呼ばれる一次保存場所にいったん保存されます。

f:id:onody0218:20211130133330p:plain

3.ファイルの追跡を開始する = git commit -m "message"

stageにaddしただけではファイルの追加・変更が記録されません。 最後にgit commitが必要です。 git commit a.txt -m "" でa.txtはローカルリポジトリに記録されます。

f:id:onody0218:20211130133411p:plain

commitを実行したことで、これからa.txtにどんな変更を加えても、このcommitしたa.txtに戻そうと思えばいつでも戻せるようになります。 git commitはgit commit -m "message"でメッセージを付けてcommitするので、メッセージにはどのような修正をしたかを正確に書いておきましょう。(後で探しやすくなります)

今回は説明を端折りますが、commitしたファイルをpushすれば対象ファイルはリモートリポジトリに追加・変更が記録されます。(これがSVNでいうcommit)

Gitを上手に活用できればプロジェクトのススメ方もスムーズになると思います。ぜひ理解を深めてみてください。

おすすめ参考書:独習Git http://www.amazon.co.jp/dp/4798144614

f:id:onody0218:20211130130418j:plain