Git Push говорит, что все в курсе, хотя у меня есть локальные изменения - PullRequest
194 голосов
/ 16 июня 2009

У меня есть удаленный сервер gitosis и локальный репозиторий git, и каждый раз, когда я делаю большие изменения в своем коде, я также помещаю изменения на этот сервер.

Но сегодня я обнаружил, что, несмотря на некоторые локальные изменения и фиксацию в локальном репозитории, при запуске git push origin master он говорит: «Все актуально», но при использовании git clone для извлечения файлов на удаленном сервере, он не содержит последних изменений. И у меня есть только одна ветка с именем master и один удаленный сервер с именем origin.

PS: Это то, что git отображает при запуске ls-remote, я не уверен, поможет ли это

$ git ls-remote origin
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        refs/heads/master
$ git ls-remote .
49c2cb46b9e798247898afdb079e76e40c9f77ea        HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        refs/heads/master
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        refs/remotes/origin/master
3a04c3ea9b81252b0626b760f0a7766b81652c0c        refs/tags/stage3

Ответы [ 19 ]

2 голосов
/ 24 сентября 2016

Я столкнулся с этим сам, когда слил ветку на Github и продолжал развиваться в ней локально. Мое исправление немного отличалось от предложенных.

Сначала я разветвлял новую локальную ветку от моей старой локальной ветки (которую я не мог нажать). Затем я перенес новую локальную ветку на исходный сервер (Github). * Т.е. 1003 *

$ git checkout -b newlocalbranch oldlocalbranch
$ git push origin newlocalbranch

Это заставило изменения появиться на Github, хотя и в newlocalbranch, а не в oldlocalfranch.

2 голосов
/ 08 июля 2018

Очень редко - но все же: В Windows может быть, что pack-refs имеет ветку с одним регистром букв (т.е. dev / mybranch), в то время как папка refs имеет другую случай (т. е. Dev / mybranch), когда для core.ignorecase установлено значение true.

Решение состоит в том, чтобы вручную удалить соответствующую строку из pack-refs . Не нашел более чистого решения.

2 голосов
/ 26 апреля 2018

Моя ошибка отличалась от всего, что до сих пор упоминалось. Если вы не знаете, почему у вас оторванная голова, то, вероятно, нет. Я работал на автопилоте с git commit и git push, и не прочитал вывод из git commit. Оказывается, это было сообщение об ошибке, потому что я забыл -am.

[colin] ~/github/rentap.js [master] M % git commit 'figured out some more stuff with the forms in views and started figuring out row and mode in models so also made matching routes and controllers'
error: pathspec 'figured out some more stuff with the forms in views and started figuring out row and mode in models so also made matching routes and controllers' did not match any file(s) known to git.
[colin] ~/github/rentap.js [master] M % git push
Enter passphrase for key '/home/colin/.ssh/id_ecdsa': 
Everything up-to-date

Исправил это, поставив -am, где я обычно делаю:

[colin] ~/github/rentap.js [master] M % git commit -am 'figured out some more stuff with the forms in views and started figuring out row and mode in models so also made matching routes and controllers'
2 голосов
/ 06 августа 2017

В моем случае у меня было 2 удаленных репо.

git remote -v
originhttps https://asim_kt@...
originhttps https://asim_kt@...
origin  ssh:git@bitbucket.org:...
origin  ssh:git@bitbucket.org:...

Оба репо были одинаковыми. Просто один был https другой был ssh. Поэтому удаление ненужного (в моем случае ssh., Поскольку я использовал https, потому что ssh не работал!) Исправило проблему для меня.

1 голос
/ 22 октября 2018

У меня было такое (коммиты в моем журнале git не были на GitHub, хотя git сказал, что все было в курсе) и я уверен, что проблема была в Github Я не получил никаких сообщений об ошибках в git, но GitHub имел ошибки состояния, и мои коммиты были там через несколько часов.

https://status.github.com/messages

Сообщения о состоянии GitHub были:

  • Мы расследуем сообщения о недоступности услуги.
  • Мы расследуем проблемы с доступом к GitHub.com.
  • Мы отказываемся от системы хранения данных, чтобы восстановить доступ к GitHub.com.
1 голос
/ 10 августа 2018

У меня была такая же проблема. В моем случае это было вызвано необходимостью имен для одного и того же пульта. Он создал стандартную «origin», но я давно использовал «github» в качестве пульта, так что это тоже было там. Как только я удалил пульт «origin», ошибка исчезла.

1 голос
/ 20 июля 2013

Убедитесь, что вы не указали свой удаленный URL.

Я просто хотел также упомянуть, что столкнулся с этим после включения Git в качестве CVS в локальной конфигурации сборки Jenkins. Похоже, что Дженкинс проверил самый последний коммит из ветви, которую я дал, а также сбросил мой пульт, чтобы он соответствовал путям, которые я дал ему в репо. Пришлось снова проверить мою ветку функций и исправить исходный URL-адрес с помощью 'git remote set-url'. Не направляйте инструмент сборки в свой рабочий каталог, иначе у вас будет плохое время. Для моего пульта был задан путь к файлу в моем рабочем каталоге, поэтому он, естественно, сообщал обо всем обновленном, когда я пытался отправить изменения с тем же источником и местом назначения.

1 голос
/ 13 января 2016

Другая возможность заключается в том, что вы назвали каталог в вашем файле .gitignore, который был исключен. Таким образом, новые коммиты не будут выдвинуты. Со мной случилось, что я назвал каталог, чтобы игнорировать «поиск», но это также был каталог в моем дереве исходников.

1 голос
/ 27 апреля 2017

Я нашел быстрый способ. Перейдите в папку .git, откройте файл HEAD и измените любую ветвь, в которой вы работали, обратно на master. Например. ref: refs/heads/master

...