1. 程式人生 > >git合併兩個倉庫

git合併兩個倉庫

首先去了解git,然後安裝,然後熟悉基本使用命令和基本操作

接下來合併兩個倉庫:

思路:根據合併分支,可以將一個庫作為另一個庫的分支然後合併:

方法介紹

Git可以合併兩個分支,那麼合併兩個倉庫的方法就是將要合併的倉庫A作為另一個倉庫B的分支,然後去合併分支即可。

詳細方法

下面列舉一個例子:

有兩個倉庫new 和 old (這兩個倉庫同屬於一個目錄),new的分支master,old的分支也是master。

現在的目的是將old庫合併到new的倉庫:

1.進入new倉庫

cd new

2.將old倉庫作為new的遠端倉庫

git remote add other ../old  (other是別名 如果old不是在同一個目錄下可以自己寫目錄)

 3.拉取other

git fetch other

4.建立分支並進入

git checkout -b oldbr other/master

 5.切換到new的master的master分支

git checkout master

6.合併oldbr的分支

git merge oldbr

7.新增到快取區(index)

git add .

git status -s

看看是不是有修改

刪除所建立的遠端倉庫和分支(不需要刪除的話可以省略)

git remote -v  看看有什麼遠端

git remote rm other 刪除遠端other的倉庫

git branch 檢視分支

git branch -d older 刪除分支為older的分支

 合併不同目錄的相同檔案

場景:當我們的包名叫的不一樣但是檔案又是一樣的現在想合併使用這樣的方法

注意:在使用下面的other和分支older的時候上面的如果沒有刪除你需要起其他的別名我是刪了上面方法中的別名的

同樣還是以上面的old和new為例,在這兩個倉庫中有兩個資料夾,

old\com.gl.courtbanklink.ui\src\com\gl\dn

new\com.gl.courtbanklink.ui\src\com\gl\courtbanklink

在dn和courtbanklink的檔案下有相同的目錄和檔案現在合併這倆個資料夾

如果使用上面的方法就會造成不一樣的資料夾下面的檔案會刪除,所以我們需要其他的方法

就是將兩個目錄分別作為倉庫去合併,作為倉庫合併的方法和上面的方法一樣:

先建立兩個目錄為倉庫

cd old\com.gl.courtbanklink.ui\src\com\gl\

git init dn

cd new\com.gl.courtbanklink.ui\src\com\gl\

git init courtbanklink

然後分別將檔案進行提交方法是一樣的以一個為例:

git add .

git status -s  看看狀態  全部為新增

git commit -am ‘備註自己寫’

同理另一個資料夾也這樣做

然後就是使用兩個庫合併的方法進行了:

git remote add other ../../../../../../../old/com.gl.courtbanklink.ui/src/com/gl/dn/

將另一個倉庫作為遠端庫

然後

git fetch other

git checkout -b older other/master

git checkout master

git merge older  (可能會報錯:fatal: refusing to merge unrelated histories)解決方法:git merge older --allow-unrelated-histories 即可合併

git add .  告訴git我合併完了

git status -s  看看狀態是不是有新增的和修改的

git commit -am ‘合併不同目錄下相同檔案成功!’

彆著急,因為這是new倉庫下的子倉庫,回到new下,看看狀態是不是有了新的提交的

git status -s

一看是有了新的需要提交的檔案了,這就是合併了子資料夾的原因,然後執行提交

git add .

git commit -am ‘提交合並子資料夾’

這樣就成功了

**你剛才子目錄倉庫的提交不需要推送到遠端庫的因為他也沒有遠端庫所以可以將你的檔案刪除但是又不刪除工作區的,

git rm -r --cached <file夾>

接下來看看你的檔案是不是有衝突的,然後手動解決保留的版本然後再次提交更新遠端倉庫即可。