Почему git настаивает на том, что мои изменения являются локальными при изменении источника, из-за чего я не могу получить изменения? - PullRequest
1 голос
/ 27 марта 2012

Вот сценарий:

  1. Я клонирую промежуточную ветвь моей кодовой базы:

    git clone -b staging git@my.giturl.com:/my-repository.git .
    
  2. Я делаю изменение в другом месте и отправляю его в начало координат

  3. Я пытаюсь внести изменения в кассу:

    git pull origin
    

Предыдущее утверждение не дает мне этого:

Updating 7bb2dae..f711fb0
error: Your local changes to the following files would be overwritten by merge:
    sites/all/modules/broker_auth/broker_auth.module
Please, commit your changes or stash them before you can merge.
Aborting

broker_auth.module - файл, который я изменил в другом месте, но локально ничего не было затронуто. Почему это говорит, что изменилось? Единственный способ, которым я могу исправить, - это сделать следующее (что, по-видимому, занимает некоторое время, поскольку происходит повторная загрузка всего хранилища)

git reset --hard
git pull origin

Действительно ли требуется, чтобы я делал сброс в этой ситуации? Я чувствую, что неправильно управляю своими ветками, но мне сложно понять, что происходит.

Ответы [ 3 ]

2 голосов
/ 27 марта 2012

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

git stash
git pull
git stash apply
2 голосов
/ 10 мая 2012

Я нашел причину своей проблемы. В итоге мой сервер изменил права доступа к моим файлам, поэтому все файлы были помечены как измененные. Я запустил следующую команду git config core.filemode false, которая по существу игнорирует изменения файлового режима, и теперь мои выборки работают впервые каждый раз. Надеюсь, что это помогает кому-то, имеющему подобные проблемы.

1 голос
/ 27 марта 2012

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

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

я бы предложил следующий рабочий процесс... (при условии основной ветки)

git fetch (rather than a pull, which is a fetch and a merge)
git merge origin/master (assuming you are in the master branch)
....Fails here with your message....
git checkout sites/all/modules/broker_auth/broker_auth.module (to reset the file)
git merge origin/master (so you already have the repos, no need to hit the remote again)
...