我只想存储当前文件夹及其子文件夹中的更改。
我怎样才能做到这一点?
我已经尝试了明显的方法 -git stash .
但它似乎不起作用。
我知道我可以创建临时提交并在之后删除它们,但我想知道是否git stash
支持存储特定文件夹。
git stash push -- path/to/folder
对我有用。
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~
这应该适合你:
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
) 将它们存储起来。最后,您将索引重置回您开始的位置。
你可以检查一个 GUI git 接口,比如 SourceTree 或 TortoiseGit,这样的事情是我个人使用 tortoise 的原因,因为它最终比尝试执行许多命令行命令要快得多。