Git Mergeのシンプル化:プロのようにブランチをマージする方法

ブランチのマージは、時には難しい作業になることがありますが、git mergeコマンドを使用することで、そのプロセスを大幅に簡素化できます。このチュートリアルでは、git mergeを使用してブランチを組み合わせる基本を学びます。これは、主要なプロジェクト管理ツールであるGitHubと組み合わせています。

GitとGitHubの世界への旅を始めましょう。強力なgit mergeコマンドに焦点を当てます。

Gitマージのマスターの前提条件

git mergeの細部に入る前に、以下のセットアップが完了していることを確認してください。

  • このチュートリアルではGit(バージョン2.25.1)を使用しています。 – Gitの公式サイトからダウンロードしてください。
  • A GitHub account – Sign up at GitHub.
  • Ubuntuマシン(ここではUbuntu 20.04を使用していますが、Gitがインストールされている任意のオペレーティングシステムで動作します)。

Gitマージのプロジェクトの初期化

git mergeを効果的に使用するには、まずGitプロジェクトが必要です。練習用のデモプロジェクトをセットアップしましょう。

1. 新しいディレクトリ~/git-demoを作成し、そのディレクトリに移動します。

mkdir git-demo && cd git-demo

2. ~/git-demoディレクトリにindex.htmlファイルを作成し、次の内容を含めます。この基本的なHTMLファイルは、git mergeを始めることに関するメッセージを表示します。

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Demo</title>
</head>
<body>
    <h4>Let's get started with git merge</h4>
</body>
</html>

3. プロジェクトディレクトリで新しいGitリポジトリを初期化します。

git initコマンドは、既存のバージョン管理されていないプロジェクトをGitリポジトリに変換するか、Gitを使用して新しいプロジェクトを開始するために使用されます。

git init
Initializing a Git repository for git merge

4. プロジェクトディレクトリ内に.gitフォルダが作成されたことを確認してください。このフォルダは、Gitが変更を追跡する場所です。

ls -la
Verifying the existence of the GIT repository in the directory.

5. プロジェクトで変更をステージングするためにgit addコマンドを実装します。 index.htmlファイルをステージングすることで、Gitワークフローの次のコミットに向けて準備を整えます。

git add index.html

6. git statusを使用して、ファイルが正しくステージングされているかどうかを確認します。このコマンドは、現在の作業ディレクトリの状態のスナップショットを提供します。

git status
Confirming the staging of changes for git merge.

7. 次に、git commitを使用して変更内容をコミットします。このコマンドは、ステージングされた変更内容をローカルリポジトリに保存し、バージョン履歴に重要な一歩をマークします。

git commit -m "initial commit"
Executing the initial commit in preparation for git merge.

Gitを初めて使用する場合は、git config --global user.email "[email protected]"およびgit config --global user.name "Your Name"を使用してGitのアイデンティティを設定します。

8. git logを使用してコミット履歴を確認します。このコマンドは、変更を追跡するのに役立ち、git mergeを準備する際に重要です。

git log
Checking commit history before performing git merge.

9. git branchを使用してリポジトリ内のブランチの存在を確認します。このステップは、git mergeを実行する前に重要です。

注意: Gitの最近のバージョンでは、デフォルトのブランチは「master」ではなく「main」と呼ばれています。

git branch
Listing all branches in preparation for git merge.

Gitマージのためのブランチの作成

初期のGitセットアップが完了し、最初のコミットが完了したら、新しいブランチを作成する時が来ました。このブランチは、git mergeプロセスを効果的にデモンストレーションするために使用されます。

1. index.htmlファイルを新しいコンテンツで更新して、ブランチでの変更をデモンストレーションします。このバージョンには、ユーザー入力フィールドが含まれており、git mergeのデモンストレーションに備えています。

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Demo</title>
</head>
<body>
    <h4>Enhancing Git Merge Skills</h4>
    <form action="">
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
    </form>
</body>
</html>

2. git statusでリポジトリの状態を確認して、index.htmlの変更を表示します。ファイルが変更され、ステージングされていないことを示し、git mergeプロセスの次のステップに備えています。

Inspecting repository changes for git merge.

3. git checkout -b formで新しいブランチ「form」を作成します。このコマンドは新しいブランチを作成するだけでなく、作業ブランチを「form」に切り替えます。これは、git mergeの実装に不可欠です。

git checkout -b form
Creating a new branch for git merge.

4. git branchを実行して、新しいブランチの作成を確認します。今や「form」と「master」の両方のブランチが表示され、「form」がアクティブブランチであることがアスタリスク(*)で示されます。

git branch
Confirming the active ‘form’ branch for git merge.

5. formブランチに変更をステージングしてコミットします。この操作により、formブランチがindex.htmlファイルへの最近の更新を反映し、git mergeの効果的な実行の準備が整います。

## 更新されたファイルをステージングします
git add index.html

## 新しい変更をコミットします
git commit -m "Added user input fields to form"
Committing updated index.html to the ‘form’ branch for git merge.

Git Mergeを使用したローカルブランチのマージ

GitHubリポジトリに異なるブランチがある場合、次のステップはそれらをマージすることです。このセクションでは、git mergeコマンドを使用してローカルでブランチをマージする方法に焦点を当てます。これは、Gitの基本的な操作です。

1. マージを開始するには、formブランチから更新を受け取るmasterブランチに切り替えます:

git checkout master

2. masterブランチにいる場合は、formブランチからの変更をmasterに統合するためにgit merge formを実行します。これは、git mergeプロセスの重要なステップです。

git merge form
Successfully merging branches using git merge.

3. マージを確認するには、masterブランチにいることを確認し、index.htmlの内容が更新されていることを確認します。

# 現在のブランチを確認
git branch
# マージされた内容を確認
cat index.html
Reviewing index.html content post git merge.

Git Squashを使用した効率化

Gitでのスクワッシュは、コミット履歴を整理するためのテクニックです。個々に必要ない複数のコミットメッセージがある場合、スクワッシュを使用してこれらを1つの包括的なコミットに結合できます。この実践は、git mergeに備える際に特に役立ちます。

さらなる変更をformブランチのindex.htmlファイルに加え、その変更をスクワッシュすることで、スクワッシュプロセスを探ってみましょう。

1. form ブランチに切り替えて、追加の変更を行います:

git checkout form

2. index.html にフォームヘッダーを追加してください。このステップでは、後でマージ中にスカッシュする変更が作成されます:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h4>Mastering Git Merge with Form Updates</h4>
    <form action="">
      <h4>Account Details</h4>
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
      <button>Submit</button>
    </form>
</body>
</html>

3. 変更をステージングし、更新内容を明確に説明する明確なメッセージでコミットしてください:

git add index.html
git commit -m "Enhanced form with a header for git merge"
Staging and committing changes for squashing in git merge.

4. form ブランチの index.html を新しい入力フィールドを追加して改善してください。この変更は、効果的な git merge に向けての準備の一部です。

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Example</title>
</head>
<body>
    <h4>Practicing Git Merge</h4>
    <form action="">
      <h4>Enter account details</h4>
      <input type="text" name="fullname" placeholder="Full Name" />
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
      <button>Submit</button>
    </form>
</body>
</html>

5. これらの変更をステージングし、各作業ステップが次の git merge のために明確に文書化されていることを確認する明確なメッセージでコミットしてください:

git add index.html
git commit -m "Enhanced form with an additional input field"
Adding another input field to index.html for git merge.

6. 次に、index.html のフォームの下に段落要素を挿入し、git merge に向けてファイルをさらに変更してください。

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Practice</title>
</head>
<body>
    <h4>Let's get started with git merge</h4>
    <form action="">
      <h4>Enter account details</h4>
      <input type="text" name="fullname" placeholder="Full Name" />
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
      <button>Submit</button>
    </form>
    <p>Already a user?</p>
</body>
</html>

7. 再度、重要な git merge プロセスのためにこの更新の本質を捉えたメッセージを使用して、変更をステージングおよびコミットしてください。

git add index.html
git commit -m "Added user status paragraph to form"
Further modifying index.html for git merge.

8. インタラクティブモードで git rebase を使用して、最近のコミットを表示および編集します。このステップは、きれいな git merge を実現するためのコミットをスカッシュするプロセスで重要です。

git rebase -i HEAD~3

9. インタラクティブモードで、最初のコミットを reword し、その後のコミットを squash するように選択します。この操作により、コミット履歴が統合され、git merge がよりきれいで整理されます。

Preparing commits for squashing in git merge.

10. リワードと保存後、累積的な変更を反映するように統合されたコミットメッセージを更新します。このステップにより、スムーズな git merge が実現されます。

Finalizing the commit message for git merge.

確認してください、複数のコミットメッセージを処理するgit mergeプロセスの一環としてのスクワッシュ操作の成功。

Successful git squash operation.

同時にスクワッシュとマージするには、git merge --squashを使用してください。このテクニックはformブランチをmasterブランチにマージし、効果的にコミットを結合します。

git merge --squash form

git merge --squashコマンドを実行すると、formブランチの変更がmasterに結合され、すべてのコミットが一つにまとめられます。このアプローチは効果的なgit merge戦略の一部です。

Executing git merge with squash option.

Git Mergeでのファストフォワードの実装

スムーズなコミット履歴のために、ファストフォワードは特に小規模な更新やバグ修正に適したメソッドです。これにより、追加のマージコミットなしでブランチをマージし、効率的なgit mergeプロセスのために重要なクリーンで直線的な履歴を維持できます。

ファストフォワードは、ベースブランチ(通常はmaster)で分岐がない場合に発生し、履歴とポインタのアップデートをシームレスに統合できます。

1. ファストフォワードプロセスを開始するには、formブランチに切り替えてください:

git checkout form

2. formブランチでJavaScriptファイル(index.jsなど)を作成および更新し、変更をステージングおよびコミットしてください:

git add index.js
git commit -m "Added JavaScript functionality"

3. 最後に、formブランチをファストフォワードアプローチを使用してmasterにマージします。このステップにより、マスターブランチがフォームブランチの最新の変更と整合し、スムーズで直線的なgit mergeパスが作成されます。

git checkout master
git merge form
Performing a fast-forward merge in Git.

結論

このチュートリアルでは、git mergeを使用してブランチを結合するさまざまな技術を紹介しました。コミットをスカッシュするからファストフォワーディングまで、これらのメソッドはGitを使用してプロジェクトを共同で管理する能力を向上させます。

これらのスキルを身につけた今、実際のシナリオでgit mergeの知識を活用して、GitHubでの共同作業に貢献することを検討してください。

Source:
https://adamtheautomator.com/git-merge/