Есть ли графический способ для gash stash/unstash отдельных файлов?
Я ищу графический интерфейс для сохранения и сохранения файлов в git, с возможностью сделать это для отдельных измененных файлов. Я знаю, что есть способ сделать это с помощью командной строки, но я ищу графический способ. Меня больше не волнует сохранение отдельных файлов, а скорее всплывающее окно / применение. Я работаю на Windows 7.
4 ответа
Документация git stash
говорит:
использование
git stash
когда вы хотите записать текущее состояние рабочего каталога и индекса, но хотите вернуться в чистый рабочий каталог. Команда сохраняет ваши локальные изменения и восстанавливает рабочий каталог, чтобы соответствоватьHEAD
совершить.
Он обеспечивает очень небольшую поддержку 1 для обработки отдельных файлов, поскольку его целью является безопасное хранение текущих изменений и быстрое приведение рабочего дерева в чистое состояние (т. Е. Как это было сразу после вашего последнего коммита в текущей ветви).
Вы можете делать то, что вы хотите (и более гибким способом, чем сохранение), если вы создаете новую ветку и фиксируете в ней изменения (в любом количестве или комбинации), пока не достигнете желаемого статуса. Тогда просто оформите предыдущую ветку и все готово.
Этот подход позволяет вам объединить изменения в текущую ветку позже, чтобы выбрать только некоторые коммиты или даже некоторые файлы из них.
1 git stash save
предоставляет возможность --patch
что позволяет пользователю интерактивно выбирать фрагменты из разницы между HEAD
и рабочее дерево, которое нужно спрятать. Это позволяет точно контролировать то, что добавляется в тайник.
Дополнительное обсуждение
Ты говоришь:
я использую
git
приходящий изPerforce
поэтому я пытаюсь подогнать шкатулку в форму "полки", но я думаю, что ветвление - лучший способ сделать это. С этим связано то, чтоgitextensions
вроде как делает ветку из моих тайников, так что я могу ее хранить, но при захвате отдельных файлов обращаться с ней как с веткой.
Внутренне каждый тайник хранится как коммит, связанный с коммитом, который был HEAD
в тот момент, когда тайник был создан, но не связан с предыдущим тайником (если есть). Список тайников хранится в виде метаданных; тайники не связаны (скрытой) веткой.
Больше, git stash create
позволяет создать тайник, не добавляя его в список тайников. Он предусмотрен для сценариев и "вероятно, не та команда, которую вы хотите использовать" (я цитировал из документации).
Я увидел здесь рекомендацию о добавлении команд Stash как меню в "Git GUI" в вашем <USER HOME directory>\.gitconfig
,
[guitool "Stash/show"]
cmd = git stash show -p
[guitool "Stash/list"]
cmd = git stash list
[guitool "Stash/pop"]
cmd = git stash pop
[guitool "Stash/drop"]
cmd = git stash drop
confirm = yes
Я также добавил еще одну команду для выполнения сэширования (чтобы использовать, вы должны на первом этапе - но не фиксировать - файлы, которые вы хотите спрятать, чтобы Git выполнил требуемое "добавление"):
[guitool "Stash"]
cmd = git stash
(Обратите внимание, что я решил, что "тайник" не будет отображаться в качестве подменю, но вы можете сделать это.)
Вы также можете добавлять команды через Git GUI через Tools->Add.
Копирование может быть полезным, если вы просто хотите быстро забыть о файлах, не думая о названии ветки.
Вы пробовали Sourcetree: http://www.sourcetreeapp.com/
Это может решить вашу проблему.
Вы можете использовать 'git gui', который поставляется вместе с версией git для командной строки