Можно ли слить в Git, не входя в ветку слияния? - PullRequest
5 голосов
/ 14 апреля 2011

Сегодня я использовал Git, и со мной случилось что-то, с чем я не знал, как справиться.

Я был на ветке development, и я сделал git fetch, чтобы получить новый origin/master. Я хотел слить origin/master в master и в итоге получить обновленный master. Обычно я бы сделал это:

git checkout master
git pull

Но возникла проблема; В настоящее время извлеченная ветвь development содержит .gitignore, который включает в себя множество файлов, которых старый master не имел. Старый master имел эти файлы с контролем версий. Так что Git не разрешил мне оформить заказ master, потому что тогда эти файлы были бы перезаписаны.

Я не знал, что делать, поэтому я просто проверил origin/master.

Если бы был способ объединить origin/master в master без проверки master, я думаю, это спасло бы меня. (И это было ускоренное слияние, так что Merge-Fail не был возможен.)

Что я могу с этим поделать?

Ответы [ 2 ]

5 голосов
/ 14 апреля 2011

Полноценное слияние требует рабочего дерева для разрешения конфликтов.

Если вы знаете, что слияние выполняется быстро, вы можете использовать git update-ref

Пример:

git update-ref -m "Fast-forward merge" refs/heads/master refs/remotes/origin/master

Не делайте просто git update-ref master, так как это создаст "мастера" в .git/ вместо .git/refs/heads/ (refs/remotes/origin/master может быть сокращено до origin/master)

1 голос
/ 14 апреля 2011

В этом случае я обычно удаляю все недавно игнорируемые файлы из рабочего дерева, поэтому checkout больше не будет их перезаписывать.git clean может помочь вам в этом.Вы также можете посмотреть варианты -f или -m checkout, чтобы найти другие способы сделать это.

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