Программно получить количество тайников в git - PullRequest
0 голосов
/ 18 декабря 2018

Мой «самый старый» тайник в проекте - это то, что мне нужно время от времени повторно применять.(Да, для этого есть причина, и да, это ужасно, но на исправление основной проблемы потребуется больше времени, чем просто использование git stash.)

Однако самый старый тайник имеет самый высокийчисло в списке, поэтому я не могу применить его без предварительного использования git stash list, чтобы увидеть, какое это число.

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

git stash apply $(git stash <count-command>)

Я понимаю, что могу использовать что-то вроде этого:

 git stash list | tail -1 | awk '{print $1}' | grep -oP '\d+'

...но это довольно отвратительно, поэтому я хотел бы знать, есть ли что-то попроще.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Поскольку ваш тайник - это всего лишь один коммит, строго говоря, вам не нужно использовать механизм хранения.Как только вы узнаете SHA своего тайника один раз, вы можете выбрать вишню каждый раз с помощью SHA или добавить метку, чтобы можно было выбирать вишню по метке.

При сборке вишни используйтефлаг -n или --no-commit.

0 голосов
/ 18 декабря 2018

Для небольшого репозитория с примерами этого хранилища:

> git stash list
stash@{0}: WIP on foo/master: d9184b5 ...
stash@{1}: WIP on foo/master: d9184b5 ...

это дает вам число записей в хранилище:

> git rev-list --walk-reflogs --count refs/stash
2

Но вы должны вычесть1 чтобы получить последнюю запись :-( Благодаря @alfunx это можно сделать без арифметики оболочки:

> git rev-list --walk-reflogs --count --skip 1 refs/stash
1

Но чтобы получить самую старую ссылку на хранилище напрямую, вы можете использовать это:

> git log --walk-reflogs --pretty="%gd" refs/stash | tail -1
stash@{1}

Это работает в вашем случае, потому что git stash apply поддерживает как простое число, так и stash@{$NUMBER} как идентификатор для тайника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...