GITはブランチを使用して開発ストリームを分離し、安定した放出分岐が汚染されるのを防ぎます。 メインストリームに枝で作業をもたらすことは、枝をマージすることを意味します。 これがあなたのやり方です。
Gitのマージとは何ですか?
Gitでブランチをマージする準備
マージを実行します
Gitで早送りマージを実行します
GITのマージ競合を解決する方法
すべてが最終的にマージされます
Gitのマージとは何ですか?
Gitは、分岐をシンプルで高速にするように設計されています。 他のバージョン制御システムとは対照的に、Gitに分岐することは些細な問題です。 特にマルチ開発プロジェクトでは、BranchingはGitのコア組織ツールの1つです。
Branchs Sandbox New Development Evestionsを使用すると、他のブランチ、特にメインブランチまたはマスターブランチのコードに影響を与えることなく、コードを変更または追加できます。 これには通常、コードベースの安定したバージョンが含まれています。
安定したコードバージョンからこれらの変更を分離することは完全に理にかなっています。 しかし、遅かれ早かれ、新しいコードがテスト、レビュー、ゴムスタンプがマスターブランチに巻き込まれます。 その時点で、ブランチをマスターブランチに統合する必要があります。
実際、支店にはサブブランチがある可能性があるため、マスターブランチの代わりにブランチを他のブランチに統合することができます。 マージは常に1つのブランチを取ることを覚えておいてください 目標 ブランチ、そのブランチが何であれ。 マスターブランチを別のブランチにマージしたい場合は、それも行うことさえできます。
GITでのほとんどのアクションと同様に、ローカルリポジトリでマージを実行し、リモートリポジトリにプッシュします。
Gitでブランチをマージする準備
ローカルGITリポジトリとリモートGitリポジトリを備えた小さな開発プロジェクトがあります。 「マスター」ブランチから「bugfix14」というブランチを作成し、バグの解決策に取り組みました。
その作業は完了し、コードをテストしました。 それはすべて予想通りに機能します。 これらの変更をマスターブランチに巻き込んで、修正がソフトウェアの次のリリースの一部になるようにしたいと考えています。
マージを実行する前に、少しの準備が必要です。 ターゲットブランチ(この場合は、マスター」ブランチであることを確認する必要があります。
- Branch Bugfix14で :これは現在のブランチです。
- あなたのブランチは「Origin/Bugfix」で最新です :ローカルリポジトリのブランチには、リモートリポジトリのブランチと同じコミット履歴があります。 つまり、それらは同じです。
- コミットするものは何もありません ステージング領域に、コミットされていない変更はありません。
- ワーキングツリークリーン :ワーキングディレクトリに舞台に変更されていない変更はありません。
それらはすべて、ブランチが最新であることを示しており、私たちは先に進むことを明確にしています。 これらのいずれかが変更が存在することを示した場合、それらをステージングし、コミットし、リモコンにプッシュする必要があります。 他の誰かがこれらのファイルに取り組んでいた場合、リモートリポジトリから変更を引き出す必要があるかもしれません。
ブランチをチェックアウトすると、マージするためにマージすると、マージプロセスが簡素化されます。 また、最新であることを確認することもできます。 マスターブランチを見てみましょう。
「マスター」ブランチが最新であることを確認します。
関連している: gitワークフロー&の選択方法 チームに適した分岐モデル
マージを実行します
「bugfix14」ブランチは、「マスター」ブランチから分岐していました。 「bugfix14」ブランチが作成された後、「マスター」ブランチへのコミットがありました。 「bugfix14」ブランチにはいくつかのコミットがありました。
2つのブランチが最新であることを確認し、「マスター」ブランチをチェックアウトしました。 「bugfix14」ブランチを「マスター」ブランチにマージするコマンドを発行できます。
マージが行われます。 「bugfix14」ブランチはまだ存在しますが、今ではそのブランチで行われた変更は「マスター」ブランチに統合されています。
この場合、マージコマンドはaを実行します 三方マージ 。 2つのブランチしかありませんが、3つのコミットが関与しています。 彼らはいずれかの支店の長であり、マージアクション自体を表す3番目のコミットです。
リモートリポジトリを更新するには、 Git Push 指図。
一部の人々は、統合された後に側面を削除することを好みます。 他の人たちは、プロジェクトの真の開発史の記録としてそれらを保存するように注意します。
ブランチを削除する場合は、
gitブランチ
でコマンド
-d
(削除)オプション。
に ブランチを削除します リモートリポジトリでは、このコマンドを使用します。
線形コミット履歴がありますが、それは本当の歴史ではありません。
関連している: ローカルおよびリモートリポジトリでgitブランチを削除する方法
Gitで早送りマージを実行します
「マスター」ブランチにコミットしていない場合、あなたの歴史はこのようになります。 もしそうなら、これも見えます リベース 開発ブランチが「マスター」ブランチの端に接続されるようにします。
「マスター」ブランチには「bugfix15」ブランチをマージするためにコミットがないため、gitがしなければならないことは、「bugfix15」ブランチの最後のコミットに対する「マスター」ヘッドポインターを指します。
Gitは、早速マージを実行します できる限り 。 「マスター」ブランチにコミットすると、早速のマージが不可能であることを意味する場合、gitは 三方マージ 。
できません
力
早送りの合併 - 結局は不可能かもしれません - しかし、あなたはそれが早送りのマージであるか、何もないことを宣言することができます。 GITに、可能であれば、ファーストフォワードマージを使用するように指示するオプションがありますが、できない場合は3方向マージを行いません。 オプションはです
-ffのみ
(ファーストフォワードマージのみ)。
これにより、「bugfix15」ブランチが「マスター」ブランチにマージされますが、それは早送りマージが可能な場合にのみです。
この場合、「マスター」ブランチにコミットがあったため、早送りのマージは不可能です。
GITのマージ競合を解決する方法
両方のブランチで同じファイルの同じ部分が変更されている場合、ブランチをマージすることはできません。 競合する編集を解決するには、人間の相互作用が必要です。
ここでは、「bugfix17」と呼ばれるブランチの「rot.c」と呼ばれるファイルに変更を加えました。 しかし、「rot.c」は「マスター」ブランチでも変更されています。
私たちがそれをマージしようとするとき、私たちは競合があるという警告を受けます。 gitは競合するファイルをリストし、マージが失敗したことを示します。 を使用して完全にバックアウトできます
- アボート
オプション:
しかし、マージを解決することは、見た目ほど怖くはありません。 Gitは私たちを助けるためにいくつかの仕事をしました。 競合するファイルの1つを編集した場合(場合は1つしかありません)、競合するコードセクションが強調表示されています。
それぞれの紛争は、7人のキャラクターよりも少ないキャラクターに制限されています。
<<<<<<<
」そして7人以上のキャラクター」
>>>>>>>
「7つの標識に等しい」
=======
" それらの間の。
- 等しい標識の上のコードは、合併しているブランチからのものです の中へ 。
- Equalsサインの下のコードは、あなたがしようとしているブランチのコードです マージ 。
7文字のセットの1つを簡単に検索し、ファイルを介して競合から競合に移動できます。 競合ごとに、保持する編集のセットを選択する必要があります。 拒否しているコードと、Gitが追加した7文字のラインを編集する必要があります。
「bugfix17」ブランチからコードを保持します。 編集後、ファイルは次のようになります。
これで、マージを続けることができます。 しかし、注意してください
専念
そうするためにそうするコマンドではなく
マージ
指図。
ファイルをステージングし、いつものようにコミットすることにより、変更をコミットします。 最終的なコミットを行う前に、ステータスを確認します。
マージが完了しました。 これをリモートリポジトリにプッシュできます。
関連している: Git Commitsを修正、編集、または元に戻す方法(Git履歴の変化)
すべてが最終的にマージされます
最終的には、すべての枝をマージする必要があります。そうすれば、それらの変化が孤児になり、忘れられないようにします。
ブランチのマージは簡単ですが、忙しくて大規模なチームで紛争に対処することは複雑になる可能性があります。 競合を解決するには、コードが何をするか、なぜ変更を加えたのかを説明するために、各開発者からの入力が必要になる場合があります。 どの編集を保持するかについて情報に基づいた決定を下す前に、それを理解する必要があります。
- › Gitでブランチの名前を変更する方法
- › リモートGitブランチをチェックアウトする方法
- › Gitに変更をかける方法
- › GitHubの枝を切り替える方法
- › Git Rebase:あなたが知る必要があるすべて
- › OnePlus 11はここにありますが、大まかなスタートがあります
- › Microsoft EdgeはAIチャットとWindowsの新しい外観を取得しています
- › iPhoneファンのための最高のイヤホンは、最低価格に達しました