如何存储当前文件夹中的更改?

时间:2013-05-08 06:41:15

标签: git git-stash

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

我怎样才能做到这一点?

我尝试了一种显而易见的方法 - git stash .,但它似乎无效。

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

4 个答案:

答案 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,这样的事情是我亲自去的乌龟,因为它最终比尝试执行许多命令行命令要快得多。