& ldquo; git merge & rdquo; не объединять удаление [дублировать]

Другой вопрос был назван дубликатом этого:

В C ++ почему результат cout << x отличается от значения, которое показывает отладчик для x ?

x в вопросе - это переменная float.

Одним из примеров может быть

float x = 9.9F;

Отладчик показывает 9.89999962, вывод работы cout - 9.9.

Ответ оказывается, что точность cout по умолчанию для float равна 6, поэтому она округляется до шести десятичных цифры

См. здесь для справки

3
задан Matthieu Scarset 9 May 2016 в 17:53
поделиться

3 ответа

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

i.e. предположим, что ветви master и dev уже существуют.

  1. создать и зафиксировать file.txt до master
  2. checkout dev, затем снова создайте и зафиксируйте file.txt до dev. Теперь, поскольку вы создали два разных файла, git рассматривает их как два отдельных объекта, несмотря на одно и то же имя файла, что лишает его цели.
  3. позже удалите file.txt из dev
  4. слияние dev в master, а low и behold file.txt все еще существуют в master, и это имеет смысл, потому что, как я уже сказал, git рассматривает два файла как полностью независимые.

обратите внимание, что если вы не удалили file.txt из dev и попытались слить, тогда вы получили конфликт слияния, потому что git не знал, как обрабатывать два разных объекта с помощью тот же путь / имя файла.

Если это ваш сценарий, то я буду рисковать высокомерием и сказать, что вы делаете это неправильно;)

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

Мое предложение улучшить рабочий процесс в этой ситуации было бы для проверки конкретного файла из другой ветки:

  1. создать и зафиксировать file.txt в master
  2. checkout dev, а затем просто захватить конкретный файл из другая ветвь
    git checkout master -- file.txt
    
    В этой ситуации вы все равно будете находиться на ветке dev, но теперь добавили file.txt из ветви master.
  3. теперь git распознает, что это одна и та же сущность , поэтому вы можете удалить файл и зафиксировать удаление в dev
  4. , слияние dev в master теперь удалит file.txt с master
2
ответ дан Jeff Puckett 28 August 2018 в 22:03
поделиться

У меня была та же проблема. В моем случае я думаю, что проблема заключалась в том, что когда я сделал слияние, моя копия ветки слияния была устаревшей по сравнению с удаленной. (коллега сделал удаление, а не меня)

В любом случае, что исправлено, он удаляет всю рабочую копию и клонирует ее заново.

0
ответ дан Stefan Monov 28 August 2018 в 22:03
поделиться

Вы можете запустить слияние без фиксации, убедитесь, что у вас есть все правильные файлы, а затем запустите commit.

  1. Выполните слияние
    git checkout master
    git merge --no-commit dev
    
  2. Внесите необходимые изменения и исправьте конфликты слияния (если есть).
    git rm my-files-to-delete
    
  3. Зафиксируйте слияние, завершив процесс.
    git commit
    
1
ответ дан Strikeskids 28 August 2018 в 22:03
поделиться
Другие вопросы по тегам:

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