75

我只想存储当前文件夹及其子文件夹中的更改。

我怎样才能做到这一点?

我已经尝试了明显的方法 -git stash .但它似乎不起作用。

我知道我可以创建临时提交并在之后删除它们,但我想知道是否git stash支持存储特定文件夹。

4

4 回答 4

132
git stash push -- path/to/folder

对我有用。

于 2018-08-09T03:52:10.813 回答
15

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~
于 2013-05-08T06:46:48.187 回答
8

这应该适合你:

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) 将它们存储起来。最后,您将索引重置回您开始的位置。

于 2013-05-08T09:11:25.723 回答
-8

你可以检查一个 GUI git 接口,比如 SourceTree 或 TortoiseGit,这样的事情是我个人使用 tortoise 的原因,因为它最终比尝试执行许多命令行命令要快得多。

于 2013-05-08T19:16:11.853 回答