#git
#git
Вопрос:
Есть ли способ, с помощью которого я могу применить тайник, используя его имя? Я получил список тайников, как показано ниже, и я хотел бы применить тайник @{0}.
stash@{0}: On support.1.5: NoGoMod
stash@{1}: On feature/WORK-7929: 6Aug
stash@{2}: On support.1.5: 17Jul
stash@{3}: On WORK-7739: temp
Я могу применить его с его номером индекса, например ( git stash apply "stash@{0}"
) , однако есть ли способ применить его с его именем… например. git stash применить «stash @{NoGoMod}» или что-то подобное этому?
Проблема, с которой я сталкиваюсь, заключается в том, что номер индекса изменяется с каждым новым тайником, который я создаю. Поэтому, если будет добавлен новый тайник, список будет выглядеть примерно так, как показано ниже
stash@{0}: On support.1.5: NewStash
stash@{1}: On support.1.5: NoGoMod
stash@{2}: On feature/WORK-7929: 6Aug
stash@{3}: On support.1.5: 17Jul
stash@{4}: On WORK-7739: temp
Если тайник не может быть применен с его именем, то есть ли какой-либо способ сохранить его номер индекса постоянным? Есть ли способ, с помощью которого новый тайник добавляется в конец списка, а мой существующий индексный номер тайника не изменяется?
Спасибо в ожидании
Ответ №1:
Список тайников представляет собой стек. Это означает, что каждый новый тайник «помещается» в стек. Так что нет, нет способа предотвратить изменение нумерации; самый последний тайник всегда равен нулю, по самому определению стека.
Тайник не имеет «имени» больше, чем сообщение, которое вы включаете в коммит, является его «именем». Коммит однозначно идентифицируется по имени, если на него указывает ветвь или тег; в противном случае он идентифицируется по его идентификационному номеру SHA. Аналогично, тайник в стеке тайников идентифицируется по его месту в стеке.
(Меня так и подмывает добавить: если вам это не нравится, не используйте тайники. На мой взгляд, тайники — это работа дьявола. Они не должны использоваться для временного хранения состояния ветки; для этого и нужен коммит. Если вы хотите сказать «держите мое место», создайте временную ветку и зафиксируйте. Теперь у вас есть что-то с именем, к которому вы всегда можете вернуться. Тайники предназначены только для чрезвычайных ситуаций, когда индекс отличается от рабочего дерева, и на это нет времени, поэтому вам нужно сохранить состояние рабочего дерева отдельно от индекса.)
Ответ №2:
Запись тайника — это специальная ссылка, которая указывает на фиксацию. Таким образом, вы можете просто пометить коммит.
# after "git stash", tag the last entry
git tag foo stash@{0}
# later use the tag name
git stash apply foo
Вы можете создать псевдоним или функцию bash для объединения git stash
и git tag
.
С тегом есть еще несколько преимуществ для редких случаев.
-
Запись тайника все еще существует, даже если она была удалена или извлечена из стека тайника. С помощью тега вы можете легко применить его
git stash apply foo
. -
Вы можете перенести тег в другие репозитории, чтобы там можно было применить запись тайника.