この投稿では、お見せします GITのマージ競合を解決する方法 。 GITを使用すると、開発者はメインコードベースからブランチを作成して独立した変更を加えることができます。これらの変更は、既存のコードにマージできます。これにより、チームは他の人がタスクを完了するのを待つことなく並行して作業することができます。
ただし、異なるブランチでコードの同じ部分が変更されている場合、マージ競合が発生する可能性があります。 GITは常にこれらの競合を単独で解決できるとは限りません。そのような場合、手動で介入して修正する必要があります。
GITのマージ競合を解決する方法
いくつかの方法があります GITのマージ競合を解決します 、ワークフロー、ツール、および快適性レベルに応じて。 GITコマンドを使用して端末で直接解決したり、VSコードなどのテキストエディターを使用したり、Github Desktop、Sourcetree、GitkrakenなどのGUIツールに依存したりできます。競合がどのように発生するか、およびGitおよびVisual Studioコード(VSコード)を使用して簡単な例の助けを借りてそれらを解決する方法を理解しましょう。
githubアカウントに移動し、で新しいリポジトリを作成します readme.md ファイル。このリポジトリに名前を付けてみましょう マージconflict-demo 。
次のコミット(メインブランチ)で、 readme.md いくつかのテキストコンテンツをファイルして追加します。変更をコミットします。
注記: リポジトリを作成した後、readme.mdを編集する必要はありません。このステップの目的(ここで)は、メインブランチの変更をシミュレートすることで、同じファイルも変更する異なるブランチをマージするときに競合が発生するようにすることです。
行きます コード>クレイジー lとリポジトリをコピーします https リンク。
ブルーイエティドライバーズウィンドウズ10
次に、ローカルコンピューターにディレクトリを作成します。類を挙げてください TWC_GIT_MERGE_DEMO 。対コードでこのディレクトリを開き、端末を起動します( 3つのドット>ターミナル>新しいターミナル )、および以下を使用してGitHub Repoをクローンします。
git clone https://github.com/sangeetaghera2710/merge-conflict-demo.git
次に、クローン化されたリポジトリに移動し、名前の新しいブランチを作成します feature1 :
0C368C4E795806EFB48D8847775162B95E99B94
readme.mdファイルにいくつかのテキストを追加してから、ステージと変更をコミットします。
techspot safe7550DA6365563CE554CC337721507D3E7C15BEC
この例では、DF82F619B34EE581735E611B6F6F53A444647A034E8の代わりに、981F371F73E9BBA616BE26B26DE4AB6D22E9521AFを使用しました。
git add .
ステージはすべてファイルを変更しますが、DF82F619B34EE581735E611B6F53A444647A034E8ステージのみが指定されたファイルのみです。また、git status
を使用して、作業ディレクトリとステージング領域の現在の状態を表示します。
次に、メインブランチに戻り、名前の別のブランチを作成します 特徴2 :
git checkout main git checkout -b feature2
今すぐ編集します readme.md ファイルですが、別のテキスト行を追加します。繰り返しますが、ステージとコミット:
15120E7E1CBFD6D22B3D0F7605ED54791293A5
次に、メインブランチに戻り、feature1をマージします。
00A447E33C7C787DCAF4EC5ADDA4A32C9A7F7このマージは、競合なしに完了するはずです。
次に、に切り替えます 特徴2 更新されたメインをブランチしてマージします。
86319972F8517A70CF3B467C7FE8AEB0CFF1A66今回は、両方のブランチが同じセクションを変更したため、readme.mdファイルでマージ競合が発生します。
読む : Gitで2つの枝をマージする方法
PC用の脱出ゲーム
マージの競合を解決します
マージの競合が発生すると、GITは影響を受けるファイルに特別なマーカー(<<<<<<、======== >>>>>>>)を追加して、各ブランチの競合するセクションを強調します。これらのマーカーは、競合を識別するのに役立ち、マージを最終化する前に、どのバージョンを保持するか、変更を組み合わせる方法を手動で決定できます。
VSコードで競合ファイル(readme.md)を開きます。上記の画像に示すように、競合マーカーが表示されます。
VSコードは、競合を手動で解決するための4つのオプションを提供します。
- 現在の変更を受け入れる: feature2の変更を保持します2。
- 着信を受け入れる: Main(feature1を含む)から変更を維持します。
- 両方の変更を受け入れる: 両方の変更のセットを保持します。
- 変更の比較: 決定する前に違いを表示します。
クリック 変更を比較します 。 マージの競合中にVSコードの変更をクリックすると、並べて開きます Diffビュー 競合するファイルの。このビューは、現在のブランチの変更(左側)と、合併しているブランチからの着信の変更(右側)を示しています。 これにより、競合を解決する方法を選択する前に、両方のバージョンラインを1行ごとに比較できます。
その後、ファイルを手動で編集したり、電流を受け入れたり、着信を受け入れる、またはそのビューから直接受け入れるなどのオプションのいずれかを使用できます。
競合を解決した後、ファイルを保存します。次に、ステージを上げて変更を犯します。
96F930BCA298263625AE8F4B26A7837D8A1FE37それでおしまい! Visual Studioコードを使用して、Gitマージ競合を正常に解決しました。
これが便利だと思います。
読む: WindowsにGitをダウンロードしてインストールする方法 。
頻繁なフォルダを削除するwindows8
GITでのコミットを元に戻すにはどうすればよいですか?
GITリポジトリでのコミットを戻すには、git revert
コマンドを使用できます。プロジェクト履歴からコミットを削除する代わりに、このコマンドは、コミットによって導入された変更を反転する方法を特定し、結果の逆コンテンツに新しい「コミットを戻す」を追加します。これは、信頼できるコラボレーションとプロジェクトの整合性の両方にとって重要な歴史を維持するのに役立ちます。