ウェブサイト検索

Gitの基本 - プロジェクトコードを効率的に管理する方法


Gitは、開発者や開発チームがソースコードに加えた変更を追跡するために使用する最も人気のあるバージョン管理システム(VCS)です。実際、DevOpsで使用される最も人気のあるバージョン管理システムです。

バージョン管理システムは、ソフトウェアコードの変更を特別なデータベースであるリポジトリに時間の経過とともに追跡または記録するソフトウェアです。Gitを使用すると、プロジェクトの履歴を追跡し、どのような変更が行われ、誰がそれを行ったのかを見ることができます。

変更を元に戻して元のコードに戻すこともできます。また、Gitは、場所に関係なく複数の人が同じプロジェクトで共同作業をすることを可能にします。

バージョン管理システムは、中央集権型と分散型の二つに分類されます。
[lwptoc]

中央集権型バージョン管理システムとは何ですか

中央集権型システムでは、すべてのユーザーが中央サーバーに接続してソフトウェアコードのコピーを取得し、他のユーザーと共有します。中央集権型バージョン管理システムの例には、Apacheライセンスのもとで配布されているSubversionと、Microsoft Team Foundation Server(Microsoft TFS)があります。

集中型のVCSの欠点は、単一障害点が存在することです。中央サーバーがダウンすると、チームのメンバーはもうプロジェクトで協力できなくなります。

分散型バージョン管理システムとは何ですか

分散システムでは、各チームメンバーが自分のローカルマシンにコードプロジェクトのコピーを持つことができます。中央サーバーがダウンしている場合でも、ユーザーは他の人とソフトウェアコードを問題なく同期することができます。

分散型バージョン管理システムの例には、GitやMercurialがあります。

なぜGitを使用するのか?

私たちが言及したすべてのバージョン管理システムの中で、Gitは最も人気があり、広く使用されているVCSです。そして、それには良い理由があります。無料でオープンソースであり、スケーラブルで、速く、信頼性があります。

コードに加えられた変更を追跡し、他のチームメンバーとプロジェクトで簡単に共同作業を行うことができます。また、ブランチ作成やマージといった操作は、Gitの方がMercurialや他の任意のVCSよりもはるかに簡単です。

現在、Gitはどこにでも存在しており、小さな企業から大企業まで、ソフトウェアコードを効率的に管理するために使用されています。そのため、開発者やソフトウェア開発に入る人々にとって最も需要のあるスキルの一つとなっています。

したがって、ソフトウェア開発者として仕事を探している場合は、Gitが前提条件であることを念頭に置いてください。このバージョン管理システムツールについての十分な知識と理解が必要です。

このチュートリアルでは、Gitの基本と、どのようにコードを効率的に管理できるかについて説明します。

GitとGitHubの紹介

私たちはGitについて話すとき、GitHubを言及せずにはいられません。この二つは相互に関連しており、しばしば一緒に使用されます。実際、多くの人々はGitとGitHubが同じものだと思っています。しかし、これらは互いに統合される二つの別々のものです。

GitHubはGitリポジトリのためのコードホスティングプラットフォームです。実質的に、開発者やプロジェクトマネージャーがソフトウェアプロジェクトをホストするためのウェブサイトです。

チームメンバーや開発者がコードに加えられた変更を調整し追跡することを容易にし、必要に応じて更新を行うことができます。これにより、GitHubはコラボレーションと透明性を促進し、チームメンバーがどこからでも作業し、コードに加えられた最新の変更を把握できるようにします。

GitHubでは、パッケージを公開することができ、外部のアクセスを可能にするか、チームメンバー内で非公開にすることができます。一度公開されると、ユーザーはコードをダウンロードして、個人のコンピュータ上で試すことができます。

要約すると、GitHubはオンラインコードホスティングプラットフォームで、クールなUIを提供し、リモートのGitリポジトリをホストし、どこからでも他の開発者と共同作業を行うことができます。

一方、Gitはコードのプッシュやマージ、コミット、リポジトリのクローンなどのバージョン管理操作を扱います。では、GitHubで作業するために使用できるさまざまなGitコマンドを探求してみましょう。

LinuxにGitをインストールする方法

Gitを使い始める前に、まずそれをインストールしましょう。UbuntuまたはDebianベースのディストリビューションを使用している場合は、次のaptコマンドを実行してインストールします。

$ sudo apt update
sudo apt install git -y

RHEL、Fedora、CentOS Stream、AlmaLinux、および Rocky Linux などの Red Hat ベースのディストリビューションでは、以下の dnf コマンドを実行してください:

$ sudo dnf update
sudo dnf install git -y

Git がインストールされていることを確認するには、以下のコマンドを実行します:

$ git --version

git version 2.34.1

Gitリポジトリの初期化

gitを使用する最初のステップは、gitリポジトリを初期化することです。これは、ローカルシステム上のディレクトリを、プロジェクトファイルやコードがすべて保存され、GitHubにプッシュされる前のgitリポジトリに変換することです。

これを示すために、test_repoというディレクトリを作成し、その中に移動します。

$ mkdir test_repo
cd test_repo

リポジトリを初期化するには、次のコマンドを実行してください:

$ git init

ヒントメッセージがいくつか表示され、出力の最後には、デフォルトでmasterと呼ばれるブランチでGitリポジトリが初期化されたという通知が表示されます。

Gitリポジトリに変更をコミットする

ディレクトリが初期化されると、.gitという隠しディレクトリが作成され、コードの変更を追跡するためにGitが必要とするすべてのファイルが含まれます。このディレクトリを表示するには、以下のように-laオプションを付けてlsコマンドを実行します。

$ ls -la

プロジェクトの追跡は、変更が初めて確定されたときだけに行われます。これについては後で説明します。

Gitリポジトリの設定

一度Gitリポジトリを初期化したら、次のステップはGitのいくつかの設定変数を設定することです。コミットに関連付けられるユーザー名とメールアドレスを追加します。

現在のユーザーによるすべてのコミットにユーザー名とメールアドレスを追加するには、次のコマンドを実行してください。自分の好みの名前とメールアドレスを提供することを忘れないでください。

$ git config --global user.name "your_name"
git config --global user.email "email_address"

設定した変数を確認するには、次のコマンドを実行してください:

$ git config --list

ファイルをGitリポジトリに追加する

gitリポジトリに変更を加えるには、まずgit addコマンドを実行し、その後にgit commitを実行します。git addコマンドはファイルをステージングエリアに追加します。これは本質的に、次のコミットのために変更を提案する特別なエリアです。

私たちの設定では、app.pyという名前のPythonファイルがあります。このファイルをステージングエリアに追加するために、次のコマンドを実行します。

$ git add app.py

複数のプロジェクトファイルがある場合は、示されているように一度にすべて追加できます。

$ git add -A
OR
git add --all

すべてのファイルをステージングエリアに追加したら、git commitコマンドを使用してリポジトリにコミットします。コミットは、プロジェクトのスナップショットを撮るようなものです。

$ git commit -m "Some Message"

-mオプションを使用すると、コミットにタグやメッセージを追加できます。引用符の間の文字列がコミットに関連付けられたメッセージです。このメッセージは、参照するために意味のある履歴を持つために重要です。

以下の出力は、変更がGitリポジトリに正常にコミットされたことを示しています。

コミットの状態を確認するには、次のコマンドを実行します:

$ git status

保留中のコミットがない場合、コミットするものはないという通知が届きます。

では、もう2つのファイルを作成し、コミットの状態を確認しましょう。

$ echo "Hello there" > file1.txt
echo "Let us learn Git" > file2.txt

次に、ステージングエリアの状態を表示します。

$ git status

今回は、新しく追加されたファイルが赤で表示され、「未追跡」としてマークされます。Gitがそれらを追跡するためには、それらをステージエリアに追加する必要があります。

すべてのファイルを一度に追加するには、次のコマンドを実行します:

$ git add .

これはディレクトリ全体を再帰的に追加することに注意し、注意が必要です。しかし、私たちにはファイルが2つしかないので、やはりこれを使用します。

次に、行った変更をコミットしてください。

$ git commit -m "Second Commit"

さあ、もう少し野心的なことを試してみましょう。私たちは1つのファイルを修正します。

$ echo "Git is a popular Version Control System" >> file2.txt

再度、ファイルは赤色で表示されます。なぜなら、行った変更がコミットされていないからです。

もう一度、修正したファイルをステージングエリアに追加する必要があります。

$ git add file2.txt
git status

ステージングエリアの状態を確認すると、ファイルが緑色で表示され、コミットする準備が整っています。

Gitリポジトリからファイルを削除する

プロジェクトに不要なコードが含まれているため、file2.txtがもはや必要ないことに気づいたとしましょう。rmコマンドを使用して、以下のように削除できます。

$ rm file2.txt

ステータスを確認すると、削除されたファイルが赤でマークされており、変更がまだコミットされていないことがわかります。

$ git status

私たちはfile2.txtを作業ディレクトリから削除しました。しかし、それはまだステージングエリアに存在します。これを確認するには、次のコマンドを実行してください:

$ git ls-files

削除を実行するには、以下に示すようにgit addコマンドを実行します。

$ git add file2.txt

再び、ステージングエリアのファイルをリストします。

$ git ls-files

今回は、file2.txt がスタ stagingエリアにもう存在しないことがわかります。ステータスを確認すると、変更がコミットする準備ができていることがわかります。

さあ、私たちは行われた変化にコミットしましょう。

$ git commit -m "Remove unused code files"

ローカルリポジトリをGitHubにプッシュする

ローカルリポジトリの準備が整ったので、他のユーザーがプロジェクトにアクセスできるように、コラボレーションのためにプロジェクトをGitHubにプッシュすることを選択できます。

しかしまず最初に、まだ持っていない場合はGitHubアカウントを作成する必要があります。

次に、新しい空のリポジトリを作成する必要があります。これが、あなたがローカルリポジトリをプッシュするリポジトリです。ですので、‘新規’ボタンをクリックしてください。

リポジトリ名を入力し、公開に設定してください。READMEファイルを初期化するかどうかは任意です。これはあなたのコードについて簡潔に説明するファイルです。今のところ、これはそれほど重要ではありません。

次に、提供された詳細を使用してリポジトリを作成するために、‘リポジトリを作成‘ボタンをクリックします。この例では、‘my-test-project‘という名前のリポジトリを作成しました。

新しく作成されたリポジトリへのリンクと、ローカルリポジトリをGitHubにプッシュする方法に関する指示を含むクイックセットアップが提供されます。

次のステップは、SSHキーを使用してコマンドラインでGitHubの認証を有効にすることです。

そのためには、右上隅にあるプロフィールアイコンをクリックし、‘設定’を選択してください。

次に、「SSH と GPG」キーに移動し、「新しい SSH キー」をクリックしてください。

次に、公開SSH鍵をコピーして、鍵に意味のあるタイトルを付けます。それから「SSH鍵を追加」を押します。

今、あなたのリポジトリをGitHubにプッシュする準備が整いました。git remote addコマンドの構文を使用して、リモートGitHubリポジトリを追加してください。

$ git remote add origin [REMOTE REPOSITORY URL HERE]

上記の構文では、‘remote’はリモートリポジトリのバージョンを表し、‘origin’はリモートサーバーに付けられた名前です。

この場合、コマンドは以下のように表示されます。

$ git remote add origin https://github.com/kodewise/my-test-project.git

その後、git push コマンドを実行して、ローカルリポジトリを GitHub にプッシュします。ここでは、master がデフォルトのブランチ名です。

$ git push -u origin master

GitHubでリポジトリを訪れると、すべてのプロジェクトファイルが表示されます。

今後、リポジトリに新しいファイルを追加したい場合は、ファイルをステージングエリアに追加し、コミットして、変更をリポジトリにプッシュするという同じ手順を繰り返すだけで済みます。

$ git add -A
git commit -m 'Added my project'
git push -u origin main

GitHubで行った変更をローカルリポジトリに更新する

このgit pullコマンドは、リモートリポジトリの上流の変更でローカルリポジトリを更新するために使用されます。これは基本的に、GitHub上で行われたコードの変更をダウンロードし、それに応じてシステム上のローカルリポジトリを更新します。git fetchコマンドとgit mergeコマンドを組み合わせたものです。

この例では、GitHubにホストされているリモートリポジトリのREADMEファイルを編集しました。同じコピーをローカルリポジトリに持っていることを確認するために、次のコマンドを実行します:

$ git pull https://github.com/kodewise/my-test-project.git

Gitリポジトリをクローンする

git cloneコマンドは、GitHubリポジトリ上のプロジェクトファイルの正確なコピーをダウンロードします。次の構文を使用して、任意のシステムまたはディレクトリにパブリックリポジトリをクローンできます。

$ git clone [REMOTE REPOSITORY URL HERE]

GitHubプロジェクトのページで「Code」をクリックし、下に示されているようにURLをコピーします。

次に、示されているようにGithubリポジトリをクローンします。

$ git clone https://github.com/kodewise/my-test-project.git

これにより、プロジェクトファイルとともにリポジトリ全体がダウンロードされます。

結論

このGitチュートリアルでは、gitを紹介し、Gitリポジトリ内のファイルを作成および管理するために使用される基本的なコマンドを示しました。最後に、コラボレーションのためにリポジトリをGitHubにプッシュする方法を説明しました。今回は以上です。このチュートリアルが役に立ったことを願っています。

関連記事: