qfdk
26.34D
0.15D
V2EX  ›  问与答

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

  •  
  •   qfdk ·
    PRO
    · Feb 23, 2018 · 5377 views
    This topic created in 3026 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

    gitlab 自带的镜像功能需要付费解锁,不过也有免费的方案
    https://github.com/samrocketman/gitlab-mirrors
    badcode
        18
    badcode  
       Feb 24, 2018 via iPhone
    记得有本地双提交的操作
    badcode
        19
    badcode  
       Feb 24, 2018 via iPhone
    手快,没看好,抱歉
    lzjqsdd
        20
    lzjqsdd  
       Feb 24, 2018 via Android
    添加 remote,默认 remote 是 origin,平常我们都是 git push origin master,可以加一个 origin2,push 的时候用 origin2
    billchenchina
        21
    billchenchina  
       Feb 24, 2018 via Android
    @qfdk 我再明确下需求,是两个不同的 git 仓库吧?如果是的话按 #1 做,webhook 端两个本地仓库,分别有不同的上游,git config 的设定设为仅当前仓库有效(而非全局),即可解决。
    billchenchina
        22
    billchenchina  
       Feb 24, 2018 via Android
    如果有内网需求的话可以做成 cron 定时任务,每天几次尝试 pull & push
    qfdk
        23
    qfdk  
    OP
    PRO
       Feb 24, 2018
    @billchenchina 对的两个不同 的仓库,一个是公共的 github 一个是内部的内网仓库,两个账号 id 都不一样
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2882 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 00:28 · PVG 08:28 · LAX 17:28 · JFK 20:28
    ♥ Do have faith in what you're doing.