Псевдоним для синхронизации ветки объекта с веткой "разработка"

Я провел несколько поисков и нашел этот псевдоним, чтобы синхронизировать ветку функций с ветвью разработки, которая работает, когда я запускаю из Git bash вручную.

sync='!f() { echo Syncing this branch with develop && git checkout develop && 
git pull && git checkout – && git rebase develop; }; f'

Я попытался поместить этот псевдоним в.gitconfig, однако я получаю следующую ошибку

error: pathspec '"\342\200\223"' did not match any file(s) known to git.

я обнаружил, что это git checkout, то есть возврат к последней ветке, в которой вы были, создает эту ошибку.

Я также попытался поместить ту же команду в.bashrc, как показано ниже

alias sync='echo Syncing this branch with develop && git checkout develop && git pull 
&& git checkout – && git rebase develop'

который создает ту же ошибку.

Однако, чтобы убедиться, что когда я запускаю все команды в Git Bash вручную, все они работают нормально, других проблем не возникает. Кажется, это только из-за различий в msysgit или bash для Windows, так как я прочитал эти псевдонимы для git на Mac и Linux.

Может ли какой-то просвещенный ум сказать мне, как изменить его, чтобы он работал на Windows?

Спасибо

1 ответ

Решение

\342\200\223 является восьмеричной последовательностью символов, представляющей символ "en dash" UTF-8: восьмеричный 342 200 223 такой же, как гекс e2 80 93, Вы, вероятно, скопировали / вставили эту командную строку откуда-то, и этот символ дует gitразум. Используйте ASCII -,

То есть этот персонаж: и этот: - не то же самое. Вы должны использовать последний.

Вы можете проверить, запустив персонажа через вашу любимую программу шестнадцатеричного дампа. Вот мой пример:

$ echo -n – | hexdump
0000000 e2 80 93                                       
0000003
$ echo -n - | hexdump
0000000 2d                                             
0000001
Другие вопросы по тегам