Слияние мерзавца-s их: Просто?

Я проверил различные вопросы на это. Первое обеспечивает огромный вопрос и ответ (релевантный? не уверенный), и второе предоставляет неправильный ответ как лучший ответ.

Мне назвали ответвление great-use-this. У меня есть другое названное ответвление master. Я хочу объединиться great-use-this в ведущее устройство, и стараются не автообъединять конфликты.

Что самый простой и легкий путь состоит в том, чтобы сделать это?

Примечание: Я на самом деле понял это (использование третьего ответвления и ours, но на этом было бы хорошо иметь ТАК так или иначе.

20
задан Community 23 May 2017 в 12:10
поделиться

2 ответа

Да, создание третьей ветки и выполнение merge -s ours - это одно из решений.

Но вы найдете здесь все "давайте не будем рекламировать никакую "их" стратегию слияния".

Между заменой вашей работы на одну работу из другой ветки или просто избавлением от текущей работы и заменой её полностью на другую, Junio C. Hamano (главный Git Maintainer) предпочитает второй подход:

Я думаю, что "-s theirs" ещё хуже. Так вы отбрасываете то, что сделали (возможно, потому что у другой стороны есть решение гораздо лучше, чем ваш хак), но это можно сделать гораздо проще и чище:

$ git reset --hard origin/master

Некоторые люди могут сказать: "Но с помощью 'merge -s theirs" я могу сохранить то, что сделал, тоже". Этот сброс просто отбрасывает то, что я сделал.

Эта логика также ошибочна. Вместо этого вы можете:

$ git branch i-was-stupid 
$ git reset --hard origin/master

если вы действительно хотите сохранить запись о своей неудаче.

Одна большая проблема "-s theirs" по сравнению с вышеуказанным "reset to origin, discarding or setting aside the failed history" заключается в том, что ваша история "мастера", на которой основывается ваше дальнейшее развитие, будет хранить ваше неудачное дерьмо в ней вечно, если вы сделали "-s theirs".

Надеюсь, со временем вы станете лучшим программистом, и в конце концов у вас может получиться что-то, чем стоит поделиться с миром, рядом с вершиной вашей мастер-ветки. Однако, когда это произойдет, вы не сможете предложить свою мастер-ветку для вытягивания в апстрим, поскольку широкому миру будут совершенно неинтересны ваши ранние ошибки.

25
ответ дан 30 November 2019 в 00:13
поделиться

Я сам склоняюсь к опции git reset --hard BRANCHNAME , но обнаружил, что в Git (v. 1.7. Как минимум 1).

Если вы хотите попробовать, просто добавьте аргумент «-Xtheirs» к команде слияния.

Например, запуск в мастере:

git checkout -b editBranch
- редактировать свои файлы -
git add.
git commit -m "Обновил файлы"
мастер проверки git
git merge -Xtheirs editBranch

Если вы удалили какие-либо файлы в editBranch, вы получите конфликт слияния, который можно разрешить с помощью git rm FILENAME .

И снова кажется вероятным, что сброс --hard BRANCHNAME - лучший вариант, но если у вас есть случай, когда вам действительно нужен их, это должно помочь вам.

2
ответ дан 30 November 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: