V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qfdk
V2EX  ›  问与答

如何优雅的把 GitHub 上的代码 push 到 gitlab 上?

  •  
  •   qfdk · 2018-02-23 23:54:33 +08:00 · 4964 次点击
    这是一个创建于 2498 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在碰到了一个这样的问题。

    有一部分代码是自己 GitHub 上 平常开发的玩具,每天都会更新,更新希望提交到公司的 gitlab 上。

    现在的方法是 下载自己的代码 然后复制到公司的 repo 然后重新 commit 到 Gitlab 上

    不知道有没有好的方法 自动拉取 github 的代码并更新呢?

    尝试了导入 GitHub 的 api key 似乎不管用

    23 条回复    2018-02-24 15:45:11 +08:00
    billchenchina
        1
    billchenchina  
       2018-02-24 00:08:25 +08:00 via Android   ❤️ 2
    在 github 侧加一个 webhook,webhook 段做你想做的事
    qfdk
        2
    qfdk  
    OP
       2018-02-24 00:16:12 +08:00
    @billchenchina #1 具体要是 push 到 gitlab 是另一个账号 这里不会冲突么 repo 是内网的地址
    mason961125
        3
    mason961125  
       2018-02-24 00:17:32 +08:00
    py 写个脚本似乎还行吧
    whileFalse
        4
    whileFalse  
       2018-02-24 00:25:27 +08:00 via iPhone
    加个 remote
    qfdk
        5
    qfdk  
    OP
       2018-02-24 00:28:42 +08:00 via iPhone
    @whileFalse #4 默认 remote 不就是 github 地址了么?也就是说我还可以➕一个 gitlab 的 remote ?
    huiyifyj
        6
    huiyifyj  
       2018-02-24 00:33:16 +08:00 via Android   ❤️ 1
    @qfdk #5 对的,添加个 remote,由于 github 是原本的 remote,默认名是 origin,你只需要把 gitlab 远程 remote 名命名为 gitlab,你就可以 git push gitlab(git push 默认推送至默认的远程,也就是 origin)
    qfdk
        7
    qfdk  
    OP
       2018-02-24 00:35:55 +08:00 via iPhone
    @whileFalse #4 谷歌了下是可以这样 但是 gitlab 是在内网 家里无法连接内网
    qfdk
        8
    qfdk  
    OP
       2018-02-24 00:39:25 +08:00 via iPhone
    @huiyifyj #6 但是 gitlab 那边是个内网 不知道有啥好办法不 用个 Jenkins 按照一楼 webhook 然后 bash 进行 push ? 那么问题又来了 两个地方账号不一样 commit 后作者会变了吧?
    huiyifyj
        9
    huiyifyj  
       2018-02-24 00:42:07 +08:00 via Android
    内网也有办法啊,把自己公司(内网)里自己办公电脑达成一个小型 git 服务器,然后用自己家电脑里把 github 代码 push 到自己公司办公电脑,然后办公电脑 push 到公司内网。(当然,如果办公用的电脑只内网没连外网当我没说)
    msg7086
        10
    msg7086  
       2018-02-24 00:44:02 +08:00
    作者信息是 commit 的一部分。
    huiyifyj
        11
    huiyifyj  
       2018-02-24 00:48:07 +08:00 via Android   ❤️ 1
    @qfdk #8 如果你提交 GitHub 的 commit 是用 ssh 密钥方式提交,如果你保证自己在提交 GitHub 和公司的 gitlab 里提交的 git 配置是 git config -g …的用户名和邮箱一样。那么他会视为一个相同作者的。
    qfdk
        12
    qfdk  
    OP
       2018-02-24 00:51:27 +08:00 via iPhone
    @huiyifyj #11 GitHub 和 公司两个完全不同的名字 git conf -g 都不一样 有办法么?
    huiyifyj
        13
    huiyifyj  
       2018-02-24 01:00:36 +08:00 via Android
    @qfdk 如果连当时设置的邮箱都不一样的话,那么估计是视为不同作者了。ssh key 方式提交的话,好像如果公钥明文的显示在最后的邮箱一样就(这我也不太清楚)可能视为同一作者。
    huiyifyj
        14
    huiyifyj  
       2018-02-24 01:02:41 +08:00 via Android
    @qfdk 不知道你提交 commit 到 github 是什么方式,登录还是 ssh key ?或者 gpg key ?
    qfdk
        15
    qfdk  
    OP
       2018-02-24 01:07:00 +08:00 via iPhone
    @huiyifyj #14 github 是 ssh key 另个 gitlab 不是
    huiyifyj
        16
    huiyifyj  
       2018-02-24 01:09:27 +08:00 via Android
    @qfdk 这样的话,加上用户名邮箱当时 git config 不一样,那估计是视为不同作者咯。🙃
    alvinbone88
        17
    alvinbone88  
       2018-02-24 02:12:35 +08:00   ❤️ 1
    可以用 gitlab 的 Repository mirroring 功能把项目定时同步过来,接下来改 commit 信息和自动提交可以用 webhook 解决

    gitlab 自带的镜像功能需要付费解锁,不过也有免费的方案
    https://github.com/samrocketman/gitlab-mirrors
    badcode
        18
    badcode  
       2018-02-24 08:04:53 +08:00 via iPhone
    记得有本地双提交的操作
    badcode
        19
    badcode  
       2018-02-24 08:05:31 +08:00 via iPhone
    手快,没看好,抱歉
    lzjqsdd
        20
    lzjqsdd  
       2018-02-24 10:13:14 +08:00 via Android
    添加 remote,默认 remote 是 origin,平常我们都是 git push origin master,可以加一个 origin2,push 的时候用 origin2
    billchenchina
        21
    billchenchina  
       2018-02-24 10:44:14 +08:00 via Android
    @qfdk 我再明确下需求,是两个不同的 git 仓库吧?如果是的话按 #1 做,webhook 端两个本地仓库,分别有不同的上游,git config 的设定设为仅当前仓库有效(而非全局),即可解决。
    billchenchina
        22
    billchenchina  
       2018-02-24 10:45:09 +08:00 via Android
    如果有内网需求的话可以做成 cron 定时任务,每天几次尝试 pull & push
    qfdk
        23
    qfdk  
    OP
       2018-02-24 15:45:11 +08:00
    @billchenchina 对的两个不同 的仓库,一个是公共的 github 一个是内部的内网仓库,两个账号 id 都不一样
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5354 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 08:16 · PVG 16:16 · LAX 00:16 · JFK 03:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.