Другой вопрос был назван дубликатом этого:
В C ++ почему результат cout << x
отличается от значения, которое показывает отладчик для x
?
x
в вопросе - это переменная float
.
Одним из примеров может быть
float x = 9.9F;
Отладчик показывает 9.89999962
, вывод работы cout
- 9.9
.
Ответ оказывается, что точность cout
по умолчанию для float
равна 6, поэтому она округляется до шести десятичных цифры
См. здесь для справки
Единственный способ понять эту возможную ситуацию - создать два разных файла, каждый из которых имеет одинаковое имя файла, в независимых ветвях.
i.e. предположим, что ветви master
и dev
уже существуют.
file.txt
до master
dev
, затем снова создайте и зафиксируйте file.txt
до dev
. Теперь, поскольку вы создали два разных файла, git рассматривает их как два отдельных объекта, несмотря на одно и то же имя файла, что лишает его цели. file.txt
из dev
dev
в master
, а low и behold file.txt
все еще существуют в master
, и это имеет смысл, потому что, как я уже сказал, git рассматривает два файла как полностью независимые. обратите внимание, что если вы не удалили file.txt
из dev
и попытались слить, тогда вы получили конфликт слияния, потому что git не знал, как обрабатывать два разных объекта с помощью тот же путь / имя файла.
Если это ваш сценарий, то я буду рисковать высокомерием и сказать, что вы делаете это неправильно;)
Точка контроля версий система должна позволить инструменту управлять вашими различиями между файлом на разных этапах времени, а также соотношением этих изменений с другими файлами в репозитории.
Мое предложение улучшить рабочий процесс в этой ситуации было бы для проверки конкретного файла из другой ветки:
file.txt
в master
dev
, а затем просто захватить конкретный файл из другая ветвь git checkout master -- file.txt
В этой ситуации вы все равно будете находиться на ветке dev
, но теперь добавили file.txt
из ветви master
. dev
dev
в master
теперь удалит file.txt
с master
У меня была та же проблема. В моем случае я думаю, что проблема заключалась в том, что когда я сделал слияние, моя копия ветки слияния была устаревшей по сравнению с удаленной. (коллега сделал удаление, а не меня)
В любом случае, что исправлено, он удаляет всю рабочую копию и клонирует ее заново.
Вы можете запустить слияние без фиксации, убедитесь, что у вас есть все правильные файлы, а затем запустите commit.
git checkout master
git merge --no-commit dev
git rm my-files-to-delete
git commit