Gitの使い方について初心者の方にもわかりやすく解説!

プログラミングの研修が終わっていざチームに配属されて実際に開発を進めると多くの人が壁にぶつかるのがGitと呼ばれる、バージョン管理システムの使い方だと思います。

研修先で教えてもらっていて覚えてればよいのですが、手順が多くて複雑で忘れてしまっていたり、そもそも教わってなかったりで「どうやって使えばいいんだろう?」と固まってしまうことも多いかと思います。
試しに使って感覚をつかみたくても上司やリーダーに「下手に使ってサーバーにあるソースをごちゃごちゃにしないでね~」と笑顔で脅されて余計に使うのが怖くなっていることかと思います。

そこで今回はそんな悩める駆け出しプログラマーの方にも、忘れてしまっても大丈夫なように丁寧にわかりやすく解説いたしますので、皆様の仕事のお役に立てれば幸いです。

Git操作のおおまかな流れ

– ファイル取得
1. pull (最初はclone)

– 変更の保存
2. commit
3. push
4. merge

スポンサーリンク
目次

Gitの主要な用語について解説

まずはGitに出てくる主要な用語について解説いたします。
Gitの使い方を覚えるにはまず出てくる単語がどういう意味を持つかしっかりと把握していないといけません。

ですが、出てくる単語それぞれ似たり寄ったりな名称で覚えづらいと思いますので、それぞれイメージをもって単語を覚えるようにしましょう。

Gitとは

まずはGitからですがGitは上述したようにバージョン管理システムの名称です。

バージョン管理システムはあるファイルに対して、誰がどういった変更を行ったか記録するシステムのことです。
そのため、オリジナルのファイルに対してどういう変更が行われ行ったかを確認できたり、ある過去の時点での変更を復元したりすることができるシステムのことです。

Gitはその中の数あるシステムの中の一つなので、Gitという仕組みそのものがあるわけではありません。

ただ、バージョン管理システムにおいては圧倒的な知名度を誇っているのでバージョン管理 = Gitのような認識になっております。

また、TortoiseGit や SourceTree などは Git を使いやすくするためのいわば外部ツールで、 Git にいろんな種類があるわけではないので混乱しないように注意しましょう。

リポジトリ

リポジトリとはフォルダやファイルのそれぞれのデータを保存しておく場所のことです。
簡単にGitにおけるフォルダ(ディレクトリ)のことだと思っていただければ問題ないです。

さらにリポジトリには2種類存在し、それぞれ「ローカルリポジトリ」と「リモートリポジトリ」といいます。

これがさらにややこしくしている要因でもあると思いますが、ここでは簡単にサーバーにあるオリジナルのデータが格納されてるのがリモートリポジトリであり、それを皆さんの端末(クライアント側)で作業するためにコピーしてきたものがローカルリポジトリであるとお伝えしておきます。

通常はこのローカルリポジトリに対して変更作業を行い、変更を確定してよいというタイミングでリモートリポジトリにローカルで作業した内容を反映させます。

なので、どれだけローカルリポジトリで破壊活動を営もうともそれをリモートリポジトリに上げない限りは問題ありませんし、壊してしまったローカルリポジトリはリモートから再度コピーしてくれば簡単に元通りになります。

詳しくは以下の記事で解説いたしますので、気になる方はご参照ください。

クローン

クローンはリモートリポジトリから自分の端末にリポジトリごと取得してくる作業のことを指します。

最初は自分の端末には何もデータはありませんが、このクローンを実施することでリポジトリごとファイルすべてを取得できます。

そしてこのリポジトリがローカルリポジトリとして扱われます。

プル

プルとはリモートリポジトリから自分の端末のローカルリポジトリにリポジトリにある更新されたデータを持ってくる作業のことを指します。ブランチについては後述しますが、 [master] ブランチという大元のブランチから取得されます。

プルは文字通り引き出すイメージで覚えると良いでしょう。

なお、プルはクローンと似たような動きをしますが、クローンはファイルすべてを持ってくるのに対し、プルは更新されたデータだけ持ってきます。
なので最初にクローンしてその後同じリモートリポジトリからデータを取得するときはプルを使います。(クローンはクローンしたい場所にデータが既にあるとクローン処理実行時に怒られます。)

コミット

コミットはリモートリポジトリから持ってきたデータに対して加えた変更をローカルリポジトリに反映させることを指します。

重要なのはこの時点ではまだサーバーにあるデータに変更を反映していない、つまりリモートリポジトリに変更を加えていないという点です。

そのため、コミットだけならサーバーに影響を及ぼす心配はなく変更を加えたら逐一保存してもよいですし、万が一おかしなことになったとしてもコミットを取り消すこともできます。

ちなみにコミットする対象を選択する操作は [add] といい、これが行われたファイルに対してコミットは実行されます。

プッシュ

プッシュはローカルリポジトリの内容をリモートリポジトリに反映させる作業です。

この作業はリモートリポジトリに影響させる操作になる、つまり皆が使うサーバーのフォルダに変更を加えるのでGitを使用していて一番緊張する場面かもしれません。

そのため、他のなんの操作をしていても気を抜いていて大丈夫ですが、プッシュするときだけはファイルに変な個所がないかどうか確認し問題ないと確信が持てたらプッシュするようにすると良いでしょう。

まあデータの整合性が悪かったりすればGitも教えてくれるのでそれほど気負う必要はないのですが…気を付けるに越したことはないでしょう。

ブランチ

ブランチは同じリポジトリの中でも各々が加えた変更をそれぞれ分岐させて保持しておく仕組みです。
よくリポジトリとブランチが混ざってわけわからなくなってしまう人を見るのですが、リポジトリは保存場所であり、ブランチはその中でさらにフォルダを分けて同じファイルを保存している状態に近いです。

このためブランチを使用すれば、複数の変更を並列に保持しておくことができます。
「Aさんが手を加えたフォルダ」と「Bさんが手を加えたフォルダ」と「本番用」という風に分けておけば競合することなく作業ができますし、問題が起きてもどの機能に問題があるかの特定が容易になります。

ブランチが一つだけだと大人数で使用する場合どこの変更と競合してるのか調べるのも大変ですし、各々が使用して作業しているリポジトリがどの時点のブランチから取得したものかによって競合した人だけでなく他の人の作業にも影響を及ぼしかねないので、ブランチは分けておいた方が安全です。

補足ですが、プルの項目で紹介しましたがブランチには大本になる[master] ブランチという名前のブランチが最初から存在しています。(Gitインストール時に名前を変えている場合はその名前になります。)

branchは「枝」という意味を持ちますが、 [master] ブランチは枝の根本というわけです。

マージ

マージとは分けられたブランチを統合する処理のことを言います。

ブランチの項で解説したようにGitでは根本となるブランチからそれぞれの作業を切り分けるためにブランチを分岐させる場合が多いと記述しました。

この分けられたブランチは当然ですが、システムとして完成させるには最終的に一つに統合させる必要があります。
そのため、Gitでは分けられたブランチに対してマージという作業を行います。

マージをすることで分岐させたブランチ同士、もしくは [master] ブランチへと統合させることができます。

通常、ファイルの統合にはどこが変わっててどこが変わっていないかを確認しながら、それぞれのファイルが一つになるようにうまく結合する必要がありますが、Gitの場合はファイルの差分を見て良しなに処理してくれます。便利ですね。

もちろんうまく処理ができないときはGit側が「無理です。」とエラーで意思表示をしてくれるので、その時は結合できるように手動で修正してあげる必要があります。

Gitの使い方

それではGitの使い方について解説していきます。
なお、そもそものインストール方法については (Winfdows環境ですが) 以下の記事で解説しておりますので、必要な方はそちらからご確認ください。

Gitを使用する手順は以下の通りです。

1. リモートリポジトリからローカルリポジトリへデータを [クローン(プル)] する。
2. 任意のファイルに変更を加える。
3. ローカルリポジトリへ変更を [コミット] する。
4. リモートリポジトリから自分用のブランチを作成する
5. ローカルリポジトリからリモートリポジトリの自分のブランチへ変更を [プッシュ] する。
6. 自分のブランチをマスターへマージする。

それでは実際の操作を確認しながら進めていきましょう。

1.リモートリポジトリからデータを「クローン(プル)」する。

最初の作業としてリモートリポジトリからデータを取得するため、クローンを実施します。
ここで必要な情報はリモートリポジトリのURLになりますので、その情報はGitの管理者からもらってください。

リモートリポジトリをクローンするための任意のフォルダに入ってターミナル(GitBash)で以下のようなコマンドを実施します。

cd <ファイルをクローンしたい任意のフォルダパス>

git clone <リモートリポジトリのURL>


-例
cd c:\work\mygit
git clone https://github.com/libgit2/libgit2

すると以下のようにフォルダが取得できているはずです。

cloneすると リポジトリ名のフォルダと(ここではtestというリポジトリ名です。)その配下に[.git] というファイルが作成されます。
画像ではクローン先のリモートリポジトリが空なのでこれ以外のファイルはありません。

なおクローンを実施すると現在のディレクトリパスの後ろに (master) という表記があるはずです。
これは現在見ているブランチ名を示しています。(maset ブランチは最初から存在するのでここにいる状態になっています。)

2. 任意のファイルに変更を加える

次は任意のファイルに変更を加えます。
これはご自身の作業になりますので、ソースであれば必要なプログラムを実装していってください。

本手順は以下のようなPythonファイルを作成しました。

3. ローカルリポジトリへ変更をコミットする

ファイルの変更が一区切りついて問題がないと判断出来たらコミットを行いましょう。
コミットはローカルのデータをいじるだけなのでそこまで慎重にならず気軽に行って大丈夫です。

コミットは以下のようにファイルを add コマンドで指定してから行います。

#addコマンドですべてのファイルをそれぞれ指定
git add <コミットしたいファイルパス>

#指定したファイル全てをコミット
git commit -m “<コメント>”

-例
git add c:/work/mygit/hellogit.py
git commit -m “はじめてのコミット”

これで変更がローカルリポジトリへ保存されました。
commitコマンドで指定した -m オプションはコメントを添えるためのものです。
基本的にはどういう変更を行ったコミットなのかをコメントに記載して運用します。

なお変更は以下のコマンドで確認することができます。

git log

4. ローカルリポジトリに自分用のブランチを作成する

ファイルの変更作業もある程度済んだら次は自分がデータをアップロード(プッシュ)するためのブランチを作成します。

作成する場所はローカルリポジトリに作成します。
ローカルリポジトリに作成すればプッシュする際に作成したブランチがそのままリモートリポジトリに追加されます。

作成は以下のコマンドで実施します。

git checkout -b <新規ブランチ名> <ベースとなるブランチ名>

-例
git checkout -b mybranch master

上記のようにしてブランチを作成します。
例のコマンドでは [master] ブランチが最初からローカルリポジトリにいるので、それをベースに [mybranch] という名前でブランチを作成しました。
上記のコマンドを実施すると今見ているブランチの名前が [master] から [mybranch] に代わっているはずです。

5. リモートリポジトリの自分のブランチへ変更を [プッシュ] する。

ブランチの作成ができたら、Gitで一番気を遣う手順であるプッシュを行います。
プッシュは以下のコマンドで実施します。

git push <リモートリポジトリ名> <ブランチ名>

-例
git push origin mybranch

pushコマンドにはプッシュする先のリポジトリのブランチ名とプッシュしたいローカルのブランチ名を指定します。
基本はツールを使ってGitを利用すると思うので、コマンドを使うことはあまりないでしょうがコマンドを使う際にはプッシュ先に間違いがないことはしっかりとチェックしましょう。

なお、以下のコマンドを実施することで リモートリポジトリの追跡ブランチ一覧を確認することができます。

git fetch
git branch -a

6. 自分のブランチをマスターへマージする。

最後に、プッシュについで気を遣う手順であるマージを実施しましょう。

ブランチが一つしかない場合は関係ありませんが my、自分用のブランチを持っている場合は主となるブランチへマージする必要があります。

マージには以下のコマンドで実施することができます。

git checkout <マージ先のブランチ>
git merge <マージしたいブランチ名>

-例
git checkout master
git merge mybranch

マージの際は先にcheckoutコマンドでマージしたいブランチに入ります。(cdコマンドでフォルダの中に移動するようなものです。)
そのあとに mergeコマンドでマージしたいブランチ名を指定しマージします。

チェックアウトとマージコマンドでマージ先が逆にならないように注意してください。

これでGitの主な手順については完了です。

いかがでしょうか。
Gitの手順については忘れてしまうことも多いので、コマンドの流れと気を付けるコマンドだけでも覚えてGitの操作に億劫にならないようにしましょう。

今回はここまでです。
お疲れ様でした。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

本業ではPHPを使ったWEBアプリやJavaを使用した基幹アプリを作成しております。Pythonは個人的に勉強しており、E資格を取ったりしたおかげで、業務でAIの研究とかも任されるようになりました。学習のアウトプットのために本サイトを運営しておりますが、これからPythonを学ぶという人のお役に立てればいいなと思います。わからないことや調査して記事にしてほしいことがございましたらご連絡いただけると幸いです。

コメント

コメントする

目次
閉じる