У меня есть проблема, аналогичную описанной в вопросе How do I change the author of a commit in git? и решение, которое я пытаюсь использует git filter-branch
, но это не работает, потому что она не будет соответствовать строковый литерал с пробелами, то есть мне нужно contains
:Есть ли лучший способ совпадения при использовании `git filter-branch`?
git filter-branch --commit-filter '
if [ "$GIT_AUTHOR_NAME" = "giovanni azua" ];
then
GIT_COMMITTER_NAME="Giovanni Azua";
GIT_COMMITTER_EMAIL="[email protected]";
GIT_AUTHOR_NAME="Giovanni Azua";
GIT_AUTHOR_EMAIL="[email protected]";
git commit-tree "[email protected]";
else
git commit-tree "[email protected]";
fi' HEAD
Знак равенства не будет работать, если между ними есть пробелы, и я понятия не имею, как его избежать. Я также попытался убежать от него, как giovanni\ azua
, но не работает. Я также не мог найти никакой ссылки на то, что это за сценарий, то есть как вы делаете строку contains
или substring
? Я всегда получаю вывод WARNING: Ref 'refs/heads/master' is unchanged
.
ОБНОВЛЕНИЕ: оно также проверит мою коробку, чтобы иметь не if [ "$GIT_AUTHOR_NAME" ~= "giovanni azua" ];
, но оператор ~=
не работает.
Если я правильно понял, вы хотите совпадение с регулярным выражением или глобусом, так что если GIT_AUTHOR_NAME (скажем) 'pgiovanni azuaq', он также должен совпадать? (Вероятно, нет, но это предназначено, чтобы заставить вас рассмотреть именно то, что вы хотите сопоставить.) Тест, 'if [...]', просто запускает '[' * program * (см. [Test] (http://www.lehman.cuny.edu/cgi-bin/man-cgi?test+1) docs). Используйте 'expr' или' grep' для запуска регулярного выражения. – torek