Поиск по сайту
Ctrl + K
Вопросы по Git

Что делает git fetch --prune?

Команда git fetch используется для обновления информации о ветках удалённого репозитория без слияния изменений в локальные ветки. При использовании опции --prune, Git дополнительно очищает локальные ссылки на удаленные ветки, которые были удалены в самом удалённом репозитории.

Что происходит без --prune?

Давайте разберемся, что происходит, если просто выполнить git fetch:

git fetch origin

Это команда обновляет информацию о ветках удалённого репозитория origin. Если в удаленном репозитории были удалены некоторые ветки, Git не будет очищать их локальные ссылки. Таким образом, если вы выполните git branch -r, вы все равно увидите эти удаленные ветки, хотя их уже не существует на удаленном репозитории.

Добавление опции --prune

Теперь, если вы выполните git fetch с флагом --prune:

git fetch --prune origin

Что произойдет:

  • Git выполнит обычную операцию fetch, то есть обновит информацию о существующих удаленных ветках.
  • Git также проверит, какие ветки были удалены в удалённом репозитории, и удалит ссылки на них из вашего локального представления.
  • Пример использования

    Предположим, в удаленном репозитории origin была ветка feature-xyz, которая была удалена. Без использования --prune, если вы выполните:

    git fetch origin
    

    Вы сможете увидеть ветку в списке:

    git branch -r
    

    Вывод может быть таким:

    origin/HEAD -> origin/main
    origin/feature-xyz
    origin/main
    

    Однако, после выполнения команды:

    git fetch --prune origin
    

    Если в удалённом репозитории больше нет ветки feature-xyz, при следующем просмотре списка удаленных веток она не появится:

    git branch -r
    

    Вывод будет следующим:

    origin/HEAD -> origin/main
    origin/main
    

    Таким образом, git fetch --prune помогает поддерживать локальное представление ваших удалённых веток в актуальном состоянии, убирая те ссылки, которые больше не существуют в удалённом репозитории.

    Заключение

    Команда git fetch --prune является полезной для поддержания чистоты в вашем локальном репозитории и помогает избежать путаницы с несуществующими ветками. Рекомендуется использовать её регулярно, особенно если в вашем проекте много активных веток, которые иногда могут быть удалены.

    Надеюсь, это объяснение помогло вам понять, что делает команда git fetch --prune!