Я делаю:
$ git commit .
$ git push
error: Entry 'file.php' not uptodate. Cannot merge.
Затем я делаю
$ git pull
Already up-to-date.
Что я делаю? Я просто хочу получить последнюю версию из удаленной копии и перезаписать что-либо на моей локальной копии.
Править: Я попробовал все. Я удалил свой локальный repo, и
$ 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
Я понятия не имею, что продолжается! Как я могу фиксировать/вытягивать снова обычно?Большое спасибо!
Это всего лишь догадка, но был ли у вас удаленный репозиторий или рабочий каталог? Если это был рабочий каталог, а не просто репозиторий, файл file.php
на удаленном компьютере содержал незафиксированные изменения. Ваша команда git push
пыталась продвинуть HEAD
на удаленном компьютере, что вызывало конфликты из-за незафиксированных изменений.
Вот почему вы обычно git pull
обновляете рабочий каталог и используете git push
для пустых репозиториев. К вашему сведению, чтобы настроить чистое репо для использования в качестве чего-то похожего на центральное репо CVS / SVN / и т. Д., Сделайте следующее на пульте дистанционного управления:
$ 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
, поскольку пульты дистанционного управления устанавливаются автоматически, а ссылки для удаленного слияния устанавливаются при использовании ветвей отслеживания.
Надеюсь, что это поможет.
Попробуйте выполнить git status
и проверить, нет ли у вас некоммитированных изменений в 'file.php'. Вам нужно зафиксировать все изменения в одних и тех же файлах, иначе git может изменить ваш незафиксированный файл.
Попробуйте сделать ещё один коммит после pull, а затем попробуйте pull снова, просмотрите возможные слияния и вытолкните данные.
Если вы хотите просто перезаписать свою локальную копию, проверьте файл file.php (git checkout HEAD^ file.php
для проверки версии, предыдущей последней) до предыдущей версии, а затем вытащите из репозитория.
Вы уверены, что у вас уже не было file.php
с другим регистром? (File.php
или file.PHP
...), как в этом ответе?
Попробуйте сделать git checkout file.php
, затем git push
снова.
Обновление:
git pull
сообщает, что ветка обновлена?git status
не показывает ни одного неперемещённого файла?git commit
работает? Если вы ответили да на все вышеперечисленные вопросы, а ваш git push
продолжает не работать даже после создания чистой копии удаленного репозитория (читайте git clone
), очень вероятно, что у удаленного репозитория проблемы с индексами.
Я бы вырезал и вставил мой file.php локально из рабочей папки. На рабочий стол, допустим.
Затем сделайте pull, после чего git должен получить последний файл file.php с сервера. Затем просто вставьте свою копию file.php и перезапишите извлеченный файл или откройте обе версии и просто вставьте свои изменения.
Надеюсь, это поможет.