Подтвердить что ты не робот

Сообщение об ошибке Git Visual Studio 2015 "Не удается вытащить/переключиться, потому что есть незафиксированные изменения"

Я испытываю затруднения в выполнении тяги от origin. Я продолжаю получать:

"Невозможно вытащить, потому что есть незафиксированные изменения. Зафиксируйте или отмените ваши изменения, прежде чем вытащить снова. Подробности смотрите в окне" Вывод "."

Это также относится к переключению ветвей. Я получаю подобные сообщения, но это не всегда происходит.

Я использую Visual Studio 2015 Update 1 и Visual Studio Team Services Git. На моей машине у меня есть локальная ветка master и ветки разработки. Каждый раз, когда я переключаюсь на master а затем делаю тягу, я получаю сообщение об ошибке. Я прибег к выполнению stash and drop stash (командная строка), и иногда я использую TortoiseGit, чтобы сделать тягу, и это работает.

Что странно, даже если я пытаюсь вернуться (к незафиксированным файлам) с помощью TortoiseGit, он показывает, что он был успешно восстановлен (я уже пытался отменить Visual Studio, ничего не происходит). Пытаясь снова вытащить, это все та же проблема. Там будут незафиксированные файлы, и иногда, когда я делаю git status он говорит, что нечего коммитить.

Просто примечание: это может произойти даже после переключения с ветки на master. В этом случае не может быть никаких незафиксированных изменений, потому что я не смог бы переключиться в первую очередь.

Я все еще новичок в Git, но я хотел бы знать, есть ли лучший способ решения этой проблемы, поскольку я хотел бы использовать одну среду вместо переключения между различными средами для каждой задачи; мне проще все делать из Visual Studio. Я уже прочитал:

TFS/GIT в VS Невозможно переключиться на master, потому что есть незафиксированные изменения

ОБНОВИТЬ

Кажется, эта проблема связана с окончанием строки.

git diff -R вы увидите, что добавлено окончание строки, "^ M", и оно отличается. Удаление * text=auto в gitattributes (затем проверка на изменения) и его повторное включение, чтобы gitattributes не сигнализировало об изменении самого себя, которое должно быть зафиксировано, похоже, поможет, никаких изменений не будет.

4b9b3361

Ответ 1

Для меня у меня не было никаких незафиксированных изменений или каких-либо неотслеживаемых файлов, и Visual Studio 2015 все еще представлял предупреждение.

  1. Закройте решение в Visual Studio, выйдите из Visual Studio.
  2. Откройте Git Bash (или ваш любимый пользовательский интерфейс Git)
  3. Перейдите в свой репозиторий (или откройте репозиторий с помощью интерфейса Git)
  4. git pull (или выполнить pull на Git UI)
  5. Происходит слияние (надеюсь, никаких конфликтов, как в моем случае), открывается vi (или инструмент разрешения слияния по умолчанию)
  6. :wq затем нажмите ENTER в vi (или спокойно обработайте инструмент слияния, который может появиться по желанию), и, надеюсь, это разрешит его, как и я.
  7. Запустите Visual Studio 2015, откройте проект

Я добавил более безопасный шаг за шагом, дав инструкции по закрытию и открытию решения и Visual Studio. Это может быть слишком осторожно, и, возможно, перезагрузки будет достаточно. Этот признак может быть ошибкой в части интеграции с Visual Studio Git, и, возможно, он будет устранен в будущем.

Ответ 2

Введите git status в командную строку, открытую в этом каталоге. Если есть красный и/или зеленый текст, вы изменили некоторые вещи и не добавили и не зафиксировали. Либо верните файлы (выполнив git checkout -- <file>), либо добавьте и зафиксируйте (выполнив git add --all, затем git commit -m "commit message"). Затем вы можете проверить ветки или что-то еще, что вы хотите сделать.

Ответ 3

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

git add -A
git commit -m "your message"
git fetch origin master
git pull origin master
git push origin master //To push to the Git system

Ответ 4

Эта проблема обычно возникает, когда существует файл/изменение, которое не было зафиксировано локально, но включено в действие извлечения.

Например, вы добавляете новый файл "test.txt" непосредственно из локальной папки Git-репозитория (за пределами Visual Studio). Этот файл может быть указан в параметре "Файлы без отслеживания", поэтому при фиксации изменений этот файл не отслеживается и не фиксируется. А затем другой человек также создает "test.txt" с тем же путем и фиксирует и проталкивает его. Теперь, когда вы выполняете действие извлечения, файл "test.txt" включается в действие извлечения, и вы получите сообщение об ошибке, которое указывает на наличие незафиксированных изменений. Поэтому вам нужно проверить, есть ли у вас файлы/изменения, которые не были зафиксированы, и зафиксировать их перед извлечением.

Ответ 5

У меня была эта проблема в Visual Studio 2017, сборка 15.5, и что для меня исправило, так это перейти в "Настройки Team Explorer" → "Глобальные настройки" и установить "Сократить удаленные ветки во время выборки" и "Перебазировать локальные ветки при извлечении" в значение " Истина".

Team Explorer Git Settings

http://www.codewrecks.com/blog/index.php/2017/12/23/configure-visual-studio-2017-15-5-for-pull-rebase/

Также MS имеет инструкции здесь: https://docs.microsoft.com/en-us/azure/devops/repos/git/git-config?tabs=visual-studio&view=vsts#prune-remote-branches-during-fetch Лицом к лицу является момент, когда вы понимаете, что "Мы рекомендуем установить для этой опции значение True на глобальном уровне". не является настройкой по умолчанию для этих элементов.

Другой случай этой проблемы возникает в случае, когда у вас есть отдельный сервер сборки, и решение получает частые обновления NuGet на компиляторах. Первый, кто обновит пакеты NuGet и синхронизирует репозиторий, не будет иметь проблем, но если кто-то попытается обновить его локально, перед выполнением синхронизации появится это сообщение, и VS не позволит вам извлечь или отправить код. Чтобы предотвратить эту проблему, каждый должен привыкнуть к синхронизации, прежде чем делать какие-либо обновления локально. После того, как мы столкнулись с этим, лучший способ решить эту проблему - спрятать любой незафиксированный код, который нужно сохранить (https://marketplace.visualstudio.com/items?itemName=vii.GitStashExtension), а затем сбросить репозиторий до текущей главы.,

Ответ 6

Это случается иногда даже со мной. Если вы используете Visual Studio, есть простой способ прояснить ваш путь.

Для Visual Studio 2013 и выше, следуйте следующим инструкциям, так как это работает для меня:

  • Перейдите в меню ИнструментыДиспетчер пакетов NuGetКонсоль диспетчера пакетов.
  • Наберите git reset и нажмите Enter

Это. Git будет сброшен, и тогда вы сможете легко получить ваш запрос.

VS2015: Инструменты> Диспетчер пакетов Nuget> Консоль диспетчера пакетов. Работал как шарм. Благодарю.

Ответ 7

У меня тоже была эта пробема. Простое решение состояло в том, что я выбрал Commit для решения, чтобы увидеть незафиксированные файлы (или легко использовал Team Explorer → Changes).

Затем я отменяю каждый файл, используя правую кнопку мыши. Раньше я тестировал его Undo на всем решении, но оно не работало должным образом. Затем я снова использовал Team Explorer → Sync → Pull, и это сработало.

Ответ 8

Это сработало для меня. Я просто пошел в каталог проекта и проверил, если что-то есть

git status

Затем я выполнил тягу с помощью

git pull

Затем я перезапустил Visual Studio 2015 и вытащил ветку, которая вызывала эту ошибку. На этот раз без проблем. Похоже, что это была ошибка в Visual Studio 2015. Она возникает только тогда, когда вы отменяете свои изменения перед извлечением новых изменений. Эта же проблема, похоже, не существует в Visual Studio 2017.

Ответ 9

Вот шаги, которые я выполнил:

  1. Обратитесь к пути незафиксированного файла в окне вывода
  2. Перейдите по этому пути и удалите этот файл из папки
  3. Отмените изменения из Team Explorer в Visual Studio, чтобы добавить их снова

Ответ 10

Для меня "Update" в вопросе был ответом. Я добавил файл .gitattributes в корень моего репозитория и включил только следующее, так что окончание строк будет нормализовано только в тех случаях, когда файл является текстом.

*.txt text
*.html text
*.css text
*.js text
# These files are text and should be normalized (Convert crlf => lf)
*.gitattributes text
.gitignore text
*.md texttesting 

Ответ 11

Для меня эта проблема была вызвана наличием двух файлов, "Web.Config" и "web.config". Я думаю, что это нормально в Linux/Unix, но Windows может хранить только один из них локально. Я обнаружил это в лазурных девопах, исследующих файлы. Я удалил один из них, и проблема была решена. Я думаю, что эта проблема может быть вызвана любым файлом.

Ответ 12

В Visual Studio откройте Output Window и переключите " Show output from в " Source Control - git, git сообщит вам о том, что останавливает его. Конечно, одной из самых распространенных причин может быть что-то вроде этого:

The pull would overwrite your local changes to the following 44 files:
    <Here you can probably see a list of 44 files>

Это просто означает, что 44 файла были добавлены в remote репозиторий, которые не являются частью local репозитория. Откройте Git Bash и выполните эту команду:

git add *

Это может решить проблему или привести к ошибке, подобной этой:

$ git add *
The following paths are ignored by one of your .gitignore files:
TestResults
Use -f if you really want to add them.

Если вы уверены, что добавляете их в local хранилище, просто добавьте их с помощью git add * -f или удалите ошибочно добавленные файлы с remote.

Надеюсь это поможет.