Сколько / как долго хранятся тайники git?



Я очень новичок в git и у меня есть некоторые вопросы по поводу тайников. Если я работал на ветке, но не смог добраться до позиции, где я могу зафиксировать ветку, то хранение-это правильная вещь. Мои вопросы, касающиеся хранения:




  1. Сколько тайников сохраняется?

  2. Как долго сохраняются эти тайники?

  3. они просто временно сохраняют работу таким образом, что изменения теряются при перезагрузке компьютера?


Если бы кто-нибудь мог быстро помочь прояснить это было бы очень ценно.

932   2  

2 ответов:

1 - Сколько тайников сохранилось?

Тайники не появляются из воздуха; только если вы создаете их, используя

git stash

Или, что эквивалентно,

git stash save

Так сколько же спасено? Столько, сколько вы создадите.

2 - как долго хранятся эти тайники?

Этот вопрос выглядит невинным, но ответ на самом деле довольно тонкий. Здесь необходимо рассмотреть два аспекта: 1) рефлог тайника и 2) рефлог хранилища. объектная база данных.

Когда вы создаете тайник, Git

  • добавляет запись в рефлог тайника,
  • создает два (три, если вы используете флаг --include-untracked) объекта фиксации в базе данных репозитория: один, соответствующий WIP (незавершенное производство) в вашем рабочем дереве, и другой, соответствующий состоянию вашей промежуточной области (он же индекс).

Edit: эти объекты commit являются добросовестными коммитами, что можно проверить, запустив на них git cat-file -t. Они просто случаются быть недоступным из любой ветви; см. комментарийторека .

По умолчанию сборка мусора Git автоматически удаляет записи рефлога, которые старше 90 дней; вы можете указать другое "время жизни" для записей рефлога stash, запустив

git config gc.refs/stash.reflogexpire <lifetime>

Кроме механизма сбора мусора, описанного выше, Git не будет удалять тайники самостоятельно; тайник будет оставаться в вашем локальном хранилище (по крайней мере, 90 дней), пока вы этого не сделаете. добровольно

  • отбросьте его, используя

    git drop <stash-reference>
    

    Который удаляет указанную запись тайника из рефлога тайника;

  • pop it, используя

    git pop <stash-reference>
    

    , который применяет указанный тайник, а затем удаляет соответствующую запись из рефлога тайника; или

  • Беги

    git stash clear
    

, который удаляет все записи рефлога тайника (будьте осторожны с этим).

Однако, имейте в виду что эти три действия влияют только на рефлог тайника. В частности, они не вызывают немедленного удаления связанных объектов "WIP" и "index" из базы данных вашего репозитория; они просто делают эти объекты недоступными. Последние некоторое время будут оставаться в "подвешенном состоянии хранилища", пока в конце концов не соберут мусор и не умрут "истинной смертью".

Это полезно знать: если вы случайно роняете тайник, вы все еще можете получить его из внутренности вашего РЕПО, если вы можете вспомнить или определить ШАС из двух объектов (незавершенного производства и индекса).

3 - они просто временно сохраняют работу таким образом, что изменения теряются при перезагрузке компьютера?

Нет. Тайники ничем не отличаются от любых других объектов фиксации; перезагрузка не оказывает на них никакого влияния.

Git-тайники сохраняются до тех пор, пока ваш жесткий диск не умрет (в отличие от коммитов, которые обычно передаются на какой-либо другой компьютер через git push, поэтому переживут сбой жесткого диска).

Вы можете иметь столько тайников, сколько захотите. Избавьтесь от старых, когда вам захочется, запустив git stash drop или git stash clear (прочитайте документы для них).

Comments

    Ничего не найдено.