Я только что открыл и использовал FETCH_HEAD
.Я хотел получить локальную копию некоторого программного обеспечения с сервера, и я сделал
git fetch gitserver release_1
gitserver
- это имя моей машины, на которой хранятся git-репозитории.release_1
- это тег для версии программного обеспечения.К моему удивлению, release_1
тогда нигде не было видно на моей локальной машине.Мне пришлось набрать
git tag release_1 FETCH_HEAD
, чтобы завершить копирование цепочки коммитов с тегами (release_1) из удаленного хранилища в локальное.Fetch нашел удаленный тег, скопировал коммит на мой локальный компьютер, не создал локальный тег, но установил FETCH_HEAD
в значение коммита, чтобы я мог найти и использовать его.Затем я использовал FETCH_HEAD
для создания локального тега, который соответствовал тегу на пульте.Это практическая иллюстрация того, что такое FETCH_HEAD
и как его можно использовать, и это может быть полезно для кого-то еще, задающегося вопросом, почему git fetch не делает то, что вы наивно ожидаете.
На мой взгляд, это такЛучше всего избегать для этой цели, и лучший способ добиться того, что я пытался сделать, это
git fetch gitserver release_1:release_1
, то есть получить release_1 и вызвать его release_1 локально.(Это источник: dest, см. https://git -scm.com / book / en / v2 / Git-Internals-The-Refspec ; на всякий случай, если вы хотите дать ему другое имя!)
Вы можете использовать FETCH_HEAD
время от времени, хотя: -
git fetch gitserver bugfix1234
git cherry-pick FETCH_HEAD
может быть хорошим способом использования исправления с номером 1234 с вашего сервера Git и выхода из сборки мусора Gitизбавиться от копии с сервера после того, как исправление было выбрано в текущей ветке.(Я предполагаю, что на сервере есть хороший чистый коммит с тегами, содержащий все исправления ошибок!)