我打算用Git用Latex编写我的论文.由于Git专为软件开发而设计,我的要求是否可行?如果它对我来说是一个不错的选择,那么Git中有哪些特殊和独特的功能是写论文的理想选择.另外,我想知道在进入Git工作流程之前我应该采取什么预防措施.我是Git的初学者,所以在我进入它之前应该是我的起点.
考虑到以下要求,在GitHub上创建git存储库的本地备份的最佳方法是什么?:
本地备份应该是一个简单的回购.
备份应包括所有分支.
应该很容易(逐步)更新备份.
基本上,我想要一个完美的镜子,可以轻松更新.就这样,命令
git clone --mirror git://github.com/...
Run Code Online (Sandbox Code Playgroud)
想到了,但据我所知,这不允许轻松更新(我必须删除并重新创建我的本地备份).另外,git clone的镜像选项似乎是最近的,我没有在我正在研究的一些系统上(它有稍微旧版本的git运行).
针对此类问题,您推荐的解决方案是什么?
我是一名独立开发人员,在本地Git存储库中工作.对于备份,我想将该存储库的精确副本发送到另一台服务器.
这样做是否足够?
git push --mirror
Run Code Online (Sandbox Code Playgroud)
我问,因为在Git告诉我"一切都是最新的"之前,我有时可以运行这个命令两到三次,所以显然它不是一个精确的镜子.它似乎正在重新推动跟踪分支......?
$ git push --mirror
Counting objects: 42, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (30/30), done.
Writing objects: 100% (30/30), 5.09 KiB, done.
Total 30 (delta 17), reused 0 (delta 0)
To ssh://my/repo/url
c094a10..0eedc92 mybranch -> mybranch
$ git push --mirror
Total 0 (delta 0), reused 0 (delta 0)
To ssh://my/repo/url
c094a10..0eedc92 origin/mybranch -> origin/mybranch
$ git push --mirror
Everything up-to-date
Run Code Online (Sandbox Code Playgroud)
发生了什么,这是一个好策略吗?
编辑:我不喜欢使用类似git bundle或.tar.bz2档案的东西,因为我希望备份是一个可访问的工作副本.由于我的备份服务器已连接到网络并始终打开,因此在我上路时这是访问存储库的好方法.
我有一个本地分支,用于git中的日常开发工作.我的工作流程是:
这一切都运行正常,但我遇到的大多数建议都说不应该"推"私人分支,定期执行rebase.
这里的问题是,在这种情况下,本地分支不会备份到服务器,保存工作的唯一方法是将其合并回"pushable"分支(即origin/master)
在这种情况下,您对工作流程的建议是什么?
谢谢!
更新:我意识到我有一个原始要求(避免使用外部实用程序)是不必要的限制.
我目前的解决方案是将所有存储库存储在云同步文件夹中 - 这样我就可以免费获得备份.
刚刚在一台全新的高性能服务器上安装了全新的6.8 Gitlab.
在考虑忘记我的存储库历史记录(评论,问题等等)之前,有人知道将存储库数据从Gitlab服务器导出到另一个Gitlab服务器的方法吗?
我只是没有在导出/迁移整个项目数据(不仅仅是git存储库及其wiki)的文档中找到任何内容.
我创建了我的git存储库的备份,如如何备份本地Git存储库?建议用
git bundle create /tmp/foo-all --all
Run Code Online (Sandbox Code Playgroud)
我可以看到所有的引用都在那里,包括由git-svn创建的远程引用.现在我无法弄清楚如何将此捆绑包再次恢复到本地存储库.我很确定我已经做过一次了.我尝试了git-clone,但这给了我一个只有一个存储库,我的备份包作为远程仓库.
我也试过了
git init
git bundle unbundle /tmp/foo --all
Run Code Online (Sandbox Code Playgroud)
但这只列出了所有参考资料......
验证捆绑包给出:
$ git bundle verify $somewhere/foo.bundle
The bundle contains 12 refs
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/master
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/remotes/git-svn
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx HEAD
The bundle requires these 0 ref
$somewhere/foo.bundle is okay
Run Code Online (Sandbox Code Playgroud) 我可以通过两个步骤将其推送到存储库来备份我的本地.git:
git push --all ~/gitrepo
git push --tags ~/gitrepo
Run Code Online (Sandbox Code Playgroud)
我可以使用git bundle备份它.
我可以通过简单地复制整个目录或将其归档(压缩!)来备份它:
tar -zcvf gitrepo.tgz .git
Run Code Online (Sandbox Code Playgroud)
现在的问题是它们是否真的相同?(例如,logs不推送子目录)
该git push方法的优点是什么git bundle?
可以tar -zcvf被认为是"完美的git备份"吗?
我一直在使用git半年左右,我不知道我是否完全使用git.
首先,我一直在尝试使用Dropbox,我觉得如果我可以将它合并到我的工作流程中,那么它真的很棒,因为Dropbox非常方便.
git init --bare.然后在我的桌面的提交后脚本中,我有一个git push --mirror
dropbox.这样我的桌面和保管箱将始终完全镜像,这是一件好事.
我真正的问题是:我应该如何设置我的笔记本电脑? 我听到了一些建议:
我一直在做第二,我不知道我做的是否正确.我的工作流程包括:
目前,在我的笔记本电脑上执行git branch -r后,在我的桌面上执行操作并未显示我最近的笔记本电脑提交.有人可以告诉我为什么吗?git push --mirror origin
我提到直接从我的桌面拉,因为这样我总是可以初始化拉动,我100%确信同步完成.使用Dropbox,我永远无法100%确定更新是否已推送到Dropbox服务器
是否应该每天将所有本地创建的GIT分支推送到中央存储库?什么是最好的实践工作流程?
我们创建了一个GIT存储库来管理我们的大型电子商务网站,该网站正在由一个大型团队不断开发.
中央存储库位于'Beanstalk',我们有三个主要分支,'prestaging'(主),'staging'和'production'.所有开发都应该在本地完成并准备发布时合并到预安排中.
我也可以看到将长期运行的分支推送到Beanstalk.然而,我们的一些团队倡导者每天都会将所有本地开发分支机构推向Beanstalk,而不是在进行中; 创造冗余.我认为随着时间的推移,这会使数百个分支机构混乱.什么是最佳做法?