Git - "Ваша ветка опережает" происхождение/мастер "на 3 фиксации".

Возможный дубликат:
'git pull origin mybranch' оставляет локальный mybranch N совершает опережение. Почему?

Я получаю эту информацию в git

>git status
# On branch master
# Your branch is ahead of 'origin/master' by 3 commits.
#
nothing to commit (working directory clean)

И, когда я пытаюсь нажать, я получаю следующее:

fatal: failed to write object
error: unpack failed: unpacker exited with error code
To ssh:<my repository>
 ! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'ssh:<my repository>'

Я немного искал этот язык (например, здесь есть вопрос о stackoverflow). 'git pull origin mybranch' оставляет локальный mybranch. N фиксируется раньше нуля.?), и общий совет, похоже, состоит в том, чтобы сделать попытку, а затем нажать. Но это не работает для меня - тяга говорит мне, что я в курсе. Я также пробовал "git fetch origin" (ничего). Я также пробовал:

> git remote show origin
* remote origin
  URL: ssh://<my repository>
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (fast forwardable)

В случае, если это помогает кому угодно.

Я также попытался добавить фиктивный файл на наш веб-сервер (который также проверяет мастер), совершая его и подталкивая его, а затем вытаскивая его локально. Все это прекрасно работало. Но я все еще не могу толкнуть. Может ли кто-нибудь сказать мне, что мне нужно сделать, чтобы разрешить это? Я даже не знаю, что значит сказать, что я быстро перенаправлялся относительно репозитория.

cheers, max

EDIT - для ebneter и dan (спасибо)

> git config -l
user.name=Max Williams
push.default=tracking
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=ssh://<my repo url>
branch.master.remote=origin
branch.master.merge=refs/heads/master

Экран захвата gitk находится на http://dl.dropbox.com/u/846812/gitk.png

  • Я новичок в git, поэтому я не могу интерпретировать это очень хорошо, но мне интересно, выполняется ли фиксация с правами root (строка 6 в верхнем разделе), "master master branch..." может быть, взбесились. Я не помню, чтобы сделать фиксацию как root, озадачен...

Дэн - я думаю, ты прав: ошибка, которую я получаю, когда пытаюсь нажать,

error: unable to create temporary sha1 filename ./objects/05: File exists

fatal: failed to write object
error: unpack failed: unpacker exited with error code

EDIT - этот комментарий из другого вопроса stackoverflow, о котором я говорил ранее, действительно исправил его:

git удаленный (показывающий правильный адрес для репо GitHub) не является достаточно. Во избежание появления предупреждающего сообщения "Ваша ветка впереди" a git pull, вам нужно сначала определить удаленное имя для ветки. Отсюда мое предложение: type git config branch.master.remote yourGitHubRepo.git, затем попробуйте git pull и git статус и посмотрите, вопрос остается. - VonC 16 ноября в 20:22

Ответ 1

Похоже, проблема, с которой вы сталкиваетесь, связана с "ошибкой распаковщика", упомянутой в строке "удаленный отказ". По какой-то причине удаленный конец не распаковывает объекты, которые были отправлены ему. Это может быть вызвано любым количеством вещей. Некоторые вещи, которые вы можете попробовать:

git fsck --full

Запустите это локально и на пульте дистанционного управления (если возможно).

git repack remotes/origin/master

Запустите это на локальном репо.

Если ни одна из этих проблем не устраняет проблему, попробуйте googling git "unpacker error" для других идей. Я лично никогда не испытывал этой проблемы, так что, к сожалению, обо всех советах, которые я могу дать.