git stash
是 Git 中一个非常有用的命令,用于临时保存当前工作目录中的更改,以便切换到其他分支或进行其他操作,而不用担心丢失未提交的更改。以下是关于 git stash
的一些常用命令和使用场景:
1. 保存当前工作目录的更改
git stash
或者更明确的命令:
arduino
git stash save "描述信息"
- 这会将当前工作目录中的所有未提交的更改(包括已暂存和未暂存的更改)保存到一个"stash"中,并将工作目录恢复到最近一次提交的状态。
- 如果添加了描述信息,可以在后续查看 stash 列表时更容易识别。
2. 查看所有 stash 列表
git stash list
- 这会列出所有保存的 stash,每个 stash 都有一个编号(如
stash@{0}
、stash@{1}
等)。 - 如果在保存 stash 时添加了描述信息,这里也会显示出来。
3. 恢复某个 stash
-
应用某个 stash,但保留该 stash:
kotlingit stash apply stash@{编号}
或者默认应用最近的 stash:
git stash apply
- 这会将 stash 中的更改应用到当前工作目录,但不会从 stash 列表中删除该 stash。
-
应用某个 stash 并删除该 stash:
kotlingit stash pop stash@{编号}
或者默认弹出最近的 stash:
perlgit stash pop
- 这会将 stash 中的更改应用到当前工作目录,并从 stash 列表中删除该 stash。
4. 删除某个 stash
-
如果只想删除某个 stash,而不应用更改,可以使用:
kotlingit stash drop stash@{编号}
-
删除所有 stash:
arduinogit stash clear
5. 查看某个 stash 的详细内容
kotlin
git stash show stash@{编号}
或者查看更详细的 diff:
css
git stash show stash@{编号} -p
6. 分支切换时的 stash 使用
-
如果你在当前分支上有未提交的更改,但需要切换到另一个分支,可以先使用
git stash
保存更改,然后切换分支:git stash git checkout 其他分支
-
完成操作后,再切换回原来的分支,并恢复 stash:
perlgit checkout 原分支 git stash pop
7. 分支合并时的 stash 使用
-
如果你在合并分支时遇到冲突,也可以先保存当前更改:
sqlgit stash git merge 其他分支
-
解决冲突后,再恢复 stash:
perlgit stash pop
注意事项
- stash 是基于当前分支的:stash 保存的是相对于当前分支的更改,因此在恢复 stash 时最好回到原来的分支。
- stash 不影响历史记录:stash 是一种临时保存更改的方式,不会影响 Git 的提交历史记录。
- stash 的适用场景:主要用于临时保存未完成的工作,以便切换到其他任务,或者在遇到冲突时保存当前更改。
总之,git stash
是一个非常灵活且强大的命令,可以帮助你在复杂的开发流程中更好地管理未提交的更改。