除了基本的 git stash 和 git stash pop 外,还有许多其他有用的用法和选项。以下是一些常见的 git stash 用法和选项:
1. git stash 基本用法
git stash
将当前工作目录和暂存区的修改暂存起来,并恢复工作目录到上一次提交的状态。
2. git stash pop
git stash pop
从栈中应用最近一次的暂存,并将其从栈中移除。
3. git stash apply
git stash apply
从栈中应用最近一次的暂存,但不将其从栈中移除。这在你希望应用相同的暂存多次时非常有用。
4. git stash list
git stash list
显示所有暂存的列表,包括每次暂存的描述和哈希值。
5. git stash show
git stash show
显示最近一次暂存的摘要,包括哪些文件被修改了。
git stash show -p
显示最近一次暂存的详细信息,包括具体的差异。
6. git stash save "message"
git stash save "Work in progress on feature XYZ"
使用自定义消息保存暂存,以便你更容易识别每个暂存的内容。
7. git stash branch
git stash branch new-branch-name
创建一个新的分支,并将最近一次的暂存应用到该分支。这对于你希望在一个新的分支上继续工作而不影响当前分支时非常有用。
8. git stash clear
git stash clear
清空所有暂存的内容。请注意,这个操作不可逆,请谨慎使用。
9. git stash drop
git stash drop
移除最近一次的暂存。
git stash drop stash@{index}
移除指定的暂存(例如 stash@{1})。
10. git stash -u 或 git stash --include-untracked
git stash -u
暂存未跟踪的文件(未 git add 的文件)。
11. git stash -a 或 git stash --all
git stash -a
暂存所有文件,包括未跟踪和忽略的文件。
使用示例
1. 暂存当前工作并切换分支
# 暂存当前工作
git stash
# 切换到另一个分支
git checkout another-branch
# 完成任务后切换回原来的分支
git checkout original-branch
# 恢复之前的工作
git stash pop
2. 创建新分支并应用暂存
# 暂存当前工作
git stash save "Work in progress on feature XYZ"
# 创建新分支并应用暂存
git stash branch feature-branch
3. 清理暂存
# 查看所有暂存
git stash list
# 移除特定的暂存
git stash drop stash@{0}
# 清空所有暂存
git stash clear
注意事项
- 暂存内容:
git stash只会暂存被 Git 跟踪的文件,除非使用-u或-a选项。 - 合并冲突:恢复暂存时可能会遇到合并冲突,需要手动解决。
- 保存进度:在使用
git stash前,确保你已经提交了所有不希望丢失的修改。