我希望能够从单个文件中保存更改:
git stash save -- just_my_file.txt
但上述方法并不奏效。替代品吗?
我希望能够从单个文件中保存更改:
git stash save -- just_my_file.txt
但上述方法并不奏效。替代品吗?
当前回答
我认为stash -p可能是你想要的选择,但为了防止将来遇到其他更棘手的事情,请记住:
Stash实际上只是稍微复杂一点的分支集的一个非常简单的替代品。Stash对于快速移动内容非常有用,但是您可以使用分支完成更复杂的事情,而不需要那么多麻烦和工作。
# git checkout -b tmpbranch
# git add the_file
# git commit -m "stashing the_file"
# git checkout main
继续做你想做的事情,然后简单地重新创建和/或合并tmpbranch。当你需要做比隐藏所允许的更仔细的跟踪时,这真的不是太多额外的工作。
其他回答
最好的选择是暂存除这个文件以外的所有文件,并告诉stash使用git stash save——keep-index保存索引,从而保存你的未暂存文件:
$ git add .
$ git reset thefiletostash
$ git stash save --keep-index
正如Dan指出的,filetostash是唯一一个被stash重置的文件,但它也存储其他文件,所以它不是你想要的。
你可以用git stash -p(类似于git add -p)交互式地隐藏单行。
它不需要文件名,但你可以用d跳过其他文件,直到你到达你想要存储的文件,用a存储所有的更改。
我认为stash -p可能是你想要的选择,但为了防止将来遇到其他更棘手的事情,请记住:
Stash实际上只是稍微复杂一点的分支集的一个非常简单的替代品。Stash对于快速移动内容非常有用,但是您可以使用分支完成更复杂的事情,而不需要那么多麻烦和工作。
# git checkout -b tmpbranch
# git add the_file
# git commit -m "stashing the_file"
# git checkout main
继续做你想做的事情,然后简单地重新创建和/或合并tmpbranch。当你需要做比隐藏所允许的更仔细的跟踪时,这真的不是太多额外的工作。
如果不想指定带有已存储更改的消息,请在双破折号后传递文件名。
$ git stash -- filename.ext
如果它是一个未跟踪的/新文件,您必须首先执行它。
但是,如果您确实希望指定消息,请使用push。
git stash push -m "describe changes to filename.ext" filename.ext
这两种方法都适用于git 2.13+版本
以防你在使用“git stash”时实际上是指“丢弃更改”(而不是真正使用git stash来暂时隐藏它),在这种情况下,你可以使用
git checkout -- <file>
注意,git stash只是一个快速和简单的替代分支和做一些事情。