Как git изменения смены в текущей папке
Я хотел бы сохранить изменения только в текущей папке и подпапках.
Как я могу это достичь?
Я пробовал очевидный подход - git stash .
, но он не работает.
Я знаю, что могу создавать временные коммиты и удалять их позже, но я хочу знать, поддерживает ли git stash
сохранение определенных папок.
Ответы
Ответ 1
git stash
не позволит вам сохранять частичные каталоги с помощью одной команды, но есть несколько альтернатив.
Вы можете использовать git stash -p
, чтобы выбрать только те различия, которые вы хотите сохранить.
Если вывод git stash -p
огромен и/или вы хотите использовать сценарий, и допустимо создавать временные коммиты, вы можете создать фиксацию со всеми изменениями, кроме тех, которые находятся в подкаталоге, а затем отменить изменения, и перемотать фиксацию. В коде:
git add -u :/ # equivalent to (cd reporoot && git add -u) without changing $PWD
git reset HEAD .
git commit -m "tmp"
git stash # this will stash only the files in the current dir
git reset HEAD~
Ответ 2
Это должно сработать для вас:
cd <repo_root>
git add . # add all changed files to index
cd my_folder
git reset . # except for ones you want to stash
git stash -k # stash only files not in index
git reset # remove all changed files from index
В основном, он добавляет все измененные файлы в индекс, за исключением папки (или файлов), которую вы хотите сохранить. Затем вы нажимаете их с помощью -k
(--keep-index
). И, наконец, вы reset указали обратно туда, где вы начали.
Ответ 3
Вы можете проверить один из интерфейсов GUI git, таких как SourceTree или TortoiseGit, вот что я лично перехожу к черепахе, так как оно просто намного быстрее, чем попытки сделать много команд командной строки.