Я проверил различные вопросы на это. Первое обеспечивает огромный вопрос и ответ (релевантный? не уверенный), и второе предоставляет неправильный ответ как лучший ответ.
Мне назвали ответвление great-use-this
. У меня есть другое названное ответвление master
. Я хочу объединиться great-use-this
в ведущее устройство, и стараются не автообъединять конфликты.
Что самый простой и легкий путь состоит в том, чтобы сделать это?
Примечание: Я на самом деле понял это (использование третьего ответвления и ours
, но на этом было бы хорошо иметь ТАК так или иначе.
Да, создание третьей ветки и выполнение 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".Надеюсь, со временем вы станете лучшим программистом, и в конце концов у вас может получиться что-то, чем стоит поделиться с миром, рядом с вершиной вашей мастер-ветки. Однако, когда это произойдет, вы не сможете предложить свою мастер-ветку для вытягивания в апстрим, поскольку широкому миру будут совершенно неинтересны ваши ранние ошибки.
Я сам склоняюсь к опции 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 - лучший вариант, но если у вас есть случай, когда вам действительно нужен их, это должно помочь вам.