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

Ошибка при изменении ведущей ветки: мои локальные изменения будут перезаписаны с помощью checkout

Этот вопрос похож на на этот, но более конкретный.

У меня есть проект с двумя ветвями (staging и beta).

Я разрабатываю на staging и использую ветку master для исправления ошибок. Поэтому, если я работаю над созданием и вижу ошибку, я перехожу к ветки master:

git checkout master

и сделайте следующее:

git add fileToAdd
git commit -m "bug fixed"

а затем я объединяюсь с двумя ветвями:

git checkout staging
git merge master
git checkout beta
git merge beta

И не имеет значения, есть ли другие файлы на рабочем дереве.

Но теперь, , когда я пытаюсь перейти на ветвь master, я получаю сообщение об ошибке:

error: Your local changes to the following files would be overwritten by checkout:
src/Pro/ConvocationBundle/Controller/DefaultController.php
Please, commit your changes or stash them before you can switch branches.
Aborting

Я думал, что должен удалить файл из промежуточной области:

git reset HEAD src/Pro/ConvocationBundle/Controller/DefaultController.php

но я получаю ту же ошибку. Если я делаю git status, я получаю No changes to commit

4b9b3361

Ответ 1

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

Ваши параметры, как я вижу, - commit, а затем внести изменения в это коммит с дополнительными изменениями (вы можете изменить фиксацию в git, если они не push ed); или - используйте тайник:

git stash save your-file-name
git checkout master
# do whatever you had to do with master
git checkout staging
git stash pop

git stash save создаст stash, который содержит ваши изменения, но не связан ни с какой фиксацией или даже с веткой. git stash pop будет применять последнюю регистрационную запись к вашей текущей ветке, восстанавливая сохраненные изменения и удаляя ее из stash.

Ответ 2

Я столкнулся с той же проблемой и решил ее

git checkout -f branch

и его спецификация довольно ясна.

-f, --force

При переключении ветвей, продолжайте, даже если индекс или рабочий            дерево отличается от HEAD. Это используется для удаления локальных изменений.

При проверке путей из индекса не терпите неудачу при несанкционированном            записи; вместо этого игнорируемые записи игнорируются.

Ответ 3

Вы можете принудительно проверить свою ветку, если вы не хотите совершать локальные изменения.

git checkout -f branch_name