git stash
将它放在一边。此外,我想在共享驱动器上备份该存储内容。只是为了安全。将存储内容归档到文件中的优雅解决方案是什么?
答案 0 :(得分:13)
您可以通过运行show命令来获取diff:
git stash show -p > stash.diff
这是可以用作备份的diff文件。
稍后您可以将diff应用于现有存储库:
git apply stash.diff
# and potentially stash again:
git stash
答案 1 :(得分:5)
我不想提交
实际上,git stash
通过两次提交(有时)三次来进行操作,所以如果你把你的工作藏起来,你甚至可能都不知道它。但是大多数时候做出临时提交并没有错。只需添加当前的工作,然后通过以下方式进行临时提交:
git commit -m 'WIP'
然后,您可以将分支推送到存储库,这应该用作备份。当您返回完成工作时,您可以通过以下方式修改该临时提交:
git commit --amend
随意将邮件更改为更有意义的邮件,但无论如何WIP
邮件都可以作为提醒。
如果您正在处理的分支可以由其他人共享,那么您可以将临时提交的分支推送到不同的位置作为备份,例如。
git push origin local_branch:some_other_location
答案 2 :(得分:2)
正如Tim Biegeleisen所说,git stash
实际上创建了一个提交 - 它只是不会移动任何分支。
您可以通过stash@{0}
访问上次隐藏的内容(倒数第二个到stash@{1}
等等... git stash list
以查看您可以访问的完整列表。< / p>
我认为使存储更持久的最直接方式是:创建一个新分支:
$ git branch wip/adding/new/feature stash@{0}
现在,有一个分支指向它,这个隐藏的内容将不会过期,将在您从此repo克隆或获取等时传输...
备份回购的最简单方法是克隆它:
$ cd path/to/external/drive
$ git clone my/repo
# you can then update your backup by running :
$ git fetch # from the clone
这将保存原始仓库中定义的所有分支和标签。
答案 3 :(得分:0)
扩展 Zybnek 的回答。
如果您想在不提交或创建临时分支的情况下备份所有存储:
计算隐藏的数量git stash list | wc -l
执行for i in {0..n}; do $(git stash show -p stash@{$i} > stash_$i.diff); done