Я щойно відкрив і використовував 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 і називати його випуском_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