git如何更新到遠程fork倉庫?如何更換遠程倉庫地址?


 

前言

場景描述: 本地已經有一個從A項目部分拷貝之后生成的新項目B, 並且已經開始開發了新功能, 而A項目也在進行迭代更新.這時產品說要同步A項目的功能到B項目, 兩個項目都有了新的更新, 那怎么同步更新呢? 於是想到先fork然后同步, 這個過程有些曲折, 但問題總歸是能解決。

一.fork舊項目

1.在A項目選擇創建fork;
2.選擇存放到個人倉庫,配置新項目名稱;
3.有個選項是勾選Enable fork syncing決定之后是否跟隨更新。建議勾選。
 4.點擊確定之后就會進入到剛剛fork的倉庫C里面了,接下來就可以關聯到本地倉庫了。

分析: 在項目B本地倉庫關聯剛剛fork的遠程倉庫C時, 會發現關聯不上。原因是項目B已經有對應的遠程倉庫了。

這時可以有兩個選擇
1.再關聯一個遠程倉庫,即fork的遠程倉庫C; 2.修改本地倉庫B對應的遠程倉庫。

關聯多個遠程倉庫

關聯第一個遠程倉庫就不用多說了, 本文只講已經存在默認的origin倉庫時,如何關聯遠程倉庫?
方法1:

  1. git remote -v //查看遠程倉庫信息
  2. git remote add originFork  https://git.XXX.com/scm/qhlive/XXX.git(fork項目對應的倉庫地址) //關聯遠程倉庫originFork
復制代碼

方法2:
如果是sourceTree, 在右上角找到“設置” - “遠程倉庫”, 可以添加/移除關聯的遠程倉庫。

方法3:
再秀一點也可以直接編輯配置文件, 類似下面這樣。 配置文件就是項目下的.git文件,也可以在sourceTree的設置中找到。 

修改本地倉庫對應的遠程倉庫

方法1:

git remote -v  #查看遠端地址
git remote #查看遠端倉庫名
git remote set-url origin https://git.XXX.com/xx/xx.git (新地址)
復制代碼

方法2:重命名/刪除

  git remote rename origin old-origin
  或
  git remote rm origin
  git remote add origin [url](新地址)
復制代碼

方法3: 和上面一樣,更改配置文件。

fork倉庫如何與原倉庫同步更新?

用一張圖說明fork倉庫與原倉庫的關系

1.上游倉庫更新到本地倉庫

  git fetch originFork //拉取所有更新的分支
  git pull originFork branch_name (fork元倉庫中存在的分支並與本地倉庫分支對應)
復制代碼

這時可能會存在報錯:fatal: refusing to merge unrelated historie 這是因為兩個分支沒有取得關系。那么怎么解決呢? 在你操作命令后面加--allow-unrelated-histories

  git pull originFork branch_name --allow-unrelated-histories
復制代碼

tips: 如果是git merge 出現這個問題,也是在后面加-allow-unrelated-histories。

  git merge originFork branch_name --allow-unrelated-histories
復制代碼

2.更新到上游倉庫

假設項目B的origin遠程倉庫和fork的遠程倉庫都有一個分支feature/XXX, 你在該分支上進行開發,將本地修改commit后,每次push前按下面步驟進行,即可實現與上游原倉庫A進行同步更新。

  • (1)同步源倉庫的信息到本地
  git remote update feature/XXX
復制代碼
  • (2)將源倉庫的信息merge到本地分支:
  git checkout feature/XXX
  git rebase source_repository_name/feature/XXX
復制代碼
  • (3)git push 將最新同步的代碼和修改,提交到你的origin倉庫

  • (4) 提出Push Request,將修改提交到項目A的遠程倉庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM