Git, объединяющий их шаги - PullRequest
25 голосов
/ 15 апреля 2011

Я имею дело с довольно большим количеством двоичных файлов, сгенерированных программой. Авто слияние не работает хорошо для этих файлов. То, что я хотел бы сделать при слиянии, это буквально взять одну копию или другую. Это не идеально, но я думаю, что это лучший подход.

Теперь я понимаю, что если я хочу взять файл из ветви, из которой я сливаюсь, и полностью отказаться от нашей версии, я должен сделать:

git merge <branchname>
git checkout --theirs <filename>
git add <filename>
git commit

Это правильно, или я что-то упустил?

Я бы хотел сделать это без использования .gitignore

Ответы [ 2 ]

32 голосов
/ 15 апреля 2011

Если ваша цель - сохранить одну или другую версию, тогда да, вы захотите использовать:

git checkout <--theirs|--ours> <path>
git add <path>

Конечно, как вы говорите, это не идеально. Если есть какой-то способ избежать этого, вы должны. Если вы можете, попробуйте принять привычки рабочего процесса, чтобы избежать изменения этих файлов в расходящихся ветвях, которые впоследствии необходимо будет объединить. Если файлы создаются из отслеживаемого содержимого, вы, вероятно, действительно хотите игнорировать их - если у вас есть для этого веские основания, вы можете вместо этого сгенерировать их из объединяемого отслеживаемого содержимого, если это возможно.

Итак, изучите все другие варианты, прежде чем делать это, но если вам нужно, вы все правильно поняли.

2 голосов
/ 15 апреля 2011

Изучите использование .gitignore для игнорирования сгенерированных файлов. Возможно, вам также придется выполнить git rm.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...