Git マージで theirs を使用する

Yahya Irmak 2023年1月30日
  1. Git の theirsgit merge コマンドを使用する
  2. --strategy-option を使用して Git の競合を解決する
  3. 一時的なブランチを使用して Git にマージする
Git マージで theirs を使用する

Git ツールを使用してソフトウェアを開発しているときに、機能ごとに異なるブランチを作成できます。ただし、異なるブランチ間で競合が発生する可能性があります。

この記事では、git merge コマンドを theirs オプションとともに使用して競合を解決する方法について説明します。

Git の theirsgit merge コマンドを使用する

git merge コマンドは、2つ以上の開発履歴を組み合わせることができます。ただし、ブランチ間の競合が原因で、このマージを実行できない場合があります。

この競合を解決するには、ours または theirs のファイルを破棄する必要があります。

ours は Git 履歴の権限を持つ元の作業ブランチを指し、theirs は新しく適用されたコミットを含むブランチを指します。

git merge -s ours を使用して、ours の変更を破棄できます。このコマンドは、他のブランチからのすべての変更を破棄し、ブランチ上のファイルを変更せずに残します。

次に他のブランチからマージするとき、Git はこの時点以降に行われた変更のみを考慮します。ただし、-s オプションは theirs では使用できません。

--strategy-option を使用して Git の競合を解決する

または、-X または --strategy-option オプションで theirs を使用することもできます。

-X オプションと -s オプションの主な違いは、-X が通常の再帰的マージを実行し、選択した側を使用して競合を解決するのに対し、-s はマージを変更して反対側を完全に無視することです。

次のコマンドは、theirs を使用して競合を解決します。

git merge -X theirs branchname

一時的なブランチを使用して Git にマージする

以下のコマンドを使用して、test2 をチェックアウトされた test1 にマージします。

test1 ブランチに切り替えます。

git checkout test1

競合することなくコミットをマージします。ours の内容は後で破棄されます。

git merge -s ours test2

一時的なブランチを作成します。

git branch temp

git reset コマンドで HEAD を設定します。test2 ブランチからコンテンツを取得します。

git reset --hard test2

マージされたコミットにリセットしますが、git reset --soft コマンドで内容を保持します。

git reset --soft temp

マージされたコミットの内容を test2 の内容に変更します。

git commit --amend

以前に作成した一時ブランチを削除します。

git branch -D temp

マージされたコミットには、test2 の内容のみが含まれていることがわかります。

git diff HEAD test2
著者: Yahya Irmak
Yahya Irmak avatar Yahya Irmak avatar

Yahya Irmak has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.

LinkedIn

関連記事 - Git Merge