![备份工作区,无需远程 git 存储库的本地副本](https://linux22.com/image/72013/%E5%A4%87%E4%BB%BD%E5%B7%A5%E4%BD%9C%E5%8C%BA%EF%BC%8C%E6%97%A0%E9%9C%80%E8%BF%9C%E7%A8%8B%20git%20%E5%AD%98%E5%82%A8%E5%BA%93%E7%9A%84%E6%9C%AC%E5%9C%B0%E5%89%AF%E6%9C%AC.png)
我想备份我的工作区,而不备份在线可用的 git 存储库的所有内容。
所以我想到,我可以只备份.git/config
每个文件夹中的文件,所以如果我想从备份中恢复某个项目,我只需进入该文件夹并获取当前状态即可。
我必须备份哪些文件才能恢复项目?
(完美的例程是检查我本地的所有文件是否都被推送到远程,如果发现本地更改,则文件将被备份。)
答案1
所以我想到,我可以只备份
.git/config
每个文件夹中的文件,所以如果我想从备份中恢复某个项目,我只需进入该文件夹并获取当前状态即可。
这还不够。您还需要至少备份:
- 所有已在本地进行但尚未推送到任何远程存储库的提交
- 工作目录或索引中尚未暂存或提交的文件
- 所有 Git 存储
您可以使用git bundle
它来实现您的目标。例如:
- 将索引中的所有内容以及工作目录中的所有脏内容提交到例如临时分支。
- 将所有存储转换为真实分支
运行这个:
git bundle create /tmp/foo $(git branch -r $(git branch -r | awk '{ print $1 }')
现在备份/tmp/foo
并.git/config
。
这既不是非常自动的,也不能保证它不会错过任何东西。我不建议你真正这样做。
或查看将 git 存储库转换为浅层存储库?这可能更接近您正在寻找的东西。