2013-06-17 1 views
9

Предположим, что я в отрыве от мастера, называемого «my_new_stuff». У меня такое чувство, что я мог что-то там спрятать. Я волнуюсь, что если я сделаю git stash pop и i не сделал, то все, что он собирается вытолкнуть в вашу рабочую папку груз ненужного дерьма.Git stash: Как увидеть, есть ли спрятанные изменения в ветке

Могу ли я увидеть, есть ли спрятанные изменения, не разбирая их?

спасибо, Макс

+1

Подкоманда 'git stash show', которая, похоже, была бы здесь полезной. – gcbenison

+0

@gcbenison - я попробовал это в своей ветке, и он показывает три файла. Затем я переключился на мастер и попробовал там, и он показывает те же три файла. Как я могу видеть, в какую ветку они спрятаны? Связаны ли привязки к определенной ветке? –

+0

Штампы не связаны ни с одной веткой. –

ответ

22

тайник хранит снимки таким же образом, что берет на себя обязательство сделать. Вы можете увидеть содержимое тайника с

git stash list 

Вы можете ссылаться на эти снимки с [email protected]{N} нотации или использовать хеши показано на рисунке. Вы можете использовать любую из команд Git, которые работают над фиксацией на stashes. Например

git diff master [email protected]{0} 

покажет вам, что самая последняя заначка бы добавить/удалить в master ветку, если применять его там.

+0

Отлично, спасибо! Должен был догадаться по этому синтаксису :) –

3

Не совсем такой ответ, но небольшой сценарий, который я сделал с помощью ответа Питера Лундгрена выше, который я нахожу очень полезным: когда я переключаю ветви, он говорит мне, что у меня были спрятанные изменения.

in .git/hooks/post-checkout 

#!/bin/sh 
branch=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p') 
stashes=`git stash list | grep "WIP on $branch"` 
if [ "$stashes" ] 
then 
    echo "You have the following stashes for this branch:" 
    echo $stashes 
fi