一 建立本地的git倉庫。將文件 push到本地。
1 準備工作。
安裝git工具。 yum安裝git-core就行了。
局域網(wǎng)中的兩臺主機,當然在本機上建也行。
本機:192.168.160.89.
git服務(wù)器:192.168.160.83
git服務(wù)器下新建git用戶,必要時允許匿名訪問。
2 例如要將本機上的某個目錄(如moon)作成一個git repo,傳到git服務(wù)器上。
moon 下結(jié)構(gòu)
.
|-- file1
`-- file2
開始了,首先在git服務(wù)器上操作。
# mkdir /pub/git/moon.git
# cd /pub/git/moon.git
# git init --bare
# chown git:git /pub/git/moon.git -R
在本機上操作
# cd moon
# git init-db
# git add *
# git commit -m -a "first"
# git remote add master git@192.168.160.83:/pub/git/moon.git
# git push master --all
之后如果順利的話就可以將moon目錄上傳到git服務(wù)器上了,
在別的目錄后主機上git clone就可以得到moon目錄。
git clone git@192.168.160.83:/pub/git/moon.git
二 將android源碼在git服務(wù)器上保存。
1 android 源碼git介紹。
android用repo管理,repo其實就是為了更好的管理多個git子項目,也就是說android源碼中有多個子git項目,每個含有.git目錄的目錄就是一個git子項目。
2 先對某一個git子項目進行操作。
bionic就是android源碼中的一個子git項目。
# cd bionic
# rm .git -rf
# git add *
# git commit -m -a "first"
# git remote add master git@192.168.160.83:/pub/git/android/bionic.git
# git push master --all
就行了,當然git服務(wù)器上得有bionic.git目錄。
3 用repo在git服務(wù)器上管理android源碼。
自己新建一個repo管理git倉庫:
假設(shè)目前已經(jīng)配置好了git,gitweb等,且目前有用戶: git 和 yyl,且yyl用戶可以匿名訪問git用戶(ssh-key-copy...):
本機獲得ssh pub key:
$ ssh-keygen //不需要輸入什么,直接按Enter鍵就可以了
在服務(wù)器上設(shè)置可以允許我的本機匿名登錄
ssh-copy-id -i ../moon.pub git@192.168.160.83 // moon.pub就是我的pub key
這樣再次ssh git@192.168.160.83 的時候就不用密碼了
下邊是建立自己的repo git倉庫
本機端:
$ mkdir test_one
$ cd test_one
$ tree
|-- aa
| |-- a1
| `-- a2
|-- bb
| |-- b1
| `-- b2
`-- cc
|-- dd
| |-- d1
| `-- d2
|-- manifest
| |
| `-- default.xml
`-- ee
|-- e1
`-- e2
這是yyl用戶下的一個普通項目目錄,我想為他創(chuàng)建遠程git倉庫,并且分多個git來逐個管理,這時就需要用repo來管理這些git:
$ cd aa
$ git init-db
$ git add *
$ git commit -a -m "first init"
$ cd bb
$ git init-db
$ git add *
$ git commit -a -m "first init"
$ cd cc/dd
$ git init-db
$ git add *
$ git commit -a -m "first init"
$ cd ../ee
$ git init-db
$ git add *
$ git commit -a -m "first init"
$ cd ../manifest/
$ git init-db
$ git add *
$ git commit -a -m "first init"
}}}
服務(wù)器端:
我們將在git用戶下創(chuàng)建git倉庫:[[BR]]
$ cd /pub/gittrees/
$ mkdir test_one;cd test_one
$ mkdir aa.git
$ git init --bare
因為bb、dd、ee目錄的特殊性,我想將他們放在一個獨立的目錄中:
$ mkdir platform;cd platform
$ mkdir bb.git; cd bb.git
$ git init --bare
$ cd -
$ mkdir cc; cd cc
$ mkdir dd.git; cd dd.git
$ git init --bare
$ cd -
$ mkdir ee.git; cd ee.git
$ git init --bare
$ cd -
$ mkdir manifest.git; cd manifest.git
$ git init --bare
本機端:
{{{
$ cd test_one
$ cd aa
$ git remote add master /pub/gittrees/test_one/aa.git
$ git push master --all
......
完成后,拷貝manifest項目:
$ git clone git@192.168.160.83:/pub/gittrees/test_one/platform/manifest.git
$ cd manifest
$ vim default.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="origin"
fetch="../.." />
<default revision="master" remote="origin" />
<project path="aa" name="aa" />
<project path="bb" name="plathform/bb" />
<project path="cc/dd" name="plathform/cc/dd" />
<project path="cc/ee" name="plathform/cc/ee" />
</manifest>
注意: fetch="../.." /> 中 會考慮default.xml所在的路徑。如default.xml路徑為:/pub/gittree/test_one/platform/manifest . 而fetch為"../.." 。則
最后的url為:/pub/gittree/test_one .
$ git commit -a -m "modigy default.xml"
$ git push
這時,就可以下載所有的test_one項目了:
$ mkdir test; cd test
$ repo init -u git@192.168.160.83:/pub/gittrees/test_one/platform/manifest.git -b master
$ repo sync
這樣就可以下載在整個目錄了,含有多個git倉庫。