V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
MasterCai
V2EX  ›  程序员

自建 git 服务器能否连接 github

  •  
  •   MasterCai · 2023-04-25 20:32:23 +08:00 · 4818 次点击
    这是一个创建于 607 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题是这样的:在一个局域网内有多台设备,我想在局域网内自建一个 git 服务器(这个用什么都无所谓),用于在局域网内统一同步和管理这些设备上的代码,这个很好实现。

    但是能不能让这个 git 服务器和 github 相连接,可以定期同步代码上去呢?

    目前用 gitlab 搭了一个,本地功能正常,但是无法上传 github ,有没有什么解决方案?(不用 gitlab 也可以)

    图片可能表达的更清晰一点:

    https://imgur.com/a/9PhyGxC

    第 1 条附言  ·  2023-04-26 11:50:47 +08:00
    gitlab 和 gitea 都尝试了一下,目前使用的是 gitea ,主要是因为:
    1. gitlab 内存占用太大,刚装起来就 7g ,不知道是不是因为通过 docker 安装的原因
    2. gitlab ce 版只能 push
    3. gitlab 功能太强,个人使用有点冗余

    现在是用 gitea 先从 github 上镜像一个仓库过来,然后再给它添加一个 push 设置,想实现双向自动同步,试用一段时间看看会不会出现冲突。
    29 条回复    2023-04-26 22:39:54 +08:00
    shunia
        1
    shunia  
       2023-04-25 20:37:04 +08:00   ❤️ 1
    gitea ,可设置自动同步至所有公共代码平台
    0o0O0o0O0o
        2
    0o0O0o0O0o  
       2023-04-25 20:39:50 +08:00 via iPhone
    你可以通过 git remote set-url --add origin <github> 来同时额外 push 到 Github
    IvanLi127
        3
    IvanLi127  
       2023-04-25 20:39:59 +08:00 via Android
    可以,楼上说得对,我现在就是本地 gitea ,定期推代码到 github 上。
    MasterCai
        4
    MasterCai  
    OP
       2023-04-25 20:42:34 +08:00 via iPhone
    @shunia 感谢,这个还真没了解过,去看一下
    @IvanLi127 感谢

    @0o0O0o0O0o 这个我知道,就是想用一个服务器集中管理
    debuggerx
        5
    debuggerx  
       2023-04-25 23:14:53 +08:00 via Android
    gitlab 有设置镜像的选项 所有提交都可以自动镜像到 gh
    Scirocco
        6
    Scirocco  
       2023-04-26 00:18:20 +08:00
    @debuggerx 这个好像是 EE 版本,免费的 CE 版不行
    tinyint00
        7
    tinyint00  
       2023-04-26 08:31:10 +08:00   ❤️ 1
    - 每个仓库建立一个脚本分支
    - 起一个服务用于定时调用
    - 服务定时 `rebase` 你需要同步的分支
    - 服务定时 推送 `rebase` 过来的分支到指定 git 平台

    本质上就是一个定时脚本能够解决。
    或者更极端点,用钩子去触发你的脚本。配置远程平台当成镜像
    skiy
        8
    skiy  
       2023-04-26 08:34:25 +08:00 via iPhone
    gitlab 仓库中的镜像设置可以设置“推”或“拉”
    NouveauNom
        9
    NouveauNom  
       2023-04-26 08:57:00 +08:00
    7L 说的对。用脚本。
    wjx0912
        10
    wjx0912  
       2023-04-26 08:58:56 +08:00   ❤️ 2
    脚本来了

    git clone --bare http:*//....(原始仓库地址)*

    cd project.git ( project 即为你的项目名称)

    git push --mirror http:*//...(目标仓库地址)*
    Sum0l
        11
    Sum0l  
       2023-04-26 09:28:23 +08:00
    楼上的脚本言简意赅,甚为实用
    artnowben
        12
    artnowben  
       2023-04-26 09:32:44 +08:00
    不如直接用 github ,或者 gitlab 吧;简单一点,让生活轻松一点。
    debuggerx
        13
    debuggerx  
       2023-04-26 10:15:09 +08:00
    @Scirocco https://docs.gitlab.com/ee/user/project/repository/mirror/push.html#set-up-a-push-mirror-from-gitlab-to-github

    我是直接用 pve 的 CT 模板装的 gitlab-ce ,这个功能一直好用的
    MasterCai
        14
    MasterCai  
    OP
       2023-04-26 10:32:30 +08:00
    @debuggerx
    @skiy ce 版本只能 push

    @tinyint00
    @wjx0912 这个方法有意思,学到了
    debuggerx
        15
    debuggerx  
       2023-04-26 10:42:15 +08:00
    @MasterCai 所以你需要的是 gitlab 定期同步来自 github 的提交?双向同步?

    如果是主用 gitlab ,github 只做备份用,测的 push mirror 完全就够了啊
    Scirocco
        16
    Scirocco  
       2023-04-26 11:09:42 +08:00
    @debuggerx 记错了记错了,确实是可以 push 的
    pota
        17
    pota  
       2023-04-26 11:37:29 +08:00
    之前是 gitea 配和 drone CI 自动同步的,现在发现 gitea 自带了😂 方便了很多
    28Sv0ngQfIE7Yloe
        18
    28Sv0ngQfIE7Yloe  
       2023-04-26 11:38:44 +08:00
    如果不想引入其他依赖,还是定时脚本来的简单
    MasterCai
        19
    MasterCai  
    OP
       2023-04-26 11:38:57 +08:00
    @debuggerx 是想实现双向同步,但是好像不行;目前用 gitlab 确实挺好的,但是内存占用太大了
    debuggerx
        20
    debuggerx  
       2023-04-26 11:46:03 +08:00
    @MasterCai gitlab 到 github 就是 mirror push 功能,github 到 gitlab 就用 action ,比如 https://github.com/pixta-dev/repository-mirroring-action

    这样不就双向同步了
    MasterCai
        21
    MasterCai  
    OP
       2023-04-26 11:52:07 +08:00
    @debuggerx 还可以这样,不过主要原因是 gitlab 太大了。。所以目前在用轻量的 gitea
    documentzhangx66
        22
    documentzhangx66  
       2023-04-26 12:47:57 +08:00
    为何不试试 gitlab ee 的 docker ?

    https://docs.gitlab.com/ee/install/docker.html
    documentzhangx66
        23
    documentzhangx66  
       2023-04-26 12:48:43 +08:00
    @MasterCai

    gitlab ee 的 docker 镜像, 不压缩 3G ,zstd 压缩后 1.3G ,大吗?
    BurYiA
        24
    BurYiA  
       2023-04-26 15:13:16 +08:00
    用 ci 功能去做?( github 的 Actions )
    每个项目写个配置,push 的时候自动同步到 github (说白了也是自动执行脚本)

    轻量的 git 可以看看 OneDev ,基本功能都有,可 docker 搭建
    MasterCai
        25
    MasterCai  
    OP
       2023-04-26 15:26:39 +08:00
    @documentzhangx66 gitlab ee 不是收费嘛

    @BurYiA 明白了
    documentzhangx66
        26
    documentzhangx66  
       2023-04-26 16:00:08 +08:00
    @MasterCai

    说是收费,但你先试试再说,反正 docker 版,试错没成本。
    LindsayZhou
        27
    LindsayZhou  
       2023-04-26 21:46:49 +08:00   ❤️ 1
    看起没人说。
    我自己的仓库的话,会自己加服务端的 post-receive 钩子脚本: https://git-scm.com/docs/githooks
    有上传的时候自动触发同步到 github

    我是手工管理 bare 仓库,走 ssh 上传,加 cgit 和 git-daemon 公开分享。
    这种方式非常轻量,写 hooks 也很方便。
    我最近还在 hooks 里,用 systemd-run 和 go-task 简单做了一个通用的 CI 。

    不想自己管理 bare 仓库的话,也有 Gitosis Gitolite 之类的东西,我没用过就不多说了。
    LindsayZhou
        28
    LindsayZhou  
       2023-04-26 21:49:01 +08:00   ❤️ 1
    @LindsayZhou #27
    说起来,前阵子有简单试过这个: https://github.com/charmbracelet/soft-serve
    挺漂亮的,也许可以看看。
    MasterCai
        29
    MasterCai  
    OP
       2023-04-26 22:39:54 +08:00 via iPhone
    现在发现问题了,gitea 好像不能同时设置 push 和 pull ,对于镜像迁移来的仓库无法进行 push 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3365 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:34 · PVG 19:34 · LAX 03:34 · JFK 06:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.