ошибка git push merge, но git pull уже обновлен. Пробовал откидывать, та же проблема - PullRequest
5 голосов
/ 11 апреля 2010

Я делаю:

$ git commit .
$ git push
error: Entry 'file.php' not uptodate. Cannot merge.

Тогда я делаю

$ git pull
Already up-to-date.

Что мне делать? Я просто хочу получить последнюю версию из удаленной копии и перезаписать что-нибудь в моей локальной копии.

Редактировать: Я попробовал все. Я удалил свой локальный репо, и

$ git clone ssh://root@something.com/directory
...
Checking out files: 100%, done.

$ git status
On branch master
nothing to commit (working directory clean)

Все выглядит хорошо, верно? Потяните на всякий случай.

$ git pull
Already up-to-date.

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

$ git commit .
[master 1e18af1] Rando change
1 files changed, 2 insertions(+), 0 deletions(-)

$ git push
Counting objects: 13, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (7/7), 646 bytes, done.
Total 7 (delta 3), reused 0 (delta 0)
From /directory
d6d61aa..1e18af1  master     -> origin/master
error: Entry 'someotherfile.php' not uptodate. Cannot merge.
Updating b8f9a54..1e18af1
To  ssh://root@something.com/directory
d6d61aa..1e18af1  master -> master

У меня есть Понятия не имею Что происходит! Как я могу зафиксировать / вытащить снова нормально? Большое спасибо!

Ответы [ 5 ]

4 голосов
/ 11 апреля 2010

Попробуйте сделать git checkout file.php, затем git push снова.

Обновление:

  • git pull сообщает, что ветка обновлена?
  • git status не показывает какой-либо файл без файла?
  • git commit работает?

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

2 голосов
/ 03 мая 2010

Это просто догадка, но был ли ваш пульт пустым репозиторием или рабочим каталогом? Если это был рабочий каталог, а не пустой репозиторий, файл file.php на remote содержал незафиксированные изменения. Ваша команда git push пыталась продвинуть HEAD на удаленном компьютере, что вызывало конфликты из-за незафиксированных изменений.

Вот почему вы обычно git pull обновляете рабочий каталог и используете git push на пустых репозиториях. К вашему сведению, чтобы настроить пустое хранилище для использования в качестве чего-то похожего на центральное хранилище CVS / SVN / etc, выполните следующие действия на пульте дистанционного управления:

$ mkdir my-git-repo
$ cd my-git-repo
$ git init --bare

Тогда в вашем локальном репо:

$ cd my-git-repo.git
$ git remote add origin user@host:/path/to/my-git-repo/
$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master
$ git push origin master

Теперь у вас есть голое репо, которое вы можете вставить / вытащить в которое находится ваша основная ветка. Вы можете повторить последние три локальных шага с любыми дополнительными локальными ветвями, которые вы хотите поместить на пульт. Клонирование такое же, как и раньше, и вам не нужно использовать git config, поскольку пульты устанавливаются автоматически, а ссылки на удаленное объединение устанавливаются при использовании отслеживающих ветвей.

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

1 голос
/ 11 апреля 2010

Я бы вырезал и вставил мой файл file.php локально из рабочей папки. На рабочий стол скажем.

Затем выполните pull, затем git должен получить последний файл file.php с сервера. Затем просто вставьте свою копию файла file.php и перезапишите извлеченную или откройте обе версии и просто вставьте изменения.

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

1 голос
/ 11 апреля 2010

Попробуйте сделать git status и проверьте, есть ли у вас какие-либо не зафиксированные изменения в 'file.php'. Вам нужно зафиксировать все изменения в одних и тех же файлах, иначе git может изменить ваш незафиксированный файл.

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

Если вы хотите просто перезаписать вашу локальную копию, извлеките файл file.php (git checkout HEAD^ file.php в проверенную версию, предшествующую последней) в предыдущую версию, а затем извлеките из хранилища.

0 голосов
/ 11 апреля 2010

Вы уверены, что у вас уже не было file.php с другим случаем? (File.php или file.PHP ...), как в этот ответ ?

  • один уже совершил
  • один в вашем рабочем каталоге, с другим регистром.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...