Я не совсем уверен, к чему ведет ваш тестовый пример. Похоже, вы убираете gui.bin с пути, а затем возвращаете его таким, каким он был ...
Часто двоичные файлы не нужно объединять, вы просто хотите выбрать окончательную версию из того или иного места. Там, где они действительно должны быть слиты, вам нужен либо специальный инструмент слияния, либо какой-то редактор и множество ручного вмешательства.
Я заметил, что вы используете commit -a
в вашем примере. Один из первых шагов во избежание ненужных конфликтов - не фиксировать двоичные файлы, которые могут случайно коснуться, если вы не захотите их зафиксировать. Если вы просто git add
файлы, которые нужно зафиксировать и зафиксировать без -a
, то это поможет. В качестве альтернативы, если есть только один файл, который вы не хотите фиксировать, вы можете add -u
и сбросить его перед выполнением фиксации.
git add -u
git reset -- dontcommit.dat
git commit
Когда вы выполняете слияние ветвей, в которых оба изменяют двоичный файл, вы можете захотеть сохранить одну версию, а не другую. После слияния, когда git сообщает вам, что в вашем двоичном файле есть конфликты, вы можете указать git использовать версию в ветке, на которой вы работали, следующим образом:
git checkout --ours binary.dat
git add binary.dat
или из ветви, в которую вы объединяетесь следующим образом:
git checkout --theirs binary.dat
git add binary.dat