Есть ли графический способ для 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 для командной строки

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