Я только что открыл и использовал 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 для удаления копии с сервера после того, как исправление было выбрано в текущей ветке. (Я предполагаю, что на сервере есть хороший чистый коммит с тегами, содержащий все исправления ошибок!)
git fetch origin master
самом деле будут обновлятьсяorigin/master
, а не толькоFETCH_HEAD
. См. Stackoverflow.com/a/20967347/6309