自分のコードにタイム マシンがあればいいのにと思ったことはありませんか? Git はまさにそれですが、それ以上のものです。
詳しくない方のために説明すると、Git とはコードの変更を追跡するのに役立つバージョン管理システムです。 特定の時点でプロジェクトのスナップショットを保存すると、いつでもスナップショットに戻ることができるため、作業を危険にさらすことなく実験的な変更を加えることができます。
GitHub 自体は Git を中心に構築されたプラットフォームであり、Git プロジェクトをクラウドに保存して、他の開発者と共同作業することができます。
Git は複雑な面もありますが、あらゆる開発者にとって強力で必要なツールです。 この記事では、日常のワークフローで Git を使うために必要なすべてのツールについて説明します。
前提条件
このチュートリアルを実行するには、Visual Studio Code をインストールする必要があります。
GitHub Desktop を使って Git の基本を学ぶ
標準の Git 操作には、コマンドを書くのではなく、視覚的に Git を操作できるアプリである GitHub Desktop をお勧めします。 このセクションでは、GitHub Desktop を使って、よく使う Git 操作を簡単に実行する方法について説明します。
GitHub Desktop を設定する
GitHub Desktop を初めて使う場合は、それをインストールし、GitHub アカウントに接続する必要があります。
- GitHub Desktop をダウンロードします。
- GitHub Desktop を開き、[Sign in to GitHub.com] をクリックし、GitHub Desktop が自分のアカウントにアクセスすることを認可します。
- GitHub Desktop に戻り、[Finish] をクリックします。 これにより、GitHub アカウントの名前とメール アドレスが Git に追加されます。
ローカル リポジトリを作成する
これで、リポジトリを作成して Git への最初の一歩を踏み出すことができます。 リポジトリは、変更を追跡し、履歴を格納するプロジェクト フォルダーと考えてください。 まず、ローカル リポジトリを作成します。
-
GitHub Desktop で、[Create a New Repository on your Local Drive] をクリックします。
-
リポジトリに
learning-git
という名前を付けます。 -
[Initialize this repository with a README] を選びます。空の
README.md
ファイルが自動的に作成されます。Tip
README とも呼ばれる
README.md
ファイルをプロジェクトに含めるのが標準の方法です。 通常、README には、他のユーザーがプロジェクトを理解し、設定し、実行するのに役立つ情報が含まれています。 -
[Create repository] (リポジトリの作成) をクリックします。
リモート リポジトリを作成する
先ほど作成したローカル リポジトリは、お使いのコンピューター上にあります。 次に、同じプロジェクトのリモート リポジトリを作成しましょう。これは、GitHub 上でホストされます。 リモート リポジトリをリンクすると、共同作業や作業のバックアップが簡単になります。
- GitHub Desktop で、[Publish repository] をクリックします。
- 表示されるポップアップの [Publish repository] をもう一度クリックします。
- リモート リポジトリを表示するには、[View on GitHub] をクリックします。
変更を行うスペースを設定する
リポジトリを作成したので、ブランチについて説明しましょう。 ブランチとは、基本的にプロジェクトのコピーです。既存の作業の安定性を危険にさらすことなく、そこで変更をテストできます。
リポジトリは、main
ブランチを使って自動的に作成されます。これは、安定したプライマリ バージョンのプロジェクトと考えることができます。 たとえば、Web サイトのリポジトリの場合、main
ブランチは訪問者が閲覧できるサイトに相当します。
新しいブランチを作成すると、プライマリ バージョンに影響を与えることなく、新しい機能に取り組むことができる安全なスペースが作成されます。 あなたとコラボレーターは、異なるブランチを使って複数の機能に同時に取り組むことができます。
変更作業を行うブランチをリポジトリに作成しましょう。
- GitHub Desktop で、[ Current Branch] ドロップダウン メニューを選び、[New Branch] をクリックします。
- 新しいブランチに「
readme-updates
」という名前を付け、[Create Branch] をクリックします。
プロジェクトのスナップショットを保存する
進行状況をブランチに保存するには、コミットを行います。 コミットは、特定の時点で作成したプロジェクトのスナップショットです。 実際には、初回のコミットは既に行っています。README を含むプロジェクトを初期化すると、GitHub Desktop によって、README.md
ファイルを追加する初回のコミットが自動的に作成されます。
保存する作業のチャンクを完了したら、必ずコミットを行うようにしてください。 実行すると、その後にどれだけ変更を加えても、いつでもその時点に戻ることができます。
-
GitHub Desktop で、[Open in Visual Studio Code] をクリックします。
-
VS Code で、次のテキストを
README.md
に貼り付け、変更を保存します。Markdown Hello, World! This is a demo project for learning how to use Git.
Hello, World! This is a demo project for learning how to use Git.
-
GitHub Desktop に戻ると、先ほど README に加えた更新が表示されます。 左下の GitHub プロフィール画像の横にあるテキスト ボックスに「Update README」と入力します。 これはコミット メッセージと呼ばれ、各コミットで加えた変更を追跡するのに役立ちます。
-
コミットするには、[Commit to readme-updates] をクリックします。
変更をメイン ブランチに反映する
ブランチに加えた変更に問題がなければ、ブランチをリモート リポジトリに公開し、pull request を作成できます。 Pull request を使うと、提案された一連の変更をレビューし、あるブランチから別のブランチにそれらをマージできます。 この例では、readme-updates
で加えた変更を元のブランチ main
に反映する pull request を作成します。
-
[Publish branch] をクリックして、変更内容を含む
readme-updates
ブランチをリモート リポジトリにプッシュします。 -
提案された変更をレビューするには、[Preview Pull Request] をクリックします。
-
[pull request の作成] をクリックします。
-
表示された GitHub ウィンドウで、pull request のタイトルを「Add a message to the README」に変更し、コメント ボックスに変更内容の簡単な説明を書きます。
-
[Pull request の作成] をクリックします。
-
変更を
main
ブランチに反映するには、ページの下部にある [Merge pull request] をクリックします。Note
他の開発者とプロジェクトに取り組んでいる場合、pull request がマージされる前に他のユーザーが pull request をレビューするのが標準の方法です。
-
ページの下部近くにある [Delete branch] をクリックします。
main
にマージされたブランチを削除すると、リポジトリを整理し、操作しやすくすることができます。
さらに変更を加える準備をする
これで最初の pull request をマージできました。 変更を main
ブランチに正常に反映できたら、次の変更の準備として、いくつかの手順を実行する必要があります。
-
GitHub Desktop で、
main
ブランチが表示されていない場合は、[ Current Branch] ドロップダウン メニューを選び、[main] をクリックします。新しいブランチは現在選択されているブランチのコピーとして作成されるため、ほとんどの場合、新しいブランチを作成する前に
main
ブランチに戻る必要があります。 -
リモート
main
ブランチに変更が加えられたかどうかをチェックするには、[Fetch origin] をクリックします。 -
最後に、リモート
main
ブランチに加えられた変更をローカルmain
ブランチを反映するには、[Pull origin] をクリックします。
これで、プロジェクトで Git を設定して使うために必要なスキルをすべて習得できました。
コマンド ラインでの Git について理解を深める
GitHub Desktop は、日常的な Git のニーズに対応できるように設計されています。 開発者として成長するにつれて、Git 操作をより詳細に制御する必要がある場合や、より複雑なコマンドを使う必要がある場合など、通常とは異なる状況になることがあります。 そのような場合は、コマンド ラインで Git コマンドを記述する方法に切り替える必要があります。
コマンド ラインを設定する
コマンド ラインを使い始めるには、事前にいくつかのツールを設定する必要があります。
-
GitHub Desktop で、Ctrl+` キーを押してコマンド ラインでプロジェクトを開きます。
-
Windows を使っている場合は、Git をインストールします。 macOS と Linux の場合、Git は既定でインストールされています。
-
GitHub CLI をインストールします。これにより、GitHub 関連のアクションをコマンド ラインからすばやく実行できるようになります。
-
GitHub CLI から GitHub の認証を受けるには、次のコマンドを実行します。
Shell gh auth login
gh auth login
GitHub.com で認証することを選び、画面上のプロンプトに従います。
-
次のコマンドを実行して、GitHub CLI 用の強力な拡張機能である GitHub Copilot in the CLI をインストールします。これは、コマンドの検索と理解に役立ちます。
Shell gh extension install github/gh-copilot
gh extension install github/gh-copilot
複雑なコマンドを試してみる
これで設定は完了です。今後必要になりそうなコマンドを見つけて理解する方法を学習しましょう。 たとえば、誰かがオンラインで git blame
について触れているのを見ても、何をするものなのかわからなかったとします。 次のコマンドを使って、Copilot に説明を依頼しましょう。
gh copilot explain "git blame"
gh copilot explain "git blame"
Copilot により、git blame
にはファイルの詳細な履歴機能があり、ファイルの各行を最後に変更した作成者とコミットを確認できることが示されます。 次のコマンドを使って自分で試してみてください。
git blame README.md
git blame README.md
これはすばらしいツールですが、ご想像のとおり、ファイル対する責任の説明は非常に長くなる可能性があります。 たとえば、ファイル内の特定の行に対する最新の更新のみに関心があるとします。 Copilot に適切なコマンドを作成するよう依頼できます。
gh copilot suggest "Show me the blame for line 1 of README.md"
gh copilot suggest "Show me the blame for line 1 of README.md"
Copilot から、どのようなコマンドが必要かを聞かれたら、方向キーを使って git command を選び、Enter キーを押します。 Copilot から次のコマンドが提案されます。
git blame -L 1,1 README.md
git blame -L 1,1 README.md
方向キーを使って [Execute command] を選び、Enter キーを押します。 README.md
の 1 行目を最後に変更した作成者とコミットが表示されます。
レビューと次の手順
この記事では、GitHub Desktop を使って Git の基本を説明し、次のような重要用語を学習しました。
- リポジトリ: プロジェクト内のファイルに加えられたすべての変更を保存するフォルダー。
- コミット: 特定の時点で作成されたプロジェクトのスナップショット。
- ブランチ: プロジェクトのコピー。ここで一連の変更に取り組むことができます。
- Pull request: あるブランチから別のブランチに変更をマージする要求。
より複雑な Git 操作をコマンド ライン上で実行することについても説明しました。 新しいコマンドと機能を理解し、検索するために gh copilot explain
と gh copilot suggest
を試しました。
次は、学んだことを自分の仕事に活かしてみましょう。 Ctrl+O キー (Windows/Linux) または Command+O キー (Mac) を押し、GitHub Desktop を使って既存のプロジェクトに Git を追加し、バージョン管理の利点を体感しましょう。