在维护一些开源项目的时候,会遇到需要将代码提交到多个开源仓库,比如 Github/Gitlab/Gitee 等等,一般的做法是借助 GUI 工具配置多个远程仓库,例如 Sourcetree 里就是这样。
但是这样也并没有很方便,因为提交的时候需要分别提交,例如我配置了 2 个仓库,就需要提交 2 次,如果仓库比较多,重复性的操作就会比较多,而且容易出错,忘记提交了哪些仓库,哪些仓库还没提交。
其实有个更方便的方法可以解决这个问题,但有个前置要求,就是不同仓库的分支名必须相同。
确保分支名一致后,打开项目目录下的 .git/config
文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true [remote "origin"] url = https://gitee.com/eoner/gulp-automation.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master [remote "master"] url = http://192.168.1.15/1one/gulp-automation.git fetch = +refs/heads/*:refs/remotes/master/*
|
这份配置就是上面我举例的 git 仓库的配置,如果要一次提交到多个仓库,就只需要在 [remote "origin"]
里配置多个 url
即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| [core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true [remote "origin"] url = https://gitee.com/eoner/gulp-automation.git url = http://192.168.1.15/1one/gulp-automation.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master
|
是不是很简单?好叭,我承认我水了一篇,但这个需求对我来说确实挺需要的。因为有个开源项目不光需要在公司内网发布,还需要提交到 Gitee 。
原本提交 2 个仓库还可以接受,大不了多操作一遍。但最近我把它在 Github 上也开了一个仓库,这一下就需要提交到 3 个仓库了,这个重复的工作就变得有点烦人了,于是就打算把这个问题解决一下。
在解决这个问题的时候还想到一件事,其实看一个人是否有程序员思维,除了直接看代码外,从做事方式和流程也能看出来。就比如这次这事,如果我还在坚持手动重复提交 3 次的操作方式,或许我就不太适合干这一行了,毕竟程序员如果不会“偷懒”,怎么能算个合格的程序员呢。