1.架設(shè)Git服務(wù)器我們以Ubuntu為例。首先,在git服務(wù)器上創(chuàng)建一個(gè)名為'git'的用戶,并為其創(chuàng)建一個(gè).ssh目錄。并將其權(quán)限設(shè)置為僅git用戶有讀寫權(quán)限$sudoaddusergit$sugit$cd$mkdir.ssh$chmod700.ssh接下來(lái),把開(kāi)發(fā)者的SSH公鑰添加到這個(gè)用戶的authorized_keys文件中。假設(shè)你通過(guò)電郵收到了幾個(gè)公鑰并存到了臨時(shí)文件里。重復(fù)一下,公鑰大致看起來(lái)是這個(gè)樣子:$cat/tmp/id_rsa.john.pubssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4LojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4kYjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9EzSdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myivO7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJICUvax2T9va5gsg-keypair只要把它們逐個(gè)追加到authorized_keys文件尾部即可,同時(shí)將authorized_keys設(shè)置為僅git用戶有讀寫權(quán)限。$cat/tmp/id_rsa.john.pub~/.ssh/authorized_keys$cat/tmp/id_rsa.josie.pub~/.ssh/authorized_keys$cat/tmp/id_rsa.jessica.pub~/.ssh/authorized_keys$chmod600~/.ssh/authorized_keys現(xiàn)在可以用--bare選項(xiàng)運(yùn)行g(shù)itinit來(lái)建立一個(gè)裸倉(cāng)庫(kù),這會(huì)初始化一個(gè)不包含工作目錄的倉(cāng)庫(kù)。$cd/opt/git$mkdirproject.git$cdproject.git$git--bareinit這時(shí),Join,Josie或者Jessica就可以把它加為遠(yuǎn)程倉(cāng)庫(kù),推送一個(gè)分支,從而把第一個(gè)版本的項(xiàng)目文件上傳到倉(cāng)庫(kù)里了。值得注意的是,每次添加一個(gè)新項(xiàng)目都需要通過(guò)shell登入主機(jī)并創(chuàng)建一個(gè)裸倉(cāng)庫(kù)目錄。我們不妨以gitserver作為git用戶及項(xiàng)目倉(cāng)庫(kù)所在的主機(jī)名。如果在網(wǎng)絡(luò)內(nèi)部運(yùn)行該主機(jī),并在DNS中設(shè)定gitserver指向該主機(jī),那么以下這些命令都是可用的:#在John的電腦上$cdmyproject$gitinit$gitadd.$gitcommit-m'initialcommit'$gitremoteaddorigingit@gitserver:/opt/git/project.git$gitpushoriginmaster這樣,其他人的克隆和推送也一樣變得很簡(jiǎn)單:$gitclonegit@gitserver:/opt/git/project.git$vimREADME$gitcommit-am'fixfortheREADMEfile'$gitpushoriginmaster用這個(gè)方法可以很快捷地為少數(shù)幾個(gè)開(kāi)發(fā)者架設(shè)一個(gè)可讀寫的Git服務(wù)。作為一個(gè)額外的防范措施,你可以用Git自帶的git-shell工具限制git用戶的活動(dòng)范圍。只要把它設(shè)為git用戶登入的shell,那么該用戶就無(wú)法使用普通的bash或者csh什么的shell程序。編輯/etc/passwd文件:$sudovim/etc/passwd在文件末尾,你應(yīng)該能找到類似這樣的行:git:x:1000:1000::/home/git:/bin/sh把bin/sh改為/usr/bin/git-shell(或者用whichgit-shell查看它的實(shí)際安裝路徑)。該行修改后的樣子如下:git:x:1000:1000::/home/git:/usr/bin/git-shell現(xiàn)在git用戶只能用SSH連接來(lái)推送和獲取Git倉(cāng)庫(kù),而不能直接使用主機(jī)shell。嘗試普通SSH登錄的話,會(huì)看到下面這樣的拒絕信息:$sshgit@gitserverfatal:WhatdoyouthinkIam?Ashell?Connectiontogitserverclosed.這里提供的方法,組內(nèi)所有成員對(duì)project都有讀寫權(quán)限,也就是說(shuō)每個(gè)分支都可以push代碼,如果需要更加細(xì)致的權(quán)限控制,請(qǐng)使用Gitosis或者Gitolite。2.搭建Gitweb安裝gitweb之后就可以通過(guò)網(wǎng)站訪問(wèn)我們的項(xiàng)目了。就像gitweb.conf#pathtogitprojects(.git)$projectroot="/opt/git";至此gitweb就可以使用了,現(xiàn)在可以通過(guò)config[core]repositoryformatversion=0filemode=truebare=true[hooks]mailinglist="example@gmail.com,example2@gmail.com"#收件人列表envelopesender=project.git@example.com#送件人地址emailprefix="[Projectcommit]"#郵件標(biāo)題前綴showrev="gitshow-C%s;echo"#不只顯示有變化的文件,同時(shí)也顯示改變的內(nèi)容為了使郵件顯示的更清楚,還要修改一下工程目錄當(dāng)中的description文件,在description文件中,默認(rèn)第一行是項(xiàng)目名稱,所以要在第一行填入該項(xiàng)目的名稱,這個(gè)在郵件中會(huì)有顯示。$vim/opt/git/project.git/descriptionProject_A
調(diào)兵山網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),調(diào)兵山網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為調(diào)兵山上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的調(diào)兵山做網(wǎng)站的公司定做!
先給出項(xiàng)目地址:
lazygit 是一個(gè)用于 Git 命令行的簡(jiǎn)單終端 UI,使用 Go 語(yǔ)言編寫,用到了 gocui 庫(kù),目的是在命令行提供 Git 的圖形界面。lazygit 讓你有一種源自 Sourcetree 的感覺(jué),但是在以終端為中心的環(huán)境中。Lazygit 快速且易于使用,你只需在 git 存儲(chǔ)庫(kù)中的終端中調(diào)用 lazygit 即可。lazygit 可以在Linux、macOS、FreeBSD和Windows上運(yùn)行。
還記得咱們之前推薦的 Go 語(yǔ)言實(shí)現(xiàn)的帥帥的 Docker 終端 UI:lazydocker嗎?這是同一個(gè)作者哦,lazygit 的 star 數(shù)達(dá)到 12.5k+。
看下作者錄制的視頻:
是不是挺棒的!
可以直接在這里下載二進(jìn)制文件 ,或者按照如下方式安裝,比如 Mac 下通過(guò) Homebrew 安裝
沖突解決
Interactive Rebasing
趕緊試試吧~
Git的搭建只能在后端,前端是沒(méi)有的。所謂的前端git就是在用戶端使用git,而真正的git服務(wù)器搭建應(yīng)該是在后端,并不在前端,因此這是兩個(gè)不同的概念,應(yīng)該注意區(qū)分。
GIT服務(wù)器包含GIT和OpenSSH,GIT用于軟件版本控制管理服務(wù)器端,OpenSSH為Windows版本的SSH服務(wù)器端軟件。
安裝msysgit
安裝步驟此處略去。
END
安裝CopSSH
安裝步驟此處略去。
END
修改配置
修改CopSSH配置文件C:\Program Files\ICW\etc\sshd_config,確保如下行為非注釋行,且設(shè)置為“no”:
END
生成用戶帳號(hào)
1
在服務(wù)器上生成Windows用戶,取消用戶下次登錄時(shí)須更改密碼,設(shè)置密碼永不過(guò)期:
2
將該用戶隸屬于GitUser組(如尚未生成改組,則先生成改組):
END
激活用戶
1
在Windows啟動(dòng)程序組中,運(yùn)行如下程序(C:\Program Files\ICW\bin\ copsshcp.exe):
2
進(jìn)入COPSSH Control Panel應(yīng)用對(duì)話框,正常情況下服務(wù)應(yīng)該為正在運(yùn)行(圖標(biāo)為綠色,如為紅色,則可嘗試點(diǎn)選該按鈕,啟動(dòng)該服務(wù)):
3
選擇Users頁(yè)面:
4
點(diǎn)選Add按鈕,出現(xiàn)如下導(dǎo)航對(duì)話框:
5
選擇Forward按鈕,出現(xiàn)如下頁(yè)面,選擇欲激活的用戶對(duì)應(yīng)的域名及用戶名:
6
選擇Forward按鈕,進(jìn)入如下頁(yè)面,選擇Linux shell and Sftp,所有選項(xiàng)選中:
7
選擇Forward按鈕,進(jìn)入確認(rèn)頁(yè)面,選擇Apply:
8
回到如下頁(yè)面,選擇Apply后,關(guān)閉。
END
公鑰文件上傳
1
從用戶處取得對(duì)應(yīng)帳戶的公鑰文件authorized_keys,復(fù)制到C:\Program Files\ICW\home\ricky\.ssh目錄下(\ricky\是對(duì)應(yīng)的用戶名);
2
Windows啟動(dòng)程序組中運(yùn)行Start a Unix BASH Shell(或Windows運(yùn)行中運(yùn)行命令:"C:\Program Files\ICW\bin\bash.exe" --login -i):
3
運(yùn)行如下unix命令行,如運(yùn)行未出錯(cuò),則完畢。
END
生成Git庫(kù)容器目錄
1
在服務(wù)器硬盤上生成一個(gè)目錄,用來(lái)容納Git庫(kù),比如生成E:\ GITTestRepo\目錄;
2
鼠標(biāo)右鍵點(diǎn)擊該目錄,選擇共享和安全…;
3
在彈出的該目錄屬性對(duì)話框的安全頁(yè)中加入用戶對(duì)應(yīng)的組GitUser;
4
確認(rèn)該用戶組權(quán)限設(shè)置了允許修改、讀取和運(yùn)行、列入文件夾目錄、讀取、寫入,選擇確定后完畢。
END
確認(rèn)防火墻開(kāi)放了22端口
確認(rèn)服務(wù)器的防火墻沒(méi)有禁止22端口的TCP/IP通信。
END
修改用戶登錄運(yùn)行腳本
1
修改C:\Program Files\ICW\home\ricky\.bashrc文件(\ricky\是對(duì)應(yīng)的用戶名),在文件最后加入如下行:
首先需要裝好CentOS系統(tǒng),作為測(cè)試,你可以選擇裝在虛擬機(jī)上,這樣比較方便。這步默認(rèn)你會(huì),就不講了。
有了CentOS,那么如何搭建Git服務(wù)器呢?
1、首先需要安裝Git,可以使用yum源在線安裝:
[root@localhost Desktop]# yum install -y git
2、創(chuàng)建一個(gè)git用戶,用來(lái)運(yùn)行g(shù)it服務(wù)
# adduser git
3、初始化git倉(cāng)庫(kù):這里我們選擇/data/git/learngit.git來(lái)作為我們的git倉(cāng)庫(kù)
[root@localhost git]# git init --bare learngit.git
Initialized empty Git repository in /data/git/learngit.git/
執(zhí)行以上命令,會(huì)創(chuàng)建一個(gè)裸倉(cāng)庫(kù),裸倉(cāng)庫(kù)沒(méi)有工作區(qū),因?yàn)榉?wù)器上的Git倉(cāng)庫(kù)純粹是為了共享,所以不讓用戶直接登錄到服務(wù)器上去改工作區(qū),并且服務(wù)器上的Git倉(cāng)庫(kù)通常都以.git結(jié)尾。然后,把owner改為git:
[root@localhost git]# chown git:git learngit.git
4、在這里,Git服務(wù)器就已經(jīng)搭得差不多了。下面我們?cè)诳蛻舳薱lone一下遠(yuǎn)程倉(cāng)庫(kù)
Zhu@XXX /E/testgit/8.34
$ git clone git@192.168.8.34:/data/git/learngit.git
Cloning into 'learngit'...
The authenticity of host '192.168.8.34 (192.168.8.34)' can't be established.
RSA key fingerprint is 2b:55:45:e7:4c:29:cc:05:33:78:03:bd:a8:cd:08:9d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.8.34' (RSA) to the list of known hosts.
git@192.168.8.34's password:
這里兩點(diǎn)需要注意:第一,當(dāng)你第一次使用Git的clone或者push命令連接GitHub時(shí),會(huì)得到一個(gè)警告:
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
這是因?yàn)镚it使用SSH連接,而SSH連接在第一次驗(yàn)證GitHub服務(wù)器的Key時(shí),需要你確認(rèn)GitHub的Key的指紋信息是否真的來(lái)自GitHub的服務(wù)器,輸入yes回車即可。
Git會(huì)輸出一個(gè)警告,告訴你已經(jīng)把GitHub的Key添加到本機(jī)的一個(gè)信任列表里了:
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
這個(gè)警告只會(huì)出現(xiàn)一次,后面的操作就不會(huì)有任何警告了。
如果你實(shí)在擔(dān)心有人冒充GitHub服務(wù)器,輸入yes前可以對(duì)照GitHub的RSA Key的指紋信息是否與SSH連接給出的一致。
第二,這里提示你輸入密碼才能clone,當(dāng)然如果你知道密碼,可以鍵入密碼來(lái)進(jìn)行clone,但是更為常見(jiàn)的方式,是利用SSH的公鑰來(lái)完成驗(yàn)證。
5、創(chuàng)建SSH Key
首先在用戶主目錄下,看看有沒(méi)有.ssh目錄,如果有,再看看這個(gè)目錄下有沒(méi)有id_rsa和id_rsa.pub這兩個(gè)文件,如果已經(jīng)有了,可直接跳到下一步。如果沒(méi)有,打開(kāi)Shell(Windows下打開(kāi)Git Bash),創(chuàng)建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
你需要把郵件地址換成你自己的郵件地址,然后一路回車,使用默認(rèn)值即可,由于這個(gè)Key也不是用于軍事目的,所以也無(wú)需設(shè)置密碼。
如果一切順利的話,可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個(gè)文件,這兩個(gè)就是SSH Key的秘鑰對(duì),id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。
6、Git服務(wù)器打開(kāi)RSA認(rèn)證
然后就可以去Git服務(wù)器上添加你的公鑰用來(lái)驗(yàn)證你的信息了。在Git服務(wù)器上首先需要將/etc/ssh/sshd_config中將RSA認(rèn)證打開(kāi),即:
1.RSAAuthentication yes
2.PubkeyAuthentication yes
3.AuthorizedKeysFile .ssh/authorized_keys
這里我們可以看到公鑰存放在.ssh/authorized_keys文件中。所以我們?cè)?home/git下創(chuàng)建.ssh目錄,然后創(chuàng)建authorized_keys文件,并將剛生成的公鑰導(dǎo)入進(jìn)去。
然后再次clone的時(shí)候,或者是之后push的時(shí)候,就不需要再輸入密碼了:
Zhu@XXX/E/testgit/8.34
$ git clone git@192.168.8.34:/data/git/learngit.git
Cloning into 'learngit'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
7、禁用git用戶的shell登陸
出于安全考慮,第二步創(chuàng)建的git用戶不允許登錄shell,這可以通過(guò)編輯/etc/passwd文件完成。找到類似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
最后一個(gè)冒號(hào)后改為:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
這樣,git用戶可以正常通過(guò)ssh使用git,但無(wú)法登錄shell,因?yàn)槲覀優(yōu)間it用戶指定的git-shell每次一登錄就自動(dòng)退出。
本文標(biāo)題:Go語(yǔ)言搭建git服務(wù)器 go語(yǔ)言開(kāi)發(fā)服務(wù)器
分享鏈接:http://jinyejixie.com/article28/doddocp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、網(wǎng)站收錄、移動(dòng)網(wǎng)站建設(shè)、App開(kāi)發(fā)、定制開(kāi)發(fā)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)