我想只更改当前文件夹及其子文件夹中的更改。
我怎样才能做到这一点?
我尝试了一种显而易见的方法 - git stash .
,但它似乎无效。
我知道我可以创建临时提交并在之后删除它们,但我想知道git stash
是否支持存储特定文件夹。
答案 0 :(得分:40)
git stash push -- path/to/folder
对我有用吗?
答案 1 :(得分:11)
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 :(得分:7)
这应该适合你:
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
)存储它们。最后,将索引重置回您开始的位置。
答案 3 :(得分:-3)
你可以检查一个GUI git接口,如SourceTree或TortoiseGit,这样的事情是我亲自去的乌龟,因为它最终比尝试执行许多命令行命令要快得多。