2014-12-21 4 views
0

Когда я git pull в любом хранилище, я всегда получаю следующее сообщение об ошибке слияния:мерзавец тянуть всегда терпит неудачу, но мерзавец выборки/слияния отлично

aetherboard:shwangster shwangster$ git pull -v 
From github.com:sirspinach/shwangster 
= [up to date]  master  -> origin/master 
merge: 012012012012012012012012012012012012012012012012012012012012 - not 
something we can merge 

С другой стороны, git fetch и git merge origin/master работы как шарм. Поэтому я некоторое время мог решить эту проблему. Тем не менее, мне нужно было обновить варить сегодня, и такая же ошибка мешает мне это сделать.

Вот результат от brew update, который показывает, что git снова пытается слиться с таинственным 0120120120120....

aetherboard:gitrepos shwangster$ brew update 
merge: 012012012012012012012012012012012012012012012012012012012012 - not 
something we can merge 
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master 
+0

Я не знаю точно, что это неправильно, но взгляните на содержимое файла 'FETCH_HEAD' (в' .git 'directory) после неудачного« git pull ». Команда 'pull' запускает' fetch' с дополнительными аргументами, которые говорят ему оставить трассировку в 'FETCH_HEAD', а затем используют эти трассы для запуска' git merge'. С этими трассами есть что-то обидное, заставляя скрипт 'pull' выдавать ошибочную команду' merge'. – torek

+0

Спасибо за помощь, torek. Вот содержимое 'FETCH_HEAD' из двух различных хранилищ после того как я попытался GIT тянуть: 1.' ecbacbe7d1b15058065d8856328cecba8141b1d0 \t \t филиала 'мастер' из github.com: sirspinach/shwangster' 2. '206b62d28091d98909947ad32085a15fa463d7f5 \t не-для слияния \t branch 'master' of github.com: sirspinach/cs61a-scheme' – protagonist

+0

Точный дубликат: http://stackoverflow.com/questions/25271075/git-pull-always-returns-not-something-we-can-merge – Kaz

ответ

1

Там есть ключ в другом (в значительной степени точного дубликата) вопроса, который Kaz отметил в комментариях, что проблема ушла, когда pyenv вынули из $PATH.

Вот немного из тягового скрипта, который принимает FETCH_HEAD след и превращает его в качестве аргумента git merge (или git rebase при выполнении перебазирования тяги):

merge_head=$(sed -e '/ not-for-merge /d' \ 
     -e 's/ .*//' "$GIT_DIR"/FETCH_HEAD | \ 
     tr '\012' ' ') 

(Кстати, обратите внимание, что те, вкладки до и после not-for-merge и во втором -e аргумента SED. Вырезать и вставить обычно превращается вкладки в пробелы, и сделал здесь.)

я себе sed часть работает правильно, и происходит сбой с tr. На самом деле, похоже, что все, что используется tr, просто выплевывает строку 012 (всего 60 символов или 20 экземпляров трехсимвольной группы). Не знаете, как это происходит, если вывод sed или должен быть 40-символьный SHA-1).

Если оболочка sh или bash, посмотреть, что:

$ type tr 

отпечатки. Если вы используете вариант csh, which tr покажет вам, что он будет запускать. (Я не уверен, что использовать для тире и zsh.) Если вы получаете что-то отличное от /usr/bin/tr, это может объяснить проблему. (Если вы получаете /usr/bin/tr увидеть, что type sed или which sed говорит:. Они должны быть /usr/bin/sed)

+0

Спасибо!Оказалось, что 'tr', который ожидал git, был заменен на [что-то еще] (https://github.com/itsnauman/termrule), которое я установил давно. – protagonist

Смежные вопросы