第一步:在root用戶下作以下事情 github
adduser --system --shell /bin/bash --group git shell
// 建立專用帳號git,全部用戶都用此帳號訪問git庫
正在添加系統用戶"git" (UID 120)... vim
正在添加新組"git" (GID 126)... bash
正在將新用戶"git" (UID 120)添加到組"git"... app
建立主目錄"/home/git"... ssh
第二步: sudo passwd git svn
輸入新的 UNIX 密碼: this
從新輸入新的 UNIX 密碼: spa
passwd:已成功更新密碼
exit //退出root用戶
第三步:進入git用戶
su git
密碼:
第四步:建立
$mkdir -p /home/git/bin/gitolite/share/gitolite/conf/ /home/git/bin/gitolite/share/gitolite/hooks/
第五步:下載gitolite
$ git clone git://github.com/ossxp-com/gitolite.git
Initialized empty Git repository in /home/git/gitolite/.git/
remote: Counting objects: 6194, done.
remote: Compressing objects: 100% (1942/1942), done.
remote: Total 6194 (delta 4324), reused 6010 (delta 4186)
Receiving objects: 100% (6194/6194), 1.42 MiB | 281 KiB/s, done.
Resolving deltas: 100% (4324/4324), done.
第六步:採用源代碼方式安裝gitolite
到gitolite源碼所在位置, 上面clone下來的目錄/gitolite/src/執行下面的命令
cd gitolite/src
$./gl-system-install /home/git/bin/gitolite /home/git/bin/gitolite/share/gitolite/conf/ /home/git/bin/gitolite/share/gitolite/hooks/
***** WARNING *****
gl-setup is not in your $PATH.
Since gl-setup MUST be run from the PATH (and not as src/gl-setup or
such), you must fix this before running gl-setup. Just add
PATH=/home/git/bin/gitolite:$PATH
to the end of your bashrc or similar file. You can even simply do that
manually each time you log in and want to run a gitolite command.
第七步:用gitolite建立倉庫編輯/home/git/bin/gitolite/gl-setup
vim /home/git/bin/gitolite/gl-setup
把GL_PACKAGE_CONF變量改爲上面安裝gitolite的配置目錄,如:
GL_PACKAGE_CONF=/home/git/bin/gitolite/share/gitolite/conf/
// 不然會打開一個空的~/.gitolite.rc,就不知道該如何往裏寫配置信息了
// 由於gl-system-install有問題,因此安裝之後還要手工改安裝目錄中的這個文件gl-setup,
第八步:加入系統的環境變量
echo "PATH=/home/git/bin/gitolite:$PATH" >> ~/.bashrc
source ~/.bashrc
//每次修改.bashrc後,使用source ~/.bashrc 是修改當即生效
第九步:產生管理員的密鑰在用戶下
例如:我要用aa帳戶:
在aa帳戶的根目錄下執行:ssh-keygen
就會在根目錄下產生.ssh 目錄 下面有:id_rsa id_rsa.pub
將id_rsa.pub拷貝到git用戶的的根目錄下:
scp .ssh/id_rsa.pub git@localhost :~/
第十步:在git 用戶下:
將id_rsa.pub 命名爲aa.pub
mv id_rsa.pub aa.pub
第十一步:在home/git/bin/gitolite/
$ ./gl-setup ~/aa.pub
//這裏提供的公鑰是做爲管理員的
-- 編輯自動打開的.gitolite.rc文件:
--- 必定要修改$GL_PACKAGE_HOOKS,改爲gl-system-install指定的hook目錄即/home/git/bin/gitolite/share/gitolite/hooks
-- .gitolite.rc編輯完成後保存退出,繼續自動執行:
creating gitolite-admin...
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
creating testing...
Initialized empty Git repository in /home/git/repositories/testing.git/
[master (root-commit) 07c5b91] gl-setup ../../deovo.pub
2 files changed, 26 insertions(+), 0 deletions(-)
create mode 100644 conf/gitolite.conf
create mode 100644 keydir/deovo.pub
如今就能夠在aa用戶下clone一份gitolite-admin 倉庫來管理代碼和用戶
git clone git@192.168.1.24:gitolite-admin.git
Initialized empty Git repository in /home/deovo/share/gitolite-admin/.git/
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.
git clone git@192.168.1.24:testing.git
Initialized empty Git repository in /home/deovo/share/testing/.git/
warning: You appear to have cloned an empty repository.
//這是個空的代碼倉庫包
cd testing/
vi aa.txt
//輸入一些內容保存退出
git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# aa.txt
nothing added to commit but untracked files present (use "git add" to track)
git add -A .
git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: aa.txt
#
git commit -m "test1"
[master (root-commit) 74e0d36] test1
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 aa.txt
git push origin//第一次須要用git push origin master
Counting objects: 3, done.
Delta compression using up to 16 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 375 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: *** hooks.mailinglist is not set so no email will be sent
remote: *** for refs/heads/master update 0000000000000000000000000000000000000000->74e0d366935e1289764cf780c486bdbfc1966f98
To git@192.168.1.24:testing.git
* [new branch] master -> master
git log
如今將一個代碼用git 管理起來
首先有一套代碼
例如名字叫ics
1.將kernel u-boot out clean掉make clean
2.代碼中會包含一些.git /.gitnore=.git* /.svn /.svn*
3. find . -name 「.git 」 -type -d找到後刪除 rm -Rf ******
4. find . -name 「.git*」 -type f
5. find . -name 「.git*」 -type f -delete -print
6. find . -name 「.svn」 -type f
7. find . -name 「.svn*」 -type f
在gitolite-admin/conf/gitolite.conf
添加repo ics
RW+ = @admin
R = @all
git status
git add -A .
git commit -m 「111111」
git push origin
在ics代碼中
git init
git remote add origin git@localhost :ics.git
git add .
git commit -m 「init ics」
git push origin master(由於第一次要加master)
以後就能夠在aa用戶上clone 管理好的代碼了
git clone git@localhost :ics.git