・Gitの勉強を始めようとしている方
・Gitの使い方がイマイチ分からない方
・Gitに苦手意識のある方
など
Gitは、エンジニアにとって非常に重要なバージョン管理システムです。Gitを使用することで、複数の開発者が同じコードベースで同時に作業し、変更を追跡しながらプログラムを開発することができます。
ただ上に書いてあることはプログラミングを勉強し始めた人にとっては知っている内容ですよね。
ソフト開発の現場では、Gitを使えるなんてWord, Excelが使えるくらい当たり前なことだと思います。
ただ情報系の学部にいない学生だったり、私のようなソフト開発とは程遠い職場の人からすると
Git?バージョン管理?と難しいですよね。
またGitを勉強していると、色々なコマンドを勉強することになります。
なので個人的には、どんな順番で身につければいいか分からなくなることが多いと思います。
今回はGitを使えるようになるコツを実体験を踏まえて解説したいと思います。
慣れる順番が大切
まずGitが苦手な人にとって大切なことは、順番に整理しがら慣れていくことが大切です。
何か新しいものを学ぶ際には、基礎的な内容から順に段階を踏むことで
情報の整理ができて、複雑な内容を理解することができるようになります。
Gitも機械学習や画像解析などとは違う難しさがあるので、
基礎の内容から順番に理解して、使えるようになることが必要です。
私自身Gitはとても苦手ででした。5年間くらいGitの存在知ってても、全然使えてなかったのですが
以下のような順番を1日かけて少しづつやっていたら、分かるようになってきました。
- ローカルPCで、「git init」「git add .」「git commit -m コメント」を覚える
- ローカルPCで、「git branch」「git checkout」「git merge」でブランチに慣れる
- GitHubを使いながら、「git fetch」「git push」「git clone」に慣れる
Gitを既に理解して習得している方にとっては当たり前な内容かもしれないのですが
まずはこの3ステージを、1歩1歩学び理解することが大切だと思います。
それぞれについて解説していきますね。
①ローカルPCで、「git init」「git add .」「git commit -m コメント」
とりあえず最初はローカルのPCでgitコマンドに慣れていきましょう。
gitと聞くとすぐにGitHubを思い描いてしまう人も多いかもしれません(私もそうでした。)
まず慣れるためには、まずローカルでgitコマンドを使ってバージョン管理になれていきましょう。
ローカルPCでGitを使う場合、最初にリポジトリを初期化する必要があります。
リポジトリとは、Gitが管理するプロジェクトのディレクトリのことです。
- git init コマンド: 現在のディレクトリをGitリポジトリとして初期化することができます。
これにより、Gitがファイルの変更を追跡するための必要なファイルやディレクトリが作成されます。 - git add . :カレントディレクトリ以下のすべての変更されたファイルをインデックスに追加することができます。
イメージとしては、次のcommitするファイルを選択するという感覚。
「add」と「 . ] の間には半角スペースを入れてね(私は最初入れてなkった) git commit -m コメント
: 変更をリポジトリに保存することができます。-m
フラグを使用して、変更に対するコメントを追加することができます。(コメントは残しましょう!)
コメントには、変更の内容や目的などを簡潔に記述することが望ましいです。
以上のように、git init
、git add
、git commit
コマンドを順番に実行することで、ローカルPC上でGitを使用することができます。
これにより、ファイルの変更履歴を管理し、プロジェクトのバージョン管理をすることができます。
実際にコードを書いてみてGitコマンドを参考にするサイトとしては
個人的には侍エンジニアブログさんが分かりやすかったのでおすすめしてます。
ローカルPCで、「git branch」「git checkout」「git merge」
Gitを使っていると、複数の開発者が同じプロジェクトに取り組む場合や、一人で作業中に複数の機能を開発する場合など、複数のバージョンを管理する必要が出てきます。
このような場合に便利なのが、Gitのブランチ機能です。
git branch
コマンド :現在のリポジトリに存在するすべてのブランチを一覧表示することができます。また、新しいブランチを作成することもできます。git checkout
コマンド :異なるブランチ間を移動することができます。ブランチを切り替えることで、異なる機能の開発を同時に進めることができます。git merge
コマンド :異なるブランチをマージすることができます。つまり、異なる機能の開発を同時に進めたブランチを統合することができます。
例えば、以下のようにコマンドを入力すると、新しいブランチを作成できます。
git branch new_branch
ブランチを作成したら、
以下のようにコマンドを入力すると、new_branch
というブランチに切り替えることができます。
git checkout new_branch
ブランチのファイルを編集し終えたら、そのブランチを元のブラインチに統合することができます。
使っているPCにもよるのですが、mainもしくはmasterがオリジナルのバージョンなので
オリジナルのブランチに切り替えてから、mergeコマンドで結合できます。
git checkout master
git merge new_branch
以上のように、git branch
、git checkout
、git merge
コマンドを使用することで、複数のブランチを管理し、異なる機能の開発を同時に進めることができます。
しかし、複数のブランチを使うことで、競合や衝突が発生することもあるため、注意が必要です。
GitHubを使いながら、「git fetch」「git push」「git clone」
ローカルでの操作に慣れてたら、GitHubでの管理を覚えていきましょう。
GitHubは、Gitを使ったバージョン管理を行うためのWebベースのホスティングサービスであり、
リモートリポジトリとして広く利用されています。
git clone
:リモートリポジトリからローカルリポジトリを作成git fetch
コマンド : リモートリポジトリの最新の情報を取得し、ローカルリポジトリに反映git push
コマンド:ローカルリポジトリにある変更をリモートリポジトリに反映
①git cloneは機械学習のプログラミングを行なっていると
よくやりますよね。
git clone https://github.com/*****
このコマンドを実行することで、リモートリポジトリにあるすべてのコミット履歴やブランチなどが、新しく作成されるローカルリポジトリに反映されます。
②git fetchコマンドを実行することで、リモートリポジトリに追加された新しいコミットやブランチなどの情報を取得することができます。
$ git fetch <リモート名> <リモートブランチ名>
この時重要なことは、ローカルリポジトリの変更は行われません。
$ git merge <ブランチ名>
でmergeしてね。
③git pushはローカルでの変更をGitHub上に反映させることができます。
ローカルで編集した内容をあげましょう。
1日くらいかけて色々試してみよう
なにかを学ぶには、個人のスタイルや能力にもよりますが
時間がかかるものだと思います。
実は私がGitをなかなか理解できなかった理由として
勉強時間をあまり割かなかったというどうしようもない理由があります。
というのも、プログラミングを勉強していると
アウトプット至上主義な傾向になってしまい、こうしたバージョン管理にあまり興味を持たない人も多いかもしれません。
また、一回切りのソフトをつくるなどバージョン管理を行った経験がない人は、Gitの必要性を感じにくいかもしれません。(私でした)
それでもGitはソフトウェア開発において非常に重要な役割を果たしているため、できるだけ学習しておくことが望ましいと言えます。
Gitに5年くらい苦手意識のあった私は
実際に自分でtxtファイルを更新したり、ブランチを切ってみたり、コミットメッセージを書いてみたりすることで、ちょっとづつできるようになりました。。。。
また何か勉強するのにも時間はかかるものです。
下の図はKUMONさんから引用した、学習曲線です。
横軸が勉強時間で、縦軸が達成度(何か覚えたり、仕事の成果だったり)を表しています。
時間軸の左の方を見てみると、勉強してもなかなか直ぐには身に付かないことがわかります。
なのでここをなんとか抜け出すためには勉強時間を重ねるしかありません。
私の場合ここが少し長いので、よく苦労してます(笑)
おわりに
ここまで読んでいただき、誠にありがとうございましました!
今回はGitについて苦手意識のあった私の体験を込めて
記事を書かせてもらいました。
基本的なコマンドを最近ようやく使えるようになって
現在はコンフリクトについて、ちょっとづつ分かってきました。(まだ基本)
もしGitで何かこうした方が学べるよ〜などあれば
教えていただければ幸いです。
話は変わりますが、、、、
最近は、新入社員たちの教育も終わり
なんとかブログを書く体力も戻ってきました。
今年は忙しくて花見に行けなかった後悔がすごくあります。。。
来年こそは、寿司でも食べながら花見するんだ〜泣