ホームページ >テクノロジー周辺機器 >IT業界 >ジャンプ開始git:gitで分岐します

ジャンプ開始git:gitで分岐します

Christopher Nolan
Christopher Nolanオリジナル
2025-02-18 10:12:11982ブラウズ

gitブランチ:効率的なコラボレーションのためのツール

この記事は、SitePoint Premiumメンバーから無料で利用できる本「Jump Start Git」から抜粋されています。物理的な本は世界中の主要な書店で入手できます。また、ここで注文することもできます。あなたがそれを好み、それを恩恵を受けることを願っています!

第1章では、プロジェクトで新しいことを試すことへの最初の恐怖について話しました。野心的な機能を試してみて、以前に機能していた部分を破ったらどうでしょうか。 Gitの分岐機能は、この問題を完全に解決します。

キーポイントの概要

概要

  • Git Branchを使用すると、元のプロジェクトに影響を与えることなく、プロジェクトのコピーを実験することができます。実験が成功した場合、実験要素をメインブランチに簡単に融合できます。
  • ブランチにより、互いに干渉することなく複数のタスクを同時に処理できます。これは、別の機能を処理する必要がある間にある機能の承認を待つときに非常に便利です。分岐は、さまざまなアイデアを分離することで、コードを理解しやすくすることもできます。
  • コマンドを使用して
  • gitでブランチを作成しますgit branch [分支名称]。このブランチに切り替えて、git checkout [分支名称]を使用します。ブランチの削除はgit branch -D [分支名称]を使用しますが、必要でない限りブランチを削除しないことをお勧めします。
  • GITの枝のマージは簡単なプロセスです。必要なブランチがアクティブであることを確認した後、コマンド
  • を使用します。ただし、これにより、プロジェクト履歴にループを作成できます。これにより、大規模なチームでナビゲートするのは難しい場合があります。次の章では、ループを作成しないマージメソッドについて説明します。 git merge [分支名称]

ブランチとは何ですか?

プロジェクトに新しいブランチを作成することは、基本的にプロジェクトのコピーを作成することを意味します。このコピーを使用して、元のプロジェクトに影響を与えることなく実験できます。したがって、実験が失敗した場合は、それをあきらめて、元のプロジェクトであるメインブランチに戻ることができます。

しかし、実験が成功した場合、Gitは実験要素をメインブランチに簡単に融合できます。そして、後で、気が変わった場合、マージの前にプロジェクトの状態に簡単に復元できます。

したがって、Gitの分岐は独立した開発パスです。他のブランチに影響を与えることなく、支店で新しいコミットを作成できます。ブランチの使いやすさは、Gitの最高の機能の1つです。 (他のバージョン制御オプション(CVSなど)にもブランチオプションがありますが、CVSでブランチをマージする経験は非常に退屈です。他のバージョン制御システムでブランチを使用した経験がある場合、GITでのブランチの使用は完全に異なることをご安心ください。 )

gitでは、デフォルトでメインブランチにいます。 「マスター」という名前は、それが決して優れているという意味ではありません。これは単なる従来のことわざです。

注:ブランチ契約

さまざまなブランチをGitのベースブランチとして自由に使用できますが、人々は通常、メインブランチで特定のプロジェクトの最新コードを見つけることを期待しています。

コミットに戻る能力のために、ブランチは必要ないと主張するかもしれません。しかし、あなたがした仕事の一部ではない新しい機能を開発しながら、あなたの仕事を監督者に見せる必要があると想像してください。ブランチはさまざまなアイデアを分離するために使用されるため、リポジトリ内のコードを理解しやすくします。さらに、ブランチは、マスターまたはマスターブランチでのみ重要なコミットを保持することができます。

ブランチの別の使用は、互いに干渉することなく複数のものを同時に処理できることです。レビューのために機能1を提出したと仮定しますが、スーパーバイザーがそれをレビューするのに時間がかかるとします。同時に、関数2を処理する必要があります。この場合、ブランチは役に立ちます。新しいブランチで新しいアイデアに取り組んでいる場合は、いつでも以前のブランチに戻り、リポジトリを以前の状態に復元することができます。これには、アイデアに関連するコードが含まれていません。

ここで、Gitでブランチの使用を開始しましょう。使用しているブランチリストと現在のブランチを表示するには、次のコマンドを実行します。

<code>git branch</code>
リポジトリをクローン化するか、リモートリポジトリをセットアップした場合は、リモートブランチも表示できます。上記のコマンドの後に-A:

を追加するだけです

<code>git branch -a</code>

Jump Start Git: Branching in Git 上記のように、赤い枝は、それらがリモートリポジトリにあることを示しています。この例では、Origin Remote Repositoryに存在するさまざまなブランチを見ることができます。

ブランチを作成

gitにブランチを作成する方法はいくつかあります。新しいブランチを作成して現在のブランチに保持するには、次のコマンドを実行します。

ここで、

は作成されたブランチの名前です。ただし、
<code>git branch test_branch</code>
を実行した後、アクティブブランチはまだメインブランチであるようです。アクティブブランチを変更するには、チェックアウトコマンドを実行できます(以下に示すように):

test_branch <code>git branch</code>

<code>git checkout test_branch</code>

上記の2つのコマンドを組み合わせて、チェックアウトコマンドの後に-bを追加して、1つのコマンドで新しいブランチを作成してチェックアウトすることもできます。 Jump Start Git: Branching in Git

<code>git checkout -b new_test_branch</code>
私たちが作成したブランチは、現在アクティブなブランチの最新のコミットに基づいています(この場合は主要なブランチ)。コミットに基づいてブランチ(例:

)を作成したい場合(例:Jump Start Git: Branching in Git )、次のコマンドを実行できます。

cafb55dold_commit_branch

現在のブランチを
<code>git checkout -b old_commit_branch cafb55d</code>
に変更するには、次のコマンドを実行します。

Jump Start Git: Branching in Git

削除ブランチ

renamed_branch

ブランチを削除するには、次のコマンドを実行します
<code>git branch</code>

Jump Start Git: Branching in Git

注:必要でない限りブランチを削除しないでください

実際には、ブランチを保持するための欠点はないため、リポジトリ内のブランチの数が大きすぎて管理できない場合を除き、削除しないことをお勧めします。

上記で使用されている

オプションは、ブランチがリモートブランチと同期されていない場合でも、ブランチを削除します。これは、現在のブランチにプッシュされていないコミットがある場合、-Dは警告なしにブランチを削除することを意味します。データを紛失しないようにするには、-Dの代替として-dを使用できます。 -Dリモートブランチと同期されている場合にのみ、ブランチを削除します。私たちの枝はまだ同期していないので、以下に示すように、-dを使用した場合に何が起こるか見てみましょう。 -d

Jump Start Git: Branching in Git ご覧のとおり、Gitはデータがブランチと統合されていないため、操作を中止します。

ブランチとヘッド

分岐の基本を試してみる機会があるので、枝がどのように機能するかを議論し、重要な概念を紹介しましょう:ヘッド。

上記のように、ブランチは、異なるコミット間の、またはコミットの経路を通る間の単なるリンクです。ブランチを使用する場合、ブランチのヘッドはブランチでの最新のコミットを指していることに注意する必要があります。次の章で何度か頭に言及します。 Gitでは、ヘッドはブランチでの最新のコミットを指します。言い換えれば、それはブランチの上部を指します。

ブランチは、本質的に、親のコミット、祖父母のコミットなどを持つコミットへのポインターです。このコミットチェーンは、上記のパスを形成します。それで、枝と頭をリンクする方法は?さて、頭の上部と現在の分岐は同じコミットを指します。このアイデアを説明するためにチャートを見てみましょう:

上記のように、

Jump Start Git: Branching in Git は最初はアクティブなブランチであり、ヘッドポイントはCをコミットします。コミットAは、親がコミットしない基本コミットであるため、

のコミットは、逆順に並べられています(上記のパスも構成します)。

でのコミットはE→D→B→Aです。ヘッドポイントアクティブブランチの最新のコミットbranch_A、つまり、Cをコミットします。コミットを追加すると、アクティブブランチに追加されます。コミットした後、branch_AはFを指し、ブランチはF→C→B→Aに続きますが、branch_Bは同じままです。ヘッドは今ではfをコミットすることを指します。繰り返しますが、別のコミットを追加すると、図に変更が示されます。 branch_A branch_Abranch_BAdvanced Branch:マージブランチ

前述のように、GITの最大の利点の1つは、ブランチをマージするのが特に簡単であることです。それでは、それがどのように行われているか見てみましょう。

2つの新しいブランチを作成します(

new_feature) - 仮想コミットを追加します。各ブランチの履歴をチェックすると、another_featureブランチが次のように1つのコミットメントをリードしていることがわかります。 another_feature

Jump Start Git: Branching in Git この状況は、下の図に示すことができます。各円はコミットを表し、ブランチ名は頭を指します(枝の上部)。

Jump Start Git: Branching in Git

をメインブランチとマージするには、次のコマンドを実行します(最初にメインブランチがアクティブであることを確認してください):new_feature

<code>git branch</code>
結果は、下の図に示すことができます:

Jump Start Git: Branching in Git

another_featureとマージするには、次のコマンドを実行するだけです(new_featureブランチがアクティブであることを確認してください):new_feature

<code>git branch -a</code>
結果は、下の図に示すことができます:

Jump Start Git: Branching in Git

重要なヒント:サイクルに注意を払ってください

上記の画像は、このマージが、ワークフローがそれぞれ分岐して収束するプロジェクト履歴に2つのコミットにわたってループを作成することを示しています。このようなループは、単独でまたは小さなチームで作業するときに問題ではないかもしれません。ただし、より大きなチームでは、メインブランチから逸脱して以来、多くのコミットがあるかもしれませんが、この大きなループにより、歴史をナビゲートして変化を理解することが困難になります。第6章でループを作成せずに、Rebaseコマンドを使用してブランチをマージする方法を検討します。

Jump Start Git: Branching in Git

このマージには「競合」はありません。その理由は簡単で、

ブランチと比較してanother_featureブランチに新しいコミットは追加されません。 GITの競合は、同じファイルの同じ部分が両方のブランチの非公開コミットで変更された場合に発生します。 GITは競合を投げて、データを失わないようにします。 new_feature

次の章では、紛争について詳しく説明します。前述したように、枝は単純なコミットパスで視覚化できます。枝をマージし、競合がない場合、上記のように、ブランチパスのみが変化し、枝の頭が更新されます。これは、Fast Forward Type Mergeと呼ばれます。

ブランチをマージする別の方法は、マージコマンドの後に

を追加することにより、非高速なフォワードマージです。このようにして、別のブランチからの変更を加えて、基礎となるブランチに新しいコミットが作成されます。また、送信メッセージを指定する必要があります:--no-ff

<code>git branch</code>
上記の例では、前者(メインブランチとのマージ

)は早送りのマージであり、後者はマージのコミットとの非高速なマージです。 new_feature

Fast Forwardスタイルの合併はデフォルトですが、通常、メインブランチとマージされたマージに非高速フォワードメソッドを使用することが最適です。長期的には、新機能の責任者のコード部分を論理的に単一のコミットに分離するため、新しい機能をマージする新しいコミットを特定することが有益である可能性があります。

結論

何を学びましたか? この章では、枝が何であり、GITでそれらを管理する方法について説明します。ブランチの作成、変更、削除、およびマージを検討しました。

次は何ですか?

私は、Gitがチームと協力する開発者にとってどのように良いかについてすでに話しています。これについては、次の章と、分散チームでよく使用される特定のGIT操作とコマンドについて詳しく説明します。

gitブランチに関するFAQ

gitブランチの主な目的は何ですか?

  • gitブランチは、開発者が個別の開発ラインを作成できる強力な機能です。これは、メインプロジェクトから作業を分離できるため、新しい機能や修正を扱うときに特に役立ちます。機能または修正が完了してテストされた後、メインプロジェクトに融合することができます。これにより、メインプロジェクトが安定したままであり、複数の開発者が互いに干渉することなく異なる機能を同時に処理できるようになります。

gitで新しいブランチを作成する方法は?

  • Gitで新しいブランチを作成するのは簡単です。 コマンドを使用して、新しいブランチの名前を使用できます。たとえば、
  • は「new_feature」という新しいブランチを作成します。このブランチに切り替えるには、次のように
コマンドを使用できます。

<code>git branch</code> git branch new_featuregit checkoutgitでブランチをマージする方法は? git checkout new_feature

  • コマンドを使用してGITの分岐をマージします。マージする前に、マージしたいブランチにいる必要があります。たとえば、「new_feature」という名前のブランチを「マスター」ブランチにマージする場合は、まずを使用してメインブランチに切り替えてから、
  • コマンドを使用する必要があります。

git mergegit checkout mastergitブランチポインターとは何ですか?それはどのように機能しますか? git merge new_feature

  • gitブランチポインターは、指し示すsha1ハッシュのコミットを含むファイルです。新しいブランチを作成すると、Gitは新しいポインターを作成し、新しいコミットを行うたびに移動します。これにより、Gitはプロジェクトの履歴を追跡できます。
    • gitでブランチを削除する方法は?

    git branch -dコマンドを使用してGITのブランチを削除し、その後のブランチの名前を使用します。たとえば、git branch -d old_featureは「old_feature」という名前のブランチを削除します。ただし、ブランチに別のブランチに統合されていないコミットがある場合、Gitはブランチの削除を妨げます。削除を強制するには、-Dオプションを使用できます。

    • Fast Forwardの合併とGITの三者合併の違いは何ですか?
    現在の分岐の先端からターゲットブランチへの線形パスがある場合、

    gitの早送りマージが可能です。新しいコミットを作成する代わりに、Gitは現在のブランチポインターをターゲットブランチまで移動します。一方、線形パスがない場合、三者マージが使用されます。 GITは、2つの親との新しいコミットを作成し、2つのブランチを効果的に接続します。

    • gitリポジトリ内のすべてのブランチを表示する方法は?

    パラメーターなしで<code>git branch</code>コマンドを使用して、GITリポジトリ内のすべてのブランチを表示できます。これにより、すべてのローカルブランチがリストされます。リモートブランチも表示する場合は、次のように-aオプションを使用できます。 <code>git branch -a</code>

    • gitでブランチの名前を変更する方法は?

    コマンドを使用してGitのブランチを変更し、その後古い名前と新しい名前を変更します。たとえば、git branch -mは、branch "old_name"に「new_name」に名前を変更します。 git branch -m old_name new_name

    • gitの分離ヘッドとは何ですか?それを避ける方法は?
    gitのdisased headは、ブランチの代わりにコミットをチェックアウトすると発生します。これは危険な場合があります。なぜなら、別の支店にチェックアウトすると、変更する変更は失われるためです。これを避けるために、コミットする代わりに常にブランチをチェックしてください。

    • gitで枝をマージするときに競合を解決する方法は?
    gitで分岐をマージすると、同じファイルの同じ部分が両方のブランチで変更されている場合、競合が発生する可能性があります。 gitはファイルを「マージド」としてマークします。競合を手動で解決する必要があります。これをテキストエディターで開き、競合マーク(

    )を見つけ、どの変更を維持するかを決定することでこれを行うことができます。すべての競合が解決された後、<<<<<<<を使用してファイルを追加してgit addを使用して送信できます。 git commit

以上がジャンプ開始git:gitで分岐しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。