7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Git 初心者向け】 バイナリファイルがコンフリクトした場合の対処法

Posted at

Git初心者あるある

誰もが最初に苦戦するコンフリクトの話です。
テキストファイルは無理矢理直すことができると思いますが、バイナリファイルがコンフリクトすると一気解消できなくなる人が急増する印象です。

今回はそのバイナリファイルのコンフリクト解消を比較的工数少なく行うことができる方法を紹介します。

例: masterブランチと開発ブランチがコンフリクトしてプルリクエストでマージできない

1. 開発ブランチにmasterブランチを取り込む

$ git pull --rebase origin master

2. どのファイルがコンフリクトしているか確かめる

$ git status

3. コンフリクトしていたファイルをmasterブランチ側に寄せる

$ git restore --ours <コンフリクトしているバイナリファイル>

4. コンフリクトしていたファイルを開き、自身が追加したい差分を追加・編集する

  • ファイルを開いたら、masterのファイルと同じ状態のものが表示されるはずです。

5. コンフリクトしていたファイルをステージングに上げる

$ git add <コンフリクトしていたバイナリファイル>

6. ステータスを確認し、全てのファイルがステージングに上がっているか確認する

$ git status

7. リベースを続ける(コンフリクト解消完了)

$ git rebase --continue

8. プッシュする(強制)

$ git push --force-with-lease origin <ブランチ名>

注意

  • 開発ブランチに複数の開発コミットがありrebaseでコンフリクトした場合、複数回コンフリクト解消しなければいけないときがあります。事前に開発コミットをまとめてからコンフリクト解消することをおすすめします。

  • バイナリファイルのコンフリクトは一旦どちらかに寄せなければいけないので、修正した差分を忘れてしまいそうな場合はGit管理外のフォルダーにバックアップを取っておくことをおすすめします。

まとめ

  • Gitの操作で時間を無駄にしてしまうのは勿体無いので、効率の良い方法を覚えて素早く開発していきましょう!
7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?