在纯粹在远程服务器上使用 git 进行版本控制之后,我现在希望使用 git 跨远程和本地文件系统进行版本控制。
到目前为止,我的做法是:
mkdir /save
mkdir /save/projectName
cd /save/projectName
并将其初始化为裸git init --bare
mkdir /webDev
并进入cd /webDev
git add *
,编辑它们,然后提交 `git commit * -m "Update." git push origin master
/srv
,以及开发子目录/srv/dev
git clone /save/projectName
git clone /save/projectName
/srv
这一切都工作正常,但我担心的是拥有 3 个具有相同内容的目录所占用的内存,最重要的是,对于多个项目,项目编号 N 的内存将增加为 3*N。
我读过很多关于使用 git 的在线教程和网站,但是我无法清楚地理解。人们经常谈论使用分支,但我还不想考虑分支 - 只是克隆、推和拉。
我想我理想情况下希望在本地计算机上拥有动态 IP 的裸
/save
存储库,然后以某种方式将内容复制到远程计算机的开发和生产目录。这会将每个项目的 3 个目录减少到 2 个,这会更好,但我还没有找到一种方法可以方便地从动态 IP 地址git clone
。
总而言之,我能想到的几个问题可以解决我遇到的问题:
克隆的 git 存储库是否与原始文件占用相同的内存空间?或者 git 是否以某种方式使内存大小更简洁?
是否有一种行业标准方法来设置本地、远程开发和远程生产位置的进程,从而解决内存问题?
有没有办法在我的本地计算机上托管裸 git 存储库,然后以某种方式将它们移动到远程开发和生产位置?
任何有关上述问题的指示,或我可能有的误解,以及解释,将不胜感激。
据我所知,不存在“内存”问题。只是磁盘空间问题。
通常的工作流程是远程的。默认情况下,工作树不会被推送修改。
最佳实践是远程 裸存储库,带有
post-receive
钩子,可以配置为执行您需要的任何命令。
就像转到您的实际存储库(开发存储库或产品存储库,具体取决于远程)并执行
git pull
(根据您从本地开发环境推送到裸存储库的提交来更新工作树。