跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 能不能在一个项目中使用不同的 git?
未分類
9 4 月 2020

能不能在一个项目中使用不同的 git?

能不能在一个项目中使用不同的 git?

資深大佬 : JCZ2MkKb5S8ZX9pq 17

背景

  • 假设有一个项目
- bin - deps - sqlite - assets 
  • 日常写的时候,假设主要内容都在 bin 里面,deps 里的依赖内容多且杂,sqlite 经常变动,而 assets 里都是 binary 大文件。

  • 实际场景下,不是这么简单的三个文件夹,而是各有若干个。这里是简化类型。

需求

  • 于是 git 的时候,我是直接 ignore 了 deps 和 assets 的部分。git 的时间颗粒比较细。

  • 但是在较大时间跨度,比如一个月一次的时候,想把其它部分也备份一下。现在用的方法是手动每月复制一份。

问题

  • 请问如果在这种不同的颗粒度的情况下,大家习惯怎么处理?

  • 一种是不用 ignore,还是在总目录下 git,但各个目录分别 commit 。不过这样的话总感觉有点彆扭。

  • 或者双开,再来个 SVN ?但也就两个而已。

  • 期望的场景是,开发类 /依赖类 /数据类,能分别 git 到三个独立的部分。( assets 就还是手动备份算了)但因为它们都在一个主目录下,git 好像不能这么干吧?

  • 也是个假设的场景,是我在玩 Homeassistant 时碰到的问题,大家随便聊聊。

大佬有話說 (22)

  • 資深大佬 : coderluan

    Submodule 不行吗?

  • 資深大佬 : zu1k

    git submodule

  • 資深大佬 : GM

    submodule 太难用了,别用。

  • 資深大佬 : FHXISDOG

    添加一个新的远程仓库,git remote add xxx

  • 資深大佬 : yanqiyu

    这其实就是 submodule 的典型用途
    但是 submodule 确实太麻烦
    你更新了 submodule 的仓库之后还要更新外面的仓库

  • 資深大佬 : tairan2006

    其他部分用 dropbox 自动同步,反正你只要最新的,也不需要版本管理吧

  • 主 資深大佬 : JCZ2MkKb5S8ZX9pq

    submodule 的确有点麻烦,而且有些东西在根目录下面,切分起来也不大方便。

  • 資深大佬 : GreyYang

    比较复杂的项目可以参考 Android 的 Repo & Gerrit, 可以满足管理多个 git 仓的需求, 但是本身也引入了复杂度. https://source.android.com/setup/develop#repo

  • 資深大佬 : crz

    可以指定 git dir, 或者 work tree, 同一个目录对应多个 git dir,每个 git dir 分别设置 exclude

    缺点是 exclude 每个客户端都要设置

  • 資深大佬 : cmdOptionKana

    依赖和大文件本来就不应该用 git 吧?用别的备份方式就好了。

  • 資深大佬 : bog

    你是需要 git lfs 吗

  • 資深大佬 : james122333

    硬派实现啊 写脚本差不多

  • 資深大佬 : SilentDepth

    除了 Git Submodule 还有更好的办法?

    麻烦的问题可以靠脚本和 Alias 解决

  • 資深大佬 : vevlins

    感觉你之所以分开同步只是因为文件太大懒得时刻保持同步,不想更新的时候就不 git add 不就得了嘛,需要的时候再 add + commit + push 。

    git submodules 有些大材小用了吧? 上的 lfs 还合理点,没用过,听说也有坑,我们公司做美术的还是习惯 svn 。

  • 資深大佬 : basstk

    同意 4 说的添加一个新的远程仓库,没测试过,应该可以

  • 主 資深大佬 : JCZ2MkKb5S8ZX9pq

    @vevlins

    也不完全是,因为 homeassistant 本身结构不像我的示例这么清晰。
    根目录下也有不少文件。这也是 submodule 不太方便的地方。

    一部分是我的设备和自动化等等的配置文件。这部分是改完就 git 。

    同时还有很多第三方插件,这个就类似 deps,比如第三方更新了,一般来说向下兼容,但偶尔也会出错。但这部分就希望跟我自己的配置分开 git 。因为更新时间不定,而且很杂,而且也都不是我的代码。

    另外还有它运行中自己的 sqlite 和其它一些 log 之类的东西。

    这些部分混在一起。我目前是主要备份自己写的代码,其它 ignore 。
    偶尔 homeassistant 版本升级之类的,大都能兼容。但万一不兼容,有时候懒得搞就想直接回退或者比较一下差异啥的,就想要个 git,但是希望和自己写的部分能区分开。

    —

    另外比如自己的网站,其实也差不多,外部依赖的 js 我会分版本存一份。万一不兼容,老项目就直接指到老版本了。但那个结构比较清晰,所有第三方 js 单独丢一个目录,备份起来也就还好。实在不行还有外部 cdn 之类的。

    —

    美术的确是 svn 好点。最终用图 svn,源文件定期手动硬盘备份。

  • 資深大佬 : wangyzj

    写一个 shell
    每个月第一天手动 add 一下

  • 資深大佬 : 27

    本项目 ignore deps 文件夹
    把文件夹 ln -s 或用 crontab 定时复制到另一个 git repo

  • 資深大佬 : msg7086

    git 可以干但是这种场景似乎不是 git 该干的活。最好还是单独做备份工作。

  • 資深大佬 : reus

    临时删掉.gitignore 文件不就行了,提交之后再放回去。

  • 資深大佬 : no1xsyzy

    @reus #20 我楞是没明白你这工作流是什么样的……
    在同一个 branch 里?就算 ignore 了,commit -a 或者 add . 都是会添加曾经 commit 过的文件的。

  • 資深大佬 : xingheng

    submodule 不行的话,还可以 subtree 嘛

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具