git stash применить версию

Я действительно надеюсь, что кто-то может посоветовать.

У меня есть 2 филиала мастер | дизайн

Работая в дизайне, я сделал тайник и переключился на мастера, внёс некоторые коррективы. Вернулся к дизайну и применил тайник только для того, чтобы потерять все мои изменения в ветке дизайна.

Я надеюсь, что вся моя работа находится в тайнике, поскольку я не очистил или удалил их.

Если я создаю тайник, я получаю 4 результата:

stash@{0}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{1}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{2}: WIP on design: eb65635... Email Adjust
stash@{3}: WIP on design: eb65635... Email Adjust

Если я попробую git stash apply f2c0c72 Я получаю ошибку:

fatal: Needed a single revision
f2c0c72: no valid stashed state found

Как я могу применить определенный тайник?

Надеюсь, кто-то может помочь!

9 ответов

Решение

Ключи от тайника на самом деле stash@{n} предметы слева. Так что постарайтесь:

    git stash apply stash@{0}

(обратите внимание, что в некоторых оболочках нужно указывать "stash@{0}"вроде зш, рыба и пауэрселл).

Чтобы получить список тайников:

    git stash list

На самом деле stash@{0} - это ревизия в git, на которую вы можете переключиться... но git stash apply ... должен выяснить, как DTRT применить его к вашему текущему местоположению.

Чтобы применить тайник и удалить его из списка, запустите:

git stash pop stash@{n}

Чтобы применить тайник и сохранить его в тайнике, запустите:

git stash apply stash@{n}

Начиная с версии 2.11, это довольно просто, вы можете использовать номер стека N вместо "stash@{n}", Так что теперь вместо использования:

git stash apply "stash@{n}"

Вы можете ввести:

git stash apply n

Например, в вашем списке:

stash@{0}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{1}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{2}: WIP on design: eb65635... Email Adjust
stash@{3}: WIP on design: eb65635... Email Adjust

Если вы хотите подать заявку stash@{1} Вы можете напечатать:

git stash apply 1

В противном случае вы можете использовать его, даже если у вас есть некоторые изменения в вашем каталоге, начиная с 1.7.5.1, но вы должны быть уверены, что тайник не перезапишет изменения вашего рабочего каталога, если это произойдет, вы получите ошибку:

error: Your local changes to the following files would be overwritten by merge:
        file
Please commit your changes or stash them before you merge.

В более ранних версиях 1.7.5.1 он отказывался работать, если в рабочем каталоге произошли изменения.


Примечания к выпуску Git:

Пользователь всегда должен сказать "stash@{$N}", когда присваивает имя отдельному элементу в расположении по умолчанию для хранилища, то есть повторно ставит отметки в refs/stash. Команда "git stash" научилась принимать "git stash apply 4" как сокращение для "git stash apply stash@{4}"

git stash apply "используется для отказа в работе, если в рабочем дереве произошли какие-либо изменения, даже если изменение не перекрывалось с записанным изменением тайника

Если вы находитесь на компьютере с Windows и в PowerShell, вам нужно процитировать аргумент, такой как:

git stash apply "stash@{0}"

... или применить изменения и удалить из тайника:

git stash pop "stash@{0}"

В противном случае без кавычек вы можете получить эту ошибку:

fatal: неоднозначный аргумент 'stash@': неизвестная ревизия или путь не в рабочем дереве.

Git Stash list 

В списке будут показаны все спрятанные элементы, например:stash@{0}:,stash@{1}:,..,stash@{n}:

Затем выберите число n, которое обозначает stash @ {n}:

git stash apply n 

for eg: git stash apply 1 will apply that particular stashed changes to the current branch

Если у вас есть больше тайников, я рекомендую вам проверить, прежде чем применять их. Использовать:

      git stash show -p

чтобы увидеть последний тайник в деталях. Если у вас больше тайников и вы хотите конкретный, добавьте номер тайника в конце:

      git stash show 1

Затем, когда вы найдете нужный тайник, примените его, набрав:

      git stash apply 1

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

git stash apply n

затем выберите тайник для применения

git stash apply 1

Просто делаю простой для понимания для новичков.

Проверьте свой список git stash с помощью следующей команды:

git stash list

А затем примените следующую команду:

git stash apply stash@{n}

Например: я применяю свой последний тайник (последний всегда имеет индекс {0} в верхней части списка тайников).

 git stash apply stash@{0}

Вам нужно заключить строку в кавычки, потому что ваша оболочка использует содержимое {} как расширение. Так что используйте git stash apply ' [email protected] {index}'. В качестве альтернативы вы можете использовать SHA тайника или в следующий раз, когда вы примените его, вы можете назвать тайник самостоятельно.

Другие вопросы по тегам