git push 的符號筆有什么用_如何同步多個 git 遠程倉庫

點擊上方“后端技術精選”,選擇“置頂公眾號”

技術文章第一時間送達!

作者:taadis

my.oschina.net/taadis/blog/3073220

題外話,開發中遇到問題或者學習新技術時缺少交流環境,可以點擊加入【后端技術交流群

日常需求

以前源碼是托管在 github 的, 現在想要同步托管在 gitee, 一做備份分發, 二方便國內下載使用(網速可觀), 三防止被墻…

方式一 使用 gitee 的強制同步

之前在 github 托管了這么一個項目 mirrors-in-china, 后來國內出了 gitee, 那么想著把項目同步一份到 gitee, 方便大家查看… 正巧 gitee 提供強制同步功能, 方便操作…

75936e8341c7b53f4232bac50e4b7fac.png

我還是只用維護 github 那份源碼, gitee 這邊沒忘記的話, 手搓點擊下強制同步按鈕即可.

但是容易忘記, 造成兩邊不完全同步.

不過我這個項目本身就非常簡單, 這點同步時差完全沒大問題, 夠用, 并且沒有其他任何多余的操作.

方式二 手搓 push 多次

換另一個項目來說, 我之前在 github 托管了這么一個項目 GlobalScanner.Sdk, 應廣大小伙伴需求, 希望把項目在國內同步一份, 方便下載/參考/使用.

那么不外乎就是配置多個遠程庫地址, 多次推送咯, 那么我們先來看看現有遠程庫的情況:

$?git?remote?--verbose
origin??git@github.com:taadis/GlobalScanner.Sdk.git?(fetch)
origin??git@github.com:taadis/GlobalScanner.Sdk.git?(push)

可以看到目前僅有 git@github.com:taadis/GlobalScanner.Sdk.git 這個遠程庫地址.

我們來加一個 gitee 的遠程地址, 首先在 gitee 建好同步倉庫, 然后我們在本地添加一個新的遠程庫地址:

$?git?remote?add?giteeorigin?git@gitee.com:taadis/GlobalScanner.Sdk.git

添加完成后我們查看一下:

$?git?remote?--verbose
giteeorigin?????git@gitee.com:taadis/GlobalScanner.Sdk.git?(fetch)
giteeorigin?????git@gitee.com:taadis/GlobalScanner.Sdk.git?(push)
origin??git@github.com:taadis/GlobalScanner.Sdk.git?(fetch)
origin??git@github.com:taadis/GlobalScanner.Sdk.git?(push)

可以查看到以下2個遠程庫地址:

  • giteeorigin: 是我們新加的 gitee 的遠程庫地址

  • origin: 是我們之前在 github 的遠程庫地址

接下來同步:

git?add?.
git?commit?-m?"add?gitee"
git?push?-u?origin?master
git?push?-u?giteeorigin?master

有鏈接有真相:

github:

https://github.com/taadis/GlobalScanner.Sdk/commit/da00f0584c5a2699bb621e99a00fe15dece33d38

gitee:

https://gitee.com/taadis/GlobalScanner.Sdk/commit/da00f0584c5a2699bb621e99a00fe15dece33d38

比之前多個一次 git push 操作…其他和之前沒有太大區別…沒有更多的心智負擔.

但是經常容易忘記…

方式三 最多跑一次

不想著法偷懶的 coder 不是好程序員, 秉承 "最多跑一次" 的理念, 讓我們試試怎么一次 push 統統搞定.

在本地 git 倉庫里找到這個文件 .git/config, 內容如下:

[core]
????repositoryformatversion?=?0
????filemode?=?false
????bare?=?false
????logallrefupdates?=?true
????symlinks?=?false
????ignorecase?=?true
[remote?"origin"]
????url?=?git@github.com:taadis/GlobalScanner.Sdk.git
????fetch?=?+refs/heads/*:refs/remotes/origin/*
[branch?"master"]
????remote?=?origin
????merge?=?refs/heads/master
[remote?"giteeorigin"]
????url?=?git@gitee.com:taadis/GlobalScanner.Sdk.git
????fetch?=?+refs/heads/*:refs/remotes/giteeorigin/*

改為如下:

合并2個 remote 配置

[core]
????repositoryformatversion?=?0
????filemode?=?false
????bare?=?false
????logallrefupdates?=?true
????symlinks?=?false
????ignorecase?=?true
[remote?"origin"]
????url?=?git@github.com:taadis/GlobalScanner.Sdk.git
????url?=?git@gitee.com:taadis/GlobalScanner.Sdk.git
????fetch?=?+refs/heads/*:refs/remotes/origin/*
[branch?"master"]
????remote?=?origin
????merge?=?refs/heads/master

上面這個手動配置是為了更好的說明而已, 其實可以用以下命令簡化操作, 在 origin 節點下補充了一個新的遠程地址.

$?git?remote?set-url?--add?origin?git@gitee.com:taadis/GlobalScanner.Sdk.git

看看補充后的遠程地址情況

git?remote?--verbose
origin??git@github.com:taadis/GlobalScanner.Sdk.git?(fetch)
origin??git@github.com:taadis/GlobalScanner.Sdk.git?(push)
origin??git@gitee.com:taadis/GlobalScanner.Sdk.git?(push)

注意看后面的 (fetch)(push), 相信你會明白點什么.

然后我們可以繼續這樣使用來實現 github & gitee 的同步推送和分發:

git?add?.
git?commit?-m?"github?&?gitee?同步推送和分發"
git?push?origin?master

有鏈接有真相:

github:

https://github.com/taadis/GlobalScanner.Sdk/commit/6846226ff2be56ed0f58c9345bac4a0170f1880f

gitee:

https://gitee.com/taadis/GlobalScanner.Sdk/commit/6846226ff2be56ed0f58c9345bac4a0170f1880f

可以看到, 使用上和最初沒有任何區別, 只是多配置了一次, 算是實現了 "最多配(跑)一次".

總而言之

幾種方式, 各取所需咯.

(點擊即可跳轉閱讀)

1.?SpringBoot內容聚合

2.?面試題內容聚合

3.?設計模式內容聚合

4.?排序算法內容聚合

5.?多線程內容聚合

6.?7個IntelliJ IDEA必備插件,提高編碼效率

7.?IntelliJ IDEA 從入門到上癮教程,2019圖文版!

看到這里了,關注一個?

4339500b2a5a433ca423d59922ea14c5.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372954.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372954.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372954.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java EE重新審視設計模式:觀察者

除了以多種語言和許多應用程序實現之外,Observer Pattern自1.0版以來一直是Java的一部分。 觀察者模式也是好萊塢原則的良好實施。 就像好萊塢的特工喜歡回調候選人以代替某個職位,而不是每天被要求詢問可用工作一樣,大多數服務器端資源&…

POI搜索簡介

用戶輸入——用戶輸出-----------------------------------------------------------而POI搜索引擎,需要做的就是拿到輸入條件,給出用戶比較滿意的結果。用戶角度:輸入:盡量簡單,且符合心意輸入時的假設:假…

2、Spring的 IoC詳解(第一個Spring程序)

Spring是為了解決企業應用開發的復雜性而創建的一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。在這句話中重點有兩個,一個是IoC,另一個是AOP。今天我們講第一個IoC。 一. IoC理論的背景 我們都知道…

排除服務器簡單系統故障方法,引導CD排除服務器故障方法有哪些?

盡管Linux系統以穩定可靠著稱,但由于硬件問題有時仍會崩潰/或無法引。針對這一問題,最好的解決辦法就是使用Linux系統引導CD。為了方便讀者,筆者在下面列出了安裝Red Hat Linux 8。0的最必須步驟。為安裝過程作筆記在Red Hat Linux系統典型安…

js 獲取father_(原創)Node.JS實戰26:強大的工作池。收藏吧!你一定會用的到。...

在實際項目中,如果遇到需要大計算量的操作,按需fork(分叉)其實不是一個好的選擇。因為fork的子進程也是V8(NodeJS的核心引擎)的新實例,每創建一個新實例,需要約30毫秒啟動時間&#…

具有ReadWriteLock的Java并發

編寫多線程Java應用程序并不是小菜一碟。 必須格外小心,因為同步不良會使您的應用程序一s不振。 JVM堆由所有線程共享。 如果多個線程需要同時使用相同的對象或靜態類變量,則必須謹慎管理對共享數據的線程訪問。 從1.5版開始,JSDK中包含了在并…

修復steam服務器失敗,steam服務器鏈接失敗

steam服務器鏈接失敗 內容精選換一換當NTP服務器異常時產生該告警。當NTP服務器異常消除時,該告警恢復。主OMS節點配置的NTP服務器異常,可能會導致主OMS節點與外部服務器不能同步時間,集群時間可能會產生飄移。NTP服務器網絡異常。與NTP服務器…

qemu-kvm簡單使用

qemu-kvm主要有以下幾個選項: -snapshot: 創建快照-m: 指定內存大小-smp: 指定處理器個數-cpu: 指定CPU類型-name: 設置虛擬機名稱-vnc: 使用vnc連接-boot: 指定啟動相關的選項-net: 指定網卡相關的選項-drive: 指定硬盤/光盤相關的選項qemu-kvm -m 128 -name first -smp 2 -dr…

將jar添加到發布目錄_第32批免購置稅新能源車型目錄發布;通用BEV3平臺將入華...

1、第32批免購置稅新能源車型目錄發布,幾何X/理想ONE等283款車型入選6月2日,工信部發布《免征車輛購置稅的新能源汽車車型目錄(第三十二批)》,共有283款新能源車型入選。其中新能源乘用車方面包括,一汽大眾Q2L/e-BORA、東風風神E7…

HPROF –內存泄漏分析教程

本文將為您提供有關如何通過生成和分析Sun HotSpot JVM HPROF堆轉儲文件來分析JVM內存泄漏問題的教程。 一個現實的案例研究將用于此目的:Weblogic 9.2內存泄漏影響Weblogic Admin服務器。 環境規格 Java EE服務器:Oracle Weblogic Server 9.2 MP1 中…

mq服務器與客戶端消息同步,使用 ActiveMQ 實現JMS 異步調用

目錄簡介服務之間的同步調用,可以使用 HTTP 或 RPC 來完成,但并非所有的調用都需要同步,有些場景下,當客戶端調用服務端時,并不需要等待服務端做出響應,此時就應該使用異步調用。異步調用的常用方式是基于 …

多個數字數組_七個問題幫助初學者深入理解Java數組

短文漲姿勢,看了不白看,不關注等啥?幾乎所有的高級語言當中,都提供了一種叫做”數組”的東西,Java語言當然也不例外。我們通過數組可以很方便的存儲和管理一組數據。因為在Java語言當中使用數組非常的方便,…

java 異常練習題1

建立exception包,建立Bank類,類中有變量double balance表示存款,Bank類的構造方法能增加存款,Bank類中有取款的發方法withDrawal(double dAmount),當取款的數額大于存款時,拋出InsufficientFundsException,取款數額為負數,拋出Nag…

大話設計模式讀書筆記--6.原型模式

簡單的復制粘貼極有可能造成重復代碼的災難, 但是java中提供了克隆的功能, 如果一個對象創建過程復雜,又要頻繁使用, 在初始化信息不發生變化的情況下,應當采取克隆而不是new一個對象 定義 原型模式: 用原型實例指定創建對象的種類,并且通過拷貝這些原型創建新的對象 也就是說,…

Java 7#8:測試臺上的NIO.2文件通道

關于新JDK 7功能的另一篇博客文章。 這次我正在寫有關新的AnsynchronousFileChannel類的文章。 我將在兩周內深入分析新的JDK 7功能,并決定連續編號我的帖子。 只是為了確保我不會感到困惑:-)這是我關于Java 7的第七篇文章(我承認–碰巧–這也…

5頁面title樣式修改_認識html:實現網站頁面是這么簡單的一回事

互聯網時代人們通過上網瀏覽信息,打開瀏覽器上網看到豐富的圖文、視頻、音樂等多媒體信息,一系列信息反饋和視覺沖擊之后,您有沒有想過,互聯網這么發達的時代,您覺得花一點點時間學會做個網站頁面不真香?概…

iOS指南針

前言: 這個小項目使用到了CoreLocation框架里面的設備朝向功能,對CoreLocation感興趣的可以翻一下之前的文章 在另一個博客站有朋友發現一個尷尬的問題(圖片的東西2個方向是不對的),原諒我的大意,趕時間就直…

OSGI –模塊化您的應用程序

由于我是模塊化,低耦合,高凝聚力等的大力擁護者,所以…… 我相信這項技術是我們使用Java平臺創建應用程序的突破。 使用OSGi,創建高度可擴展的應用程序非常簡單,例如參見Eclipse IDE。 我的目的不是要深入展示該技術的…

jq的鏈式調用.end();

jq的鏈式調用.end(); 先上code <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>li{list-style: none;width: 100px;height:20px;border:1px solid #ff0000;display: …

三、自定義視圖、視圖控制器

1.自定義視圖 自定義視圖&#xff1a;系統標準UI之外&#xff0c;自己組合而出的新的視圖。在實際開發中&#xff0c;我們經常需要自己定義視圖&#xff0c;積累自己的代碼庫。自己封裝的視圖&#xff0c;能像系統提供的UI控件一樣用于多個項目中&#xff0c;這樣可以提高我們的…