qfdk
26.34D
0.15D
V2EX  ›  问与答

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

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

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