Как обновить 'git log' после 'git svn fetch' на голом репо?
У меня есть открытый репозиторий git -svn и он сделал git svn fetch '.
Запуск 'git log' не отображает обновления. Я уверен, что есть обновления, поскольку они отображали файлы, измененные после 'git svn fetch' и 'git svn log' также показывают их.
Обратите внимание, что я специально сделал это голой репо, поэтому "git rebase" не будет работать.
Какая уместна команда для получения внесенных изменений?
Ответы
Ответ 1
Попробуйте git log git-svn
- у меня нет открытого репо, но я только что запустил git svn fetch
, а стандартный git log
предоставил мне текущий (rebased) журнал, но с аргументом git -svn (который является другой ветвью, кроме мастера, который идентифицируется git branch -a
в моем случае). Я получаю журнал до исправленной версии
Ответ 2
A git svn fetch
добавляет новую удаленную ветку, называемую remotes/ git -svn (как видно из git branch -a
).
Если вы вносите изменения в восходящий поток svn, затем запустите git fetch
снова, изменения втягиваются (фактически, извлекаются) в эту ветвь, а не на master.
Итак, чтобы сделать git log (и все остальное) работать нормально на главной ветке, вам просто нужно слияние, как вам обычно нужно делать после извлечения (это то, что делает git pull, выборка и затем слияние).
Так как git svn pull не работает, вам придется объединить его вручную. Пока на главной ветке выполняйте:
git merge remotes/git-svn
Это объединит вашу ветвь мастера с ветвью git -svn, сделав все нормально.
Итак, в будущем запустите
git svn fetch
git merge remotes/git-svn
и вы снова будете в курсе восходящего репозитория.
Установка ref главной главы в git -svn head, как предложено vjangus, также сделает эту работу, но вы никогда не должны вносить изменения в удаленную ветвь.
Ответ 3
Я нашел ответ,
git symbolic-ref refs/heads/master refs/remotes/ git -svn
Благодаря комментариям Стивена Уолтера
http://gsocblog.jsharpe.net/archives/12