2013-11-21 81 views
0

我有幾個本地git倉庫,這是邏輯上分離的項目。當每個項目完成後,我想讓整個存儲庫成爲「存檔」存儲庫的一個分支,以防將來出現錯誤。因爲最終每個存儲庫都將成爲歸檔存儲庫的一部分,所以我認爲我會從一開始就將每個存儲庫推送到歸檔存儲庫的遠程副本。你可以推動整個git倉庫到另一個(遠程)倉庫的分支

所以,我有不同的版本庫:存檔,A,B,......我想將它們推送到遠程,這將是這樣的:

archive -- A as a branch 
     \---B as a branch 

等。

我已經通過git的文檔搜索,並上了網,並具有以下別名想出了這樣做的:

backup = "!for br in $(git branch --column|sed 's/*//';); do git push archive ${br}:$(basename $PWD)/${br}; done" 

所以,現在,從A說,我可以這樣做:

git remote add archive ssh://[email protected]/.../archive.git 
git backup 

這會將A中的每個分支X都推送到遠程分支A/X上。不幸的是,A中的每個分支都是遠程存儲庫上的一個單獨的斷開連接的分支,所以我在A中失去了歷史,而這並不是我想要的。

有沒有辦法將A上的所有分支推送到遠程回購的單個分支(或者說是一棵樹)?或者我的整個方法被誤導了,還有更好的方法來做到這一點?

乾杯, 安德魯

+0

爲什麼不使用'git tag'正確標記不同項目的穩定版本? –

+0

您的最終產品將是一個「回購充分的回購」,其中,從「回購充滿回購」中獲得「回購Q」,您必須首先複製整個回購倉庫,然後去掉所有不需要的回購倉庫只有repo Q,然後將所有分支重新命名爲原來的名稱。這不是git的設計目的,它會變得尷尬和緩慢。最好將你的repo歸檔到(dir |文件夾)-full-of-repos。然後,爲了將「repo Q」從「(dir | folder)充滿repos」中取出,您只需複製「dir/repoQ」即可完成。 – torek

回答

0

我發現了一個問題,關於計算器約merging repositoriesOlivier Verdier回答解決我的問題:我只需要完成的回購協議添加到歸檔存儲庫:

$ git remote add A /path/to/A 
$ git fetch A 
$ git remote add B /path/to/B 
$ git fetch B 

完成。

0

聽起來你正在做的東西,完全是尷尬了巨大的努力。 Git是一個完美的版本控制系統,沒有任何理由可以將分支推送到某個「歸檔」存儲庫。

正確的做法是使用標記來標記代碼的穩定版本。

然後,您可以創建你的代碼的標記版本,像這樣:

$ git tag -a v1.0 -m "First stable release" 

,然後使用通常的語法,你會用它接收提交/標籤對象中的任何git的操作訪問發佈:

$ git checkout v1.0 

有關如何在git中使用標記的更多信息,請參閱http://git-scm.com/book/en/Git-Basics-Tagging

+0

我使用了很多標籤,但這裏沒有意義,因爲它們是不同的項目。我也不想將分支推送到遠程存儲庫,我想讓整個存儲庫成爲另一個存儲庫的分支。也就是說,一旦項目完成,我想將其移入存儲庫。 – Andrew

+0

不確定你想要在這裏做什麼 - 它確實是非正統的 - 但聽起來像你找到了你的答案。 –

相關問題