Ответ 1
Если это был ваш последний тайник, git diff [email protected]{0}
сделает это. Если нет, вы можете использовать git stash list
, чтобы получить индекс, к которому вы хотите сравнить.
Как я могу разделить текущую рабочую копию с типом?
Мой прецедент: моя рабочая копия уже содержит подмножество изменений в моем [email protected]{0}
, но я не хочу применять все изменения в [email protected]{0}
. Я хочу сделать diff, чтобы определить, какие желаемые изменения в [email protected]{0}
все еще отсутствуют в моей рабочей копии.
Если это был ваш последний тайник, git diff [email protected]{0}
сделает это. Если нет, вы можете использовать git stash list
, чтобы получить индекс, к которому вы хотите сравнить.
Я думаю, что OP хотел получить ответ, чтобы узнать, в чем разница, в котором хранится файл, кроме файлов, присутствующих в рабочей копии.
Следующая команда показывает, что содержит файл.
git stash show -p [email protected]{0}
Если ваше рабочее дерево грязно, вы можете сравнить его с кошельком, сначала совершив грязное рабочее дерево, а затем сравните его с приложением. Впоследствии вы можете отменить фиксацию своего рабочего дерева (чтобы ваша история была чистой).
Зафиксируйте свое грязное рабочее дерево:
git add .
git commit -m "Dirty commit"
Сбросьте тайник с этим фиксацией:
git diff [email protected]{0}
Затем, после этого, вы можете вернуть фиксацию и вернуть ее в рабочий каталог:
git reset --soft HEAD~1
git reset .
Теперь вы разделили грязное рабочее дерево на свой кошелек и вернулись туда, откуда вы были.
Вы не можете сделать это, не совершив или не запустив свою рабочую копию. Скот, вероятно, имеет меньший риск:
git add -A # Stage all changes in your working copy.
git stash save --keep-index # Stash your working copy and leave it intact
git diff [email protected]{0} [email protected]{1}
Чтобы избавиться от кошелька, который вы только что сделали ради разнообразия, используйте git stash pop
или git stash drop [email protected]{0}
.
Если вы хотите использовать фиксацию вместо этого, см. @Magne answer.
Вы можете использовать git stash show -l
. Он показывает, что вы хотите без дополнительной тайника или коммита.
Вы можете использовать команду Unix diff в сочетании с двумя командами Git так:
diff <(git diff) <(git stash show -p [email protected]{0})
Конечно, вы можете изменить stash @{0} на любой тайник, который вы хотите. Эта команда фактически сравнивает фактический рабочий каталог (git diff) с одним из ваших штампов.
UPDATE
Вы также можете установить colordiff и увидеть гораздо лучший результат:
Установка:
а затем просто измените команду на:
colordiff <(git diff) <(git stash show -p [email protected]{0})
Чтобы сделать различие файла или папки, присутствующей в рабочем каталоге, с этим в тайнике, вы можете сделать:
git diff [email protected]{0} --/path/to/fileorfolder
Здесь [email protected]{0}
просто представляет коммит HASH, поэтому он работает точно так же, как работает git diff
. [email protected]{0}
просто обработчик.
Не знаю, что хотел OP, но я использую это, чтобы узнать, что представляет собой фактический набор данных для набора:
git difftool [email protected]{0}^!
или
git diff [email protected]{0}^!
или
git diff [email protected]{0}^! > patchfile
Да, вы можете использовать git stash show -p
,
проверьте этот Git diff на кошельке для получения дополнительной информации.