然后在cube下創建一個README.txt

git add *  

git commit -m create new file  

git push origin master

建立主機信任關系

在本地執行

ssh-keygen -t rsa  

cat ~/.ssh/id_rsa.pub

拷貝文件公鑰內容

在服務器執行

mkdir ~/.ssh  

chmod 755 ~/.ssh  

touch ~/.ssh/authorized_keys  

chmod 600 ~/.ssh/authorized_keys  

echo 拷貝的公鑰 >> ~/.ssh/authorized_keys 

要注意文件權限的問題.

使用gitosis來配置和管理git服務端

Gitosis是為托管的Git存儲庫提供訪問控制和遠程管理的工具。它允許通過SSH對讀寫訪問進行細粒度管理,而不需要用戶在服務器上具有本地系統帳戶。為此,它設置一個單一的系統帳戶“ git”,然后用于所有Git訪問。

從AUR安裝gitosis-git AUR包。這將創造三件事:

git用戶

git該用戶所屬的組

/srv/gitosis目錄將保存Gitosis的數據和存儲庫

要配置Gitosis,您不要直接在服務器上編輯文件。相反,Gitosis提供了一個包含配置的Git存儲庫。要更新此配置,您gitosis-admin可以像任何其他存儲庫一樣克隆,提交和推送。

由于Gitosis使用SSH密鑰對用戶進行身份驗證,因此您將需要生成一個用于管理存儲庫的密鑰對。如果沒有,可以使用ssh-keygen例如:

$ ssh-keygen -t rsa

您現在可以初始化管理存儲庫。

$ sudo -H -u git gitosis-init </path/to/public_key.pub
初始化的空Git倉庫在/srv/gitosis/repositories/gitosis-admin.git/
在/srv/gitosis/repositories/gitosis-admin.git/中重新初始化現有的Git倉庫

注意:在某些情況下,這可能會導致此類錯誤:

OSError:[Errno 13] Permission denied:\\\'// gitosis\\\'

原因可能是git主目錄沒有正確設置。通過手動設置來修復它:

#usermod -d / srv / gitosis git

此外,此命令創建/srv/gitosis/repositories將存儲實際托管存儲庫的目錄。

在管理存儲庫初始化完成后,禁用用戶git的基于密碼的ssh登錄可能是合理的。

要實現這一點,添加

匹配用戶git
密碼驗證號

在……的最后 /etc/ssh/sshd_config

組態

如上所述,通過將提交推送到gitosis-admin存儲庫來配置Gitosis 。要克隆此存儲庫(使用Gitosis!),請運行:

$ git clone git@your.git.server:gitosis-admin.git

gitosis-admin存儲庫中,您將看到兩件事:

gitosis.conf – Gitosis和存儲庫權限的配置文件

keydir – 包含每個用戶公用密鑰的目錄

要修改存儲庫或用戶,或配置Gitosis,只需提交克隆中的更改并將其推回到服務器。

存儲庫和權限

您可以在/ usr / share / doc / gitosis中找到一些示例配置文件。

[Gitosis的]
gitweb = yes

[repo foobar]
description = foobar的Git倉庫
owner = user

[組開發者]
members = user1 user2

[組管理員]
members = user1

[組gitosis-admin]
writable = gitosis-admin
members = @admins

[組foobar]
可寫= foobar
members = @devs

[組myteam]
writable = free_monkey
會員= jdoe

[組部署者]
writable = free_monkey
readonly = monkey_deployer

這定義了一個名為“free_monkey”的新組,它是一個任意字符串。“jdoe”是myteam的成員,可以訪問“gitosis”存儲庫。“monkey_deployer”鍵將只能訪問“free_monkey”。

將此添加到gitosis.conf中,提交并推送它:

$ git commit -a -m“允許jdoe寫入訪問free_monkey”
$ git push

現在,用戶“jdoe”可以訪問名為“free_monkey”的存儲庫,但是我們還沒有創建一個存儲庫。我們將做的是在本地創建一個新的存儲庫,在Git服務器上進行初始化,然后推送它:

$ mkdir free_monkey
$ cd free_monkey
$ git init
$ git remote add origin git @ YOUR_SERVER_HOSTNAME:free_monkey.git

做一些工作,git添加和提交文件

$ git push origin master:refs / heads / master

當使用SSH時,最后一個命令將失敗,并顯示錯誤消息“不顯示為Git存儲庫”這可以通過在服務器上手動初始化存儲庫來修復

$ git init --bare /srv/gitosis/repositories/free_monkey.git

并重試最后一個命令

隨著最后的推動,你將會參加比賽。存儲庫“free_monkey”已在服務器上創建(在/ srv / gitosis / repositories中),您可以像任何ol\\\’Git存儲庫一樣開始使用它。

Git病毒庫也可以用于gitweb; 只需將gitweb配置中包含存儲庫的目錄指向。

添加用戶

下一個自然的事情是讓幸運的幾個提交訪問FreeMonkey項目。這是一個簡單的兩步過程。

首先,收集他們的公共SSH密鑰,我將其稱為“alice.pub”和“bob.pub”,并將其放入當地gitosis-admin存儲庫的keydir /。其次,編輯gitosis.conf并將其添加到“成員”列表中。

$ cd gitosis-admin
$ cp/ alice.pub keydir /
$ cp/ bob.pub keydir /
$ git add keydir / alice.pub keydir / bob.pub

請注意,密鑰文件名必須有“.pub”擴展名。

gitosis.conf更改:

[組myteam]
member = jdoe alice bob
writable = free_monkey

提交和推送:

$ git commit -a -m“授予Alice和Bob授予FreeMonkey的權限”
$ git push

而已。Alice和Bob現在可以像這樣克隆free_monkey存儲庫:

$ git clone git @ YOUR_SERVER_HOSTNAME:free_monkey.git

愛麗絲和鮑勃也將有承諾的權利。

公共訪問

如果您正在運行一個公共項目,您的用戶將擁有提交權限,然后您將擁有其他所有人。我們如何讓別人只讀訪問,而不用SSH密鑰?

我們只是使用git-daemon。這是獨立于Gitosis,它與Git本身一起。

$ sudo -u git git-daemon --base-path = / srv / gitosis / repositories / --export-all

這將使您使用Gitosis管理的所有存儲庫對于公眾來說是只讀的。有人可以像這樣克隆FreeMonkey:

$ git clone git://YOUR_SERVER_HOSTNAME/free_monkey.git

要僅導出一些存儲庫而不是其他存儲庫,您需要在要公開的每個存儲庫的根目錄(例如/srv/gitosis/repositories/free_monkey.git)內觸摸git-daemon-export-ok。然后從上面的git-daemon命令中刪除“–export-all”。

更多的技巧

gitosis.conf可以設置做一些其他的巧妙的技巧。在Gitosis源目錄中打開example.conf(您最初在頂部克隆Gitosis方式),以查看所有選項的摘要。您可以將一些存儲庫指定為只讀(與可寫)相反,但尚未公開)。組成員列表可以包括另一個組。還有一些其他的技巧,我會留給讀者發現。

注意事項

如果您的服務器上的/srv/gitosis/.gitosis.conf似乎沒有更新,以匹配您的本地副本(他們應該匹配),即使您正在進行更改和推送,可能是您的更新后掛接不可執行。較舊版本的setuptools可能導致這種情況。一定要解決這個問題:

#chmod 755 /srv/gitosis/repositories/gitosis-admin.git/hooks/post-update

如果您的Python好東西處于非標準位置,則必須另外編輯更新后,并在頂部放置“export PYTHONPATH = …”行。第一次嘗試在gitosis-admin中推送更改時,不這樣做會給您一個Python堆棧跟蹤。

如果您想在非標準位置安裝Gitosis,我不推薦它。這是一個邊緣的情況,作者沒有反抗,直到我發現他幫助我讓它工作。

對于勇氣,您需要編輯系統上的任何文件來控制非登錄,非交互式shell的默認PATH。在Ubuntu上,這是/ etc / environment。將Gitosis的路徑添加到PATH行。還為PYTHONPATH插入一行,并將其設置為非標準的Python site-packages目錄。例如,這是我的/ etc / environment:

$ PATH =“/ home / $(whoami)/ sys / bin:/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr / bin / X11:在/ usr /游戲”
$ PYTHONPATH = / home / $(whoami)/sys/lib/python2.4/site-packages

進行這些更改后,請務必注銷并重新登錄。

不要使用我上面提到的gitosis-init行進行標準安裝,而是使用這個略微修改的代碼:

$ sudo -H -u git env PATH = $ PATH gitosis-init </tmp/id_rsa.pub

確保在上述更新后的鉤子中設置PYTHONPATH。

那個*應該這樣做 我有目的地簡化了這個非標準的設置,因為我認為沒有很多人會使用它。如果您需要更多信息(我的nick是up_the_irons),請在FreeNode上的#git中打開我。

非標準SSH端口

如果您在服務器上的非標準端口上運行SSH,則有兩種方法可以指定Git將嘗試連接哪個端口。一個是明確聲明您正在使用SSH協議,因為這可以讓您在該URL中輸入端口號:

git clone ssh://git@myserver.com:1234 / repo.git

或者你可以把它放在你的/ .ssh / config文件中:

$ Host myserver.com
$ Port 1234

[repo]塊用于定義與gitweb一起使用的一些必要區域。

[組]塊用于兩者:

定義用戶組

定義存儲庫權限

@用于定義用戶組。

您應該提交并推送您在此文件中所做的任何更改。

keydir

keydir只是一個包含用戶公鑰的目錄。一些鍵可以是user @ machine的形式,這些鍵必須用gitosis.conf中的那個格式定義。最好創建用戶組并將其用作存儲庫的成員。一旦添加新的密鑰來啟用一些新用戶,您應該將文件添加到Git存儲庫并提交并推送它們。新用戶將使用上述格式的Git命令,就像您用來克隆gitosis-admin存儲庫一樣。

gitweb

開啟gitweb支持

gitweb是一個簡單的可視化網頁界面,可以使用任何兼容CGI的網頁服務來運行,這里選用的Apache

git clone git://git.kernel.org/pub/scm/git/git.git  

cd git/  

make GITWEB_PROJECTROOT=/home/git/repositories\\\\  

    GITWEB_JS=gitweb/static/gitweb.js \\\\  

    GITWEB_CSS=gitweb/static/gitweb.css \\\\  

    GITWEB_LOGO=gitweb/static/git-logo.png \\\\  

    GITWEB_FAVICON=gitweb/static/git-favicon.png \\\\  

    bindir=/usr/local/bin \\\\  

    gitweb  

make gitwebdir=/var/www/cgi-bin/gitweb install-gitweb 

需要注意的是GITWEB_PROJECTROOT應該修改成你的倉庫的路徑,并且其權限(包括子目錄)應是705。

然后修改/etc/gitweb.conf,改成下面的樣子

[plain] view plain copy

$projectroot = /home/git/repositories; #倉庫路徑  

$GIT = /usr/local/bin/git; #git可執行文件路徑 

修改apache配置文件

在/etc/httpd/conf/httpd.conf中加入以下內容:

<VirtualHost *:80>  

    ServerName gitserver  

    DocumentRoot /var/www/cgi-bin/gitweb  

    <Directory /var/www/cgi-bin/gitweb>  

        Options ExecCGI  FollowSymLinks  SymLinksIfOwnerMatch  

        AllowOverride All  

        order allow,deny  

        Allow from all  

        AddHandler cgi-script cgi  

        DirectoryIndex gitweb.cgi  

    </Directory>  

</VirtualHost>  

這就弄好了!

可能遇到的問題用戶認證不通過的問題:

git clone git@IP:gitosis-admin.git
Initialized empty Git repository in /home/yang/gitosis-admin/.git/
Agent admitted failure to sign using the key.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

// 解決方法,在管理員PC上 
# ssh-add   ~/.ssh/id_rsa 

gitweb找不到工程的問題

如果遇到gieweb的頁面顯示找不到工程,多半是權限設置錯誤。

簡單的說就是Apache用戶組不具備訪問你倉庫目錄的權限,例如我的倉庫是放在/home/git/repositories下的,所以應將/home/git和/home/git/repositories以及你倉庫中的所有項目的權限都設置成705,之前在網上發現有人說設置成775的,如果你設置成775的話雖然也能用,但會導致無法使用命令訪問代碼倉庫,原因我還不清楚。

svn 遷移到git

http://blog.csdn.net/huaishu/article/details/41083951

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯官網:m.shinetop.cn

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » 私有git 搭建

登錄

找回密碼

注冊

主站蜘蛛池模板: 国产精品久久香蕉免费播放| 成人一区二区三区在线午夜 | 国产精品∧v在线观看| 18成禁人视频免费| 亚洲AV高清一区二区三区尤物| 在线天堂中文新版www| 一区二区三区四区五区色| 亚洲a人片在线观看网址| 久久综合九色综合97伊人| 中文字幕一卡二卡三卡| 欧美z0zo人禽交另类视频| 国产精品国产三级国产试看| 久久无码人妻精品一区二区三区| 日本三级理论久久人妻电影 | 精品偷拍一区二区三区| 国内极度色诱视频网站| 国产精品成人久久电影| 中文国产人精品久久蜜桃| 色综合色天天久久婷婷基地| 国产精品一区二区久久精品| 久久精品国产99国产精品| 亚洲成人一区二区av| 国产成人综合欧美精品久久| 91密桃精品国产91久久| 华坪县| 天堂a无码a无线孕交| 门源| 中文字幕无线码在线观看| 通渭县| 国产一级av在线播放| 中文字幕成人精品久久不卡| 又粗又硬又黄a级毛片| 狠狠躁夜夜躁人人爽天天5| 国产精品中文字幕观看| 亚洲午夜久久久影院伊人| 亚洲精品麻豆一区二区| 成人拍拍拍无遮挡免费视频| 一本一道av无码中文字幕麻豆| 丰满少妇高潮无套内谢| 国产在线国偷精品免费看| 无码熟妇人妻av影音先锋|