Git нажмите слияние, но git pull уже обновлен. Пробовал reclone, та же проблема
Я делаю:
$ git commit .
$ git push
error: Entry 'file.php' not uptodate. Cannot merge.
Тогда я делаю
$ git pull
Already up-to-date.
Что мне делать? Я просто хочу получить последнюю версию из удаленной копии и перезаписать что-нибудь на моей локальной копии.
Изменить: Я все пробовал. Я удалил локальное репо и
$ git clone ssh://[email protected]/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://[email protected]/directory
d6d61aa..1e18af1 master -> master
У меня не знаю, что происходит! Как я могу совершать/тянуть снова нормально? Большое спасибо!
Ответы
Ответ 1
Это просто догадка, но был ли ваш пульт открытым репо или рабочий каталог? Если это был рабочий каталог, а не голый репо, файл file.php
на удаленной имел незафиксированные изменения. Ваша команда git push
пыталась продвинуть HEAD
на удаленном компьютере, что вызывало конфликты из-за незафиксированных изменений.
Вот почему вы обычно git pull
обновляете рабочий каталог и используете git push
на голых репозиториях. FYI, чтобы настроить голый репо для использования как нечто похожее на центральное CVS/SVN/etc repo, выполните следующие действия на пульте дистанционного управления:
$ mkdir my-git-repo
$ cd my-git-repo
$ git init --bare
Затем в вашем локальном репо:
$ cd my-git-repo.git
$ git remote add origin [email protected]:/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
, поскольку пульт дистанционного управления устанавливается автоматически, а удаленные слияния refs устанавливаются при использовании ветвей отслеживания.
Надеюсь, что это поможет.
Ответ 2
Повторите попытку git checkout file.php
, затем git push
.
Update:
-
git pull
указывает, что ветка обновлена?
-
git status
не отображается какой-либо несвязанный файл?
-
git commit
работает?
Если вы ответили "да" на все выше, и ваш git push
продолжает терпеть неудачу даже после чистой копии удаленного репозитория (читайте git clone
), это очень вероятно, что удаленный репозиторий имеет проблему с индексом.
Ответ 3
Попробуйте выполнить git status
и проверьте, нет ли каких-либо изменений в файле file.php. Вам необходимо зафиксировать все изменения в одних и тех же файлах, или git может изменить ваш неприменимый файл.
Попробуйте сделать еще одну фиксацию после pull, а затем попытайтесь снова вытащить ее, просмотрите любое возможное слияние и нажмите данные.
Если вы хотите просто перезаписать локальную копию, проверьте файл file.php(git checkout HEAD^ file.php
, чтобы проверить версию, предшествующую последней), в предыдущую версию, а затем вытащите из репозитория.
Ответ 4
Я бы вырезал и вставлял файл file.php локально из рабочей папки. На ваш рабочий стол можно сказать.
Затем выполните pull, затем git должен извлечь последний файл file.php с сервера. Затем просто вставьте копию файла file.php и перезапишите вытащив одну из них или откройте обе версии и просто вставьте свои изменения.
Я надеюсь, что это трюк.
Ответ 5
Вы уверены, что у вас уже нет file.php
с другим случаем? (file.php
или file.php
...), как в этом ответе?
- один уже совершает
- один в вашем рабочем каталоге, в другом случае.