2016-10-01 176 views
2

我想在(自託管的)bitbucket服務器中製作github repostitory的克隆,並不時從github存儲庫中提取最新的更改。在我們的克隆中,我們將做一些實驗性的東西,永遠不會離開我們的倉庫。維護git存儲庫的克隆

舉例說明;與化石我會確保我們的資料庫和他們的資源庫具有相同的項目ID,我應該這樣做:

$ cd ~/checkout/prjdir 
$ fossil pull https://their.org/prj/foo --once 

這將獲得所有最新的簽入,分支,標籤等,然後到推送到我們組織的服務器:

$ fossil push 

永遠不會有任何衝突;我們的更改將在實驗分支上進行,因此從上游更新時不需要任何合併。

我試圖複製化石的工作流程和複製/粘貼一些東西這似乎相關和想出這個初始克隆:

$ git clone https://github.com/foo/bar.git 
$ cd bar 
$ git remote set-url origin https://ourbitbucket.org/foo/bar.git 
$ git push -u origin master 

然而,這似乎並沒有帶來它標籤(標籤對我們很重要)。

使用Git(GitHub的上游和我們對我們自己的標籤/分支到位桶服務器):

  1. 我怎麼做一個資料庫(包括所有 分支和標籤)的完整克隆?
  2. 一旦我有一個克隆庫,我怎麼 把所有的最新變化(分支,標籤在內)從上游 (在github),並推到我們的服務器(到位桶)?
+0

您如何知道標籤未被克隆?或者你想「推 - 標籤」? – choroba

+0

這會簡單地通過執行'git fetch --tags'來解決嗎? – moopet

+0

@choroba看起來像「--tags」不見了。謝謝。 – cypheratheist

回答

2

不要更改存儲庫的URL。只需創建兩個遙控器,即upstreamorigin

默認情況下不推送標籤。使用--tags推送它們。

$ git clone https://github.com/foo/bar.git 
$ cd bar 
$ git remote rename origin upstream 
$ git remote add origin https://ourbitbucket.org/foo/bar.git 
$ git push -u --tags origin master 

每當你想與上游同步,做

$ git checkout master 
$ git pull upstream master 

甚至

$ git reset --hard upstream/master 

和衍合分支(或合併掌握到它)自己的變化融入到您的工作:

$ git checkout my-branch 
$ git rebase master 

$ git checkout my-branch 
$ git merge master 
+0

因此,在初始克隆之後,我會使用「git pull upstream」,然後是「git push -u --tags origin master」?小心使用後期初始克隆工作流程示例來擴展答案? – cypheratheist

+0

@cypheratheist:'克隆'已經拉動,所以克隆後不需要拉上游。 – choroba