簡體   English   中英

維護 git 存儲庫的克隆

[英]Maintaining a clone of a git repository

我想在(自托管)bitbucket 服務器中克隆 github 存儲庫,並不時從 github 存儲庫中提取最新更改。 在我們的克隆中,我們將做一些永遠不會離開我們的存儲庫的實驗性內容。

為了顯示; 對於fossil,我會確保我們的存儲庫和他們的存儲庫具有相同的項目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 作為上游,我們的 bitbucket 服務器用於我們自己的標簽/分支):

  1. 如何制作存儲庫的完整克隆(包括所有分支和標簽)?
  2. 一旦我有一個克隆的存儲庫,我如何從上游(在 github 上)提取所有最新的更改(包括分支、標簽)並將它們推送到我們的服務器(bitbucket)?

不要更改存儲庫的 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

並重新設置您的分支(或將 master 合並到其中)以將他們的更改合並到您的工作中:

$ git checkout my-branch
$ git rebase master

或者

$ git checkout my-branch
$ git merge master

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM