Git Stash список с указанием пути - PullRequest
1 голос
/ 02 мая 2019

Документация для git stash list говорит

Команда использует параметры, применимые к команде git log, для управления тем, что показано и как.См. git-log [1] .

Но где обычный git stash list показывает мне список stash@{N} (много "WIP on branch1", "WIP onветвь 2, "и т. д.), git stash list -- doc для поиска тайников, специально влияющих на документацию, this ...

HEAD@{33}: checkout: moving from master to abcdef123
HEAD@{46}: checkout: moving from branch1 to master
HEAD@{67}: pull: Fast-forward
HEAD@{68}: checkout: moving from branch1 to master
HEAD@{71}: pull: Fast-forward
HEAD@{74}: rebase finished: returning to refs/heads/branch2
HEAD@{75}: rebase: WIP
HEAD@{76}: rebase: WIP
HEAD@{77}: rebase: Docs: New feature explanation (This is a commit message)
HEAD@{78}: rebase: checkout branch3
HEAD@{79}: checkout: moving from branch1 to branch3
HEAD@{81}: rebase: updating HEAD
...

Что означает , что !?И как я могу увидеть тайники, отфильтрованные по определенному пути?

1 Ответ

3 голосов
/ 02 мая 2019

Команда git stash была сценарий оболочки , что делало его необычно читаемым для исходного кода Git. Похоже, что он больше не один, и ошибка может быть получена или исправлена ​​после ссылки выше, которая идет в Git версии 2.21.0.

Код list_stash находится в строках 402-405 и по существу состоит из работы:

git log --format="%gd: %gs" -g --first-parent -m "$@" $ref_stash --

, где $ref_stash по умолчанию refs/stash. Обратите внимание, что $ref_stash следует после "$@". Это должно быть хитрее: поскольку вы указали --, он должен поместить ваши аргументы pre- -- перед -- и ваши аргументы post- -- после (и отбросить ваш --) и, следовательно, выполнить:

git log --format="%gd: %gs" -g --first-parent -m refs/stash -- doc

что бы делать что хочешь. Вместо этого он запускается:

git log --format="%gd: %gs" -g --first-parent -m -- doc -- refs/stash --

, что означает, что git log просматривает рефлог HEAD вместо refs/stash рефлог.

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