`

将项目提交到两个git仓库(github和oschina)

    博客分类:
  • git
阅读更多

我有 feilong-core 项目,原先只托管源码在 github ,应红薯老大的再三邀请(不要脸的害羞中~~), 最近开始也同步托管在 码云

1. 问题

那问题来了,当我项目文件有修改的时候, 有没有办法 一次提交到两个仓库 ?

  • 命令行如何实现?
  • 如果是eclipse 里面提交又该怎么配置?

2. 方案一: git remote add 方案

目标很明确, 并且也有 朋友 @路小磊 的指点 Git push到多个远程库

顺着思路,我也来尝试, 并且尝试的时候就使用 fork 的项目做测试(玩坏了也不心疼~~)

2.1 命令行

2.1.1 查看

听说可以使用 git remote 命令(你也可以移步见帮助文档)

我们先使用 git remote 看看现在项目git 远程主机情况

java-sdk git:(master)git remote
origin

再使用 git remote -v 看看

➜  java-sdk git:(master) ✗ git remote -v
origin    https://github.com/venusdrogon/java-sdk.git (fetch)
origin    https://github.com/venusdrogon/java-sdk.git (push)

表示,当前只有一台远程主机,叫做origin,以及它的网址

2.1.2 添加

那么,我使用 git remote add 添加一个远程主机

git remote add oschina https://git.oschina.net/ifeilong/java-sdk.git

再来看看 远程主机信息

➜  java-sdk git:(master) ✗ git remote -v
origin    https://github.com/venusdrogon/java-sdk.git (fetch)
origin    https://github.com/venusdrogon/java-sdk.git (push)
oschina    https://git.oschina.net/ifeilong/java-sdk.git (fetch)
oschina    https://git.oschina.net/ifeilong/java-sdk.git (push)

可以看到已经加进去了

2.1.3 提交

那么怎么提交呢?

随便修改个文件,并 commit

➜  java-sdk git:(master) ✗ git add .
➜  java-sdk git:(master) ✗ git commit -m 'test'
[master c1b96a0] test
 1 file changed, 2 insertions(+)

2.1.4 推送到远程主机

使用 git push 推送到 github 仓库

➜  java-sdk git:(master) git push -u origin master
Counting objects: 10, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (10/10), 964 bytes | 0 bytes/s, done.
Total 10 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 1 local object.
To https://github.com/venusdrogon/java-sdk.git
   ffa5dc5..c1b96a0  master -> master
Branch master set up to track remote branch master from origin.

再推送到 oschina 仓库

➜  java-sdk git:(master) git push -u oschina master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 275 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To https://git.oschina.net/ifeilong/java-sdk.git
   353a92d..c1b96a0  master -> master
Branch master set up to track remote branch master from oschina.

校验下 两个仓库里面的数据, 都是最新的

大功告成,亲个小嘴儿~~

2.2 eclipse 操作

上面脚本要git push 两次才能完成push到两个库,可行,就是麻烦一点

那么eclipse 此时直接使用 egit 插件提交代码会出现什么情况?

图1- 修改文件

1

图2- 提交

2

图3- 结果

3

可以看到使用eclipse 此时提交只提交到 最后的一个仓库, 不是我想要的效果

3. 方案二: git remote set-url 方案

一招不行,那就再换一招,参考 git 给远程库 添加多个url地址 ,使用 git remote set-url 方案

3.1 命令行

3.1.1 remote 移除 oschina

我们先把上面 加的 oschina 仓库去除,使用 git remote rm oschina

➜  java-sdk git:(master) git remote -v
origin    https://github.com/venusdrogon/java-sdk.git (fetch)
origin    https://github.com/venusdrogon/java-sdk.git (push)
oschina    https://git.oschina.net/ifeilong/java-sdk.git (fetch)
oschina    https://git.oschina.net/ifeilong/java-sdk.git (push)

➜  java-sdk git:(master) git remote rm oschina
warning: more than one branch.master.remote

➜  java-sdk git:(master) git remote -v
origin    https://github.com/venusdrogon/java-sdk.git (fetch)
origin    https://github.com/venusdrogon/java-sdk.git (push)

3.1.2 使用 git remote set-url 命令

(你也可以移步见帮助文档)

这时我来git 给远程库 添加多个url地址

试试 git的一个远程库 可以对应多个地址,即我能让远程库origin拥有多个url地址

➜  java-sdk git:(master) git remote set-url --add origin https://git.oschina.net/ifeilong/java-sdk.git

➜  java-sdk git:(master) git remote -v
origin    https://github.com/venusdrogon/java-sdk.git (fetch)
origin    https://github.com/venusdrogon/java-sdk.git (push)
origin    https://git.oschina.net/ifeilong/java-sdk.git (push)

可以看到 origin 有两个 push 远程路径

3.1.3 push

那么随便修改下文件,并提交看看效果

使用 git push origin master

➜  java-sdk git:(master) git push origin master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 278 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/venusdrogon/java-sdk.git
   12aa87a..493354d  master -> master

Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 278 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To https://git.oschina.net/ifeilong/java-sdk.git
   12aa87a..493354d  master -> master

可以从log 里面看到 提交到了 两个仓库, 并从仓库页面校验是ok的

大功又告成,再亲个小嘴儿~~

3.2 eclipse 操作

那么eclipse 此时直接使用 egit 插件提交代码会出现什么情况?

图2- 提交

2

图4- 结果

4

可以看到使用eclipse 此时提交 提交到 2个仓库, 这就是我想要的

完美

timg

4. 总结

这么一来,我的feilong-core 项目,也就一行 git 命令的事情

➜  java-sdk git:(master) git remote set-url --add origin https://git.oschina.net/ifeilong/feilong-core.git

5. 感悟

  • just do it~~
  • 纸上得来终觉浅,绝知此事要躬行

6. 参考

1
0
分享到:
评论

相关推荐

    玩转git与github.pptx

    - **推送更改**:通过`git push origin master`命令将本地提交推送到远程仓库的相应分支。 - **拉取更改**: - 使用`git fetch`命令获取远程仓库的最新提交。 - 使用`git diff master origin/master`比较本地与...

    oschina_git_java 开源项目

    综上所述,【oschina_git_java 开源项目】旨在帮助开发者掌握Git和Java的结合使用,提供了一个开源的环境来学习这两个工具的集成应用。通过参与这样的项目,开发者可以提升自己的版本控制能力和Java编程技能,同时...

    git零基础实战

    - 远程仓库托管服务:GitHub、OSChina等。 - 本地Git服务器搭建方法。 - **课程目标** - 熟练掌握30个常用的Git命令。 - 理解Git的内部原理。 - 熟悉企业版本控制流程。 - 能够使用Git跟踪开源项目、与他人...

    git 客户端安装包

    开发者可以通过这两个平台创建项目,链接到他们的Git仓库,邀请他人协作,或参与其他开源项目。 安装Git客户端的过程如下: 1. 访问Git官方网站(https://git-scm.com/)或开源中国、GitHub提供的下载页面,根据...

    git内部培训教程

    这意味着开发人员可以在本地提交更改,然后选择性地将这些更改推送到其他仓库或从其他仓库拉取更改。 #### Git基本概念 - **Git**是一种免费开源的分布式版本控制系统。 - 特点: - 高效快速,易于使用。 - 支持...

    git最全笔记整理,git入门必备

    Git 的核心优势在于它能够高效地处理从小型到非常大型的项目版本管理问题。 #### 二、Git 的安装 - **Windows 环境**: - 访问 [https://git-for-windows.github.io/](https://git-for-windows.github.io/) 下载 ...

    git详细使用指南

    1. **初始化仓库**:在本地创建一个新目录作为项目存放位置,并通过`git init`命令将其初始化为Git仓库。 ```shell mkdir test cd test git init ``` 2. **添加文件**:将项目文件添加到Git仓库中,以便后续...

    git 实用命令大全

    此命令会将远程仓库的所有内容复制到本地的一个新目录中。 6. **`git pull testpro master`** - 下载远程仓库中的最新更改并合并到当前分支。这里`testpro`指的是远程仓库的名字,`master`指代分支名称。 7. *...

    IDEA中SVN、Git的配置

    - 使用`Push`选项将更改推送到远程仓库。 8. **GitHub使用流程:** - 登录GitHub账户。 - 创建新的仓库。 - 设置仓库基本信息。 - 在仓库设置中添加SSH密钥。 - 使用命令行工具或IDEA进行仓库克隆、提交等...

    VSS迁移到Git的Debug版

    Vss2Git is a Windows GUI application that exports all or parts of an existing Microsoft Visual SourceSafe 6.0 (VSS) (Wikipedia) repository to a new Git repository. It attempts to construct meaningful ...

    Git常规学习

    - **远程仓库操作**: 与GitHub这样的在线代码托管平台配合使用时,可以使用`git clone`克隆远程仓库,`git push`推送本地更改到远程仓库,`git pull`拉取远程更改到本地仓库。 - **冲突解决**: 当多人协作时,可能会...

    Android git

    **Git快餐:Windows上的Git安装与配置** Git是一款分布式版本控制系统,被广泛应用于软件开发,尤其是在Android开发中。...通过熟悉这些工具和设置,你将能够更高效地管理和协作你的Android项目。

    【Git】之Git使用案例

    本文来自csdn,本文主要介绍一下Git在实际项目开发中的使用流程,包括克隆、暂...这里我是在OSChina的码云上创建了一个项目,命名为TestGit:这里需要强调的是,如果我们让我们的本地仓库连接远程仓库,就必须有一个SSH

    收集java学习资料和面试题包括git上好的项目

    - **简介**:两个流行的全文搜索引擎。 - **链接**:[http://lucene.apache.org/solr/](http://lucene.apache.org/solr/) [https://www.elastic.co/](https://www.elastic.co/) - **核心特性**: - 全文检索 - ...

    oschina 开源中国客户端

    6. **版本控制与协作**:项目源码的管理很可能使用了Git进行版本控制,通过GitHub或GitLab等平台进行代码托管,以便团队成员协作开发和提交代码。 7. **持续集成与部署**:为了确保代码质量,项目可能使用了Jenkins...

    git仓库管理常用快捷键文档

    注意仓库里不能有空文件夹,不能有多个.git文件): 1.注意推之前先拉取 git init 初始化下本地仓库 git remote add origin 仓库地址 关联远程库 git pull origin master 拉取分支名 git add 文件名 提交到暂存区 ...

    git.oschina.net:开源中国push 提醒工具 node.js

    总的来说,这个开源中国的Git push提醒工具利用了Node.js的灵活性和强大的生态系统,结合GitHub的Webhooks功能,实现了对Git仓库实时更新的监控和通知。对于开发者来说,这不仅提高了工作效率,也强化了团队间的沟通...

    git使用培训教程,包含各种常用git命令

    git原创培训教程,使用ppt的形式,参考了廖雪峰学习教程,主要分为三大类:git简介、git实战、git生态圈。git简介主要介绍svn和git的区别,git实战主要分为四个大块...git生态圈主要介绍oschina和github两大主流网站

    git-master:用于git文件树的Git Master扩展,支持GitHub,GitLab,Gitee,Gitea

    :male_sign_selector: 由制造English |安装产品特点Git文件树(GitHub && GitLab && Gitee && Gitea) 档案搜寻显示GitHub存储库大小和文件下载支持GitHub通知GitHub暗模式,也适用于gist 程式码片段浏览文件的历史...

Global site tag (gtag.js) - Google Analytics