我需要存储 git repo 的当前状态。稍后我需要返回状态。
保存的状态应包含当前分支及其更改。
例子:
master
并修改了 foo.py。AFAIKstash
或临时分支在这里无济于事,因为分支名称未保存。
我可以接受管道命令,因为保存和恢复将在脚本中完成。
使用git stash
将保存状态:它使两个1提交不在任何分支“上”(refs/stash
而是通过特殊名称找到),包含索引的状态和工作树的状态。然后它git reset --hard
用于摆脱任何工作树和索引更改,从而可以安全地更改分支。
stash
不保存的一个状态是分支的名称(如果有),在保存存储时您所在的分支。
要保存它,您需要运行git symbolic-ref HEAD
(用于--short
获取分支名称,并注意如果HEAD
不是符号引用,则它退出非零,即当前“分离”;在这种情况下,您可能需要将当前提交 ID 保存在某处,可能在参考中以保护它)。
请注意,git stash save
如果没有要保存的状态,则不会执行任何操作,因此refs/stash
在该git stash save
步骤之后验证该状态是否存在并指向新的不同提交 ID是明智的。(这在脚本中并不太难:用于git rev-parse -q --verify refs/stash
获取新的提交 ID,并在save
获取旧的之前使用它。git symbolic-ref
如果引用不存在,它将退出非零。)
1或者,如果您使用git stash save -u
或,则进行三次提交git stash save -a
。第三次提交包含 git 通常单独留下的文件:未跟踪和忽略的文件。有关详细信息,请参阅git stash
文档。
归档时间: |
|
查看次数: |
942 次 |
最近记录: |