Git マージで theirs を使用する
Git ツールを使用してソフトウェアを開発しているときに、機能ごとに異なるブランチを作成できます。ただし、異なるブランチ間で競合が発生する可能性があります。
この記事では、git merge
コマンドを theirs
オプションとともに使用して競合を解決する方法について説明します。
Git の theirs
で git 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 has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.
LinkedIn