[英]create an intermediary git repository
我想安裝一個臨時的git存儲庫,我所有的團隊成員都可以提交並推送到該存儲庫中。
當所有團隊成員完成所有任務后,必須將臨時存儲庫中所有已提交的更改交付到位於Internet上托管的另一台服務器上的正式git存儲庫中。
我的問題是,可以進行此配置嗎? 以及如何做?
有可能的。
您可以按照此處的教程或使用Gitolite之類的工具,在一台LAN計算機中設置git服務器。 准備好本地git存儲庫后,就可以向您的團隊成員授予訪問權限。
要將本地服務器同步到中央服務器,請設置一個帶有兩個遙控器的本地副本。 然后,您可以簡單地從本地服務器進行git pull
來獲取本地更改,然后git push
到中央服務器。 您可以使用無密碼密鑰對來訪問兩個服務器,從而調度此任務。
有關設置多個git遙控器的更多詳細信息, 請參見此處
是的,您可以,因為GIT是一個分布式修訂控制系統 。 任何克隆的存儲庫都可以用作其他存儲庫的來源(目標)。
假設您要為名為main.git的“主”存儲庫創建代理存儲庫
git clone --bare path_to_main_repo/main.git path_to_proxy_repo/proxy.git
git clone path_to_proxy_repo/proxy.git path_to_working_repository/working_repository
然后,您可以從working_repository
推送到proxy
,也可以從proxy
推送到main
存儲庫。
請記住 ,使用GIT時,任何給定的存儲庫都可能扮演mainTargeted / proxy / orAnythingElse存儲庫的角色。
如果我對您的理解正確,則希望對git repos A進行初始更改
一旦到達某個點(一個里程碑,一個日期等),對存儲庫A的所有更改都將被采用並應用於存儲庫B
大多數開發團隊使用單個存儲庫和分支來完成此操作
但是,有可能在任何您喜歡的地方都設有分支機構。
手冊頁中有一個git remote
命令的示例
EXAMPLES
· Add a new remote, fetch, and check out a branch from it
$ git remote
origin
$ git branch -r
origin/master
$ git remote add linux-nfs git://linux-nfs.org/pub/linux/nfs-2.6.git
$ git remote
linux-nfs
origin
$ git fetch
* refs/remotes/linux-nfs/master: storing branch 'master' ...
commit: bf81b46
$ git branch -r
origin/master
linux-nfs/master
$ git checkout -b nfs linux-nfs/master
您的存儲庫A可能類似於上述示例中的linux-nfs。 完成此操作后,可以使用git merge將兩者合並
嘗試使用裸倉庫( http://git-scm.com/book/ch4-2.html )
基本上,您啟動了一個新的git裸倉庫,例如
git init --bare
使用以下方法為每個開發人員將此存儲庫添加到遠程服務器
git add remote upstream_intermediate_bare path/to/bare/repo
然后使用以下命令將提交推送到上游裸倉庫
git push upstream_intermediate_bare branch_name
接下來,在您的官方git repo中,添加另一個遙控器
git add remote downstream_intermediate_bare path/to/bare/repo
git pull downstream_intermediate_bare branch_name
裸存儲庫對於僅用作推拉源的遠程存儲庫的常見情況很重要。 檢查一下 。
編輯:示例示例
cd ~/Desktop/test
mkdir dev1
mkdir official
cd dev1 && git init && touch file && git add . && git commit -m "msg" && cd ..
cd official && git init && cd ..
git init --bare interim
cd dev1 && git remote add upstream_intermediate_bare ../interim && cd ..
cd official && git remote add downstream_intermediate_bare ../interim && cd ..
cd dev1 && git push upstream_intermediate_bare master && cd ..
cd official && git pull downstream_intermediate_bare master && cd ..
因此,在上面的示例中,開發人員代碼位於目錄dev1中,他將其推送到一個裸倉庫中,在該倉庫中您無法進行拉取或推送,您必須將其添加到遙控器中並對其進行操作,然后官方倉庫只是從裸倉庫中提取。
假設要在項目中工作。 您只需從master提取代碼,然后打開新分支:
git pull origin master
git checkout -b new-branch
...
現在,您可以推送分支,或者只是在推送某些提交之前開始在其中工作。
...
git add .
git commit -am 'I am pushing in bew-branch'
...
git add .
git commit -am 'I am pushing in bew-branch'
...
您的分支機構中有某些功能(master中沒有)。您是該分支機構中第一個擁有工作程序的開發人員,因此,...您可以將其推入原處。
...
git push origin new-branch
...
現在存在一個名為“ origin / new-branch”的分支,所有開發人員都可以從該分支中提取。 現在,您繼續在locasl分支中提交:
...
git add .
git commit -am 'I am pushing in bew-branch'
...
git add .
git commit -am 'I am pushing in bew-branch'
...
其他開發人員推送了一些代碼,現在您需要提取
...
git pull origin master
...
Fix merge
...
git push origin new-branch
...
最后,您可以將所有提交放入master
...
git checkout master
git merge new-branch
git push origin master
結束。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.