日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Git服务器搭建笔记

發(fā)布時間:2024/4/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Git服务器搭建笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言:最近公司要使用git服務(wù)器對Android4.4的源碼進行版本控制,所以花了些時間在Ubuntu14.04上搭建了git服務(wù)器,正好前段時間也學(xué)習(xí)了下git的使用哈哈

?------------------------------------------------------------------------

?平臺:Ubuntu14.04

?------------------------------------------------------------------------

1.首先在服務(wù)器上需要下載一些軟件

sudo apt-get install git-core python-setuptools openssh-server openssh-client

?

2.新建一個git用戶,當(dāng)我們再服務(wù)器上管理git版本庫的時候只允許使用git用戶(root用戶當(dāng)然除外)

sudo useradd -m git sudo passwd git

?

3.安裝Gitosis軟件,該軟件用來管理團隊成員對遠(yuǎn)程倉庫的訪問權(quán)限等

git clone https://github.com/res0nat0r/gitosis.git cd gitosis/ sudo python setup.py install

  注意github網(wǎng)址那是2個數(shù)字0呢,不是大寫的字母o

?

4.選擇一臺計算機作為服務(wù)器管理員遠(yuǎn)程管理服務(wù)器,所以這一步應(yīng)該在管理員的計算機上操作

  4.1.安裝git客戶端

sudo apt-get install git

  4.2.生成ssh密鑰

ssh-keygen -t rsa

  4.3.使用ssh把生成的密鑰推送到服務(wù)器上,XXX表示管理員計算機的用戶名,serverIP表示服務(wù)器的IP地址,也就是推送到/tmp/目錄下

scp /home/XXX/.ssh/id_rsa.pub git@serverIP:/tmp

?

5.切換到服務(wù)器上,把剛剛推送過來的秘鑰生效,

  注意:在執(zhí)行這條命令之前請確保/home/git/下沒有.ssh文件夾,若有請手動刪除,因為在執(zhí)行gitosis-init命令時會在/home/git目錄下創(chuàng)建一個.ssh目錄,同時在.ssh目錄下創(chuàng)建authorized_keys文件,并且將id_rsa.pub這個密鑰寫入authorized_keys這個文件中,這樣該密鑰的擁有者就對gitosis-admin.git這個倉庫具有訪問權(quán)限.

sudo -H -u git gitosis-init < /tmp/id_rsa.pub

  執(zhí)行這條命令后會打印如下log:

Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/ Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/

  由log我們可以看到已經(jīng)自動生成了一個gitosis-admin的倉庫,同時以后git的默認(rèn)倉庫路徑都在/home/git/repositories/下

?

6.需要對其中的一個post-update文件添加可執(zhí)行的權(quán)限

sudo chmod 755 /home/gitrepository/gitosis-admin.git/hooks/post-update

?

  好啦,到這為止,服務(wù)器已經(jīng)搭建好啦,但是現(xiàn)在貌似只有管理員的計算機能訪問git服務(wù)器上的倉庫哦,因為現(xiàn)在服務(wù)器上只有管理員的ssh秘鑰呢,所以接下來繼續(xù)配置團隊中其他成員的訪問權(quán)限

  這里就需要gitosis上場啦,gitosis就是用來管理authorized_keys文件和簡單連接限制的腳本。添加、刪除用戶或設(shè)定權(quán)限這些工作是通過管理一個特殊的git倉庫來實現(xiàn)的,你只需要在這個倉庫做好相應(yīng)的設(shè)置,然后推送到服務(wù)器上,gitosis就會隨之改變策略,而這個特殊的git倉庫就是剛剛生成的gitosis-admin.git啦

  既然服務(wù)器上的環(huán)境已經(jīng)搭建好了,那么之后的步驟就不需要在服務(wù)器上操作啦,切換到管理員的計算機上進行第6步

?

7.克隆git特殊倉庫到管理員計算機上,同樣serverIP還是服務(wù)器IP地址

git clone git@serverIP:gitosis-admin.git

  執(zhí)行這條語句會得到一個gitosis-admin文件夾,里面包括一個gitosis.conf文件和一個keydir文件夾,gitosis.conf主要是配置用戶、倉庫和權(quán)限的配置文件,而keydir目錄中則保存的是用戶的密鑰,每個用戶都得有一個.pub結(jié)尾的文件

  我們看下gitosis.conf文件的具體內(nèi)容

$ cat gitosis.conf [gitosis][group gitosis-admin] members = scott writable = gitosis-admin

  我們可以這么理解,對于一個gitosis-admin組中,成員scott對gitosis-admin倉庫有讀寫權(quán)限,這也就是我們管理員的用戶名以及對gitosis-admin倉庫的管理權(quán)限

?

8.在服務(wù)器上增加一個git倉庫,同時配置成員屬性

  當(dāng)我們需要添加一個新git項目,由于gitosis-admin倉庫只有管理員具有讀寫權(quán)限,所以只有管理員才有權(quán)限去增加git倉庫或者管理項目成員

  這里假設(shè)需要新建一個test倉庫,同時需要增加john,jet成員一起進行版本控制,需要如下幾步

  8.1.拿到j(luò)ohn與jet的ssh密鑰,密鑰的生成請參考4.1與4.2,管理員把密鑰文件分別命名為john.pub與jet.pub,cp到gitosis-admin/keydir目錄下

  8.2.更改gitosis.conf文件:

[gitosis][group gitosis-admin] members = scott writable = gitosis-admin[group team] members = scott john jet writable = test

  注意:這里members指定的用戶名必須同".pub"前面的命名相同,例如,如果是scott.pub,那么這里寫上scott就可以了,通常,我們生成密鑰時會跟上機器的名字,如果你的.pub命名帶上"@機器名"的話,那么members這里也要帶上@機器名,總之members指定的名字一定要同".pub"前面命名相同。

  既然是權(quán)限控制,那么肯定有只讀的權(quán)限啦

[group testread] members = xiaoming readonly = test

  8.3.提交到遠(yuǎn)程服務(wù)器上

git init
git add . git commit
-m "yourLog" git push origin master

  如此,就完成了新倉庫的創(chuàng)建與用戶的配置,如果在Log中需要換行,commit更改為如下指令即可

git commit -m ' 1.aaa 2.bbb '

?

  這里還有一個問題,在配置的這些用戶中都有權(quán)限去創(chuàng)建test倉庫,所以只需要一人去push就行啦,其他用戶可以直接clone代碼到本地庫,不然會引起沖突的哦

?

  說明:當(dāng)我們在gitosis.conf文件中聲明了倉庫名,所以我們不需要在服務(wù)器上新建一個倉庫了,因為當(dāng)我們第一次提交文件到服務(wù)器上的時候會自動新建倉庫的。

?

?---------------------------------------------------------------<完>------------------------------------------------------------------------

?

補充:如果我們要提交一個很大的項目,比如Android4.4等系統(tǒng)源碼,使用遠(yuǎn)程push很費時間,還要依賴網(wǎng)絡(luò),時時擔(dān)心網(wǎng)絡(luò)會不會掉線等

 一、所以我們可以在服務(wù)器上直接提交代碼

  1.在服務(wù)器上安裝git客戶端

  2.生成密鑰,并且把密鑰push到服務(wù)器上(這里為什么不直接復(fù)制?因為在版本庫里是找不到密鑰文件的,可能是由于安全原因吧)

  3.在項目文件夾中執(zhí)行以下命令

git init git remote add origin git@127.0.0.1:yourGitProject.git git add . git commit -m "yourLog" git push origin master

  像這樣很耗時的操作建議自己編寫sh腳本讓其自動執(zhí)行,然后我們就可以去干別的事啦

?

 二、git客戶端用戶信息配置請使用

git config --global user.name "yourname" git config --global user.email "youremail"

?

 三、還有一種辦法可以更改git倉庫,不需要讓管理員添加密鑰

  比如倉庫里有一個test.git,同時我們知道服務(wù)器上git用戶的密碼,那么嘿嘿嘿嘿

git clone git@serverIP:/home/git/repositories/test.git

  對了!使用絕對路徑,一般來說,git上的倉庫都在默認(rèn)的/home/git/repositories目錄下

  如果提示以下錯誤

Cloning into 'test'...ERROR:gitosis.serve.main:Repository read access denied fatal: The remote end hung up unexpectedly

  那么我們加上sudo繼續(xù)執(zhí)行上述命令即可

sudo git clone git@serverIP:/home/git/repositories/test.git

  接下來會提示你輸入git用戶的登錄密碼,當(dāng)我們輸入密碼之后,嘿嘿嘿,這個倉庫就clone下來了,同樣也是可以push的哦,但是每次都需要輸入git用戶的密碼,當(dāng)然gitosis-admin倉庫也可以哦

  

  此方法在我的機器上能實現(xiàn),不知道大家的能不能實現(xiàn),當(dāng)時我還在糾結(jié)我明明配置了訪問git倉庫的用戶權(quán)限,為何每個用戶都能訪問了,后來在正確配置密鑰然后再clone的時候發(fā)現(xiàn)不需要填寫git用戶的密碼了,所以想是不是git用戶的密碼的原因,因為我已經(jīng)連接上git了呀,或者就是我服務(wù)器沒有配置好的原因了,若有大神指導(dǎo),還請指導(dǎo)一二,不勝感激!!

  對了,我的/etc/passwd文件末尾,是沒有/bin/sh屬性的,如下所示

git:x:1000:1000::/home/git:

?

最后補充一個大插曲

由于源碼是拿到原廠的源碼,而且不是個純凈版本,里面有幾百個.git目錄與幾百個.gitignore文件,由于第一次傳git,沒有經(jīng)驗,所以沒有對這些文件進行處理,就直接往服務(wù)器上傳了,45w個文件,還好是局域網(wǎng),10GB半個小時傳完了,然后另外一臺電腦clone下來,編譯,我去,提示缺少文件,然后我就進入了一邊編譯看缺少哪些文件一邊改.gitignore文件,然后push到服務(wù)器中,另一臺再pull下來,繼續(xù)編譯,就這么折騰了差不多一天,實在受不了了,這簡直是個無底洞阿,還不知道要弄到什么時候去,原廠在開發(fā)的時候應(yīng)該是首先拿著純凈的源碼,然后一邊開發(fā)一邊寫.gitignore文件(因為如果把編譯過程中生成的二進制文件也傳到服務(wù)器中,這對服務(wù)器也是個不小的挑戰(zhàn))最后release給我們的源碼卻沒有刪掉.gitignore,這怎么辦呢?一個一個改?我去好幾百文件呢,突然想到不是還有回收站嗎,于是,我就把所有的.gitigore文件全部放到回收站里哈哈,然后把剩下的所有源碼push到服務(wù)器中,接著再從回收站里恢復(fù)所有的.gitignore文件,再把這些.gitignore文件加到版本庫里push到服務(wù)器中,搞定!真是機智

?

------20170208 ?update-------------------------------------------------------------------------

問題描述:我在A電腦上更改了compile.sh文件,然后push到遠(yuǎn)程,然后在B電腦上使用fetch下載剛剛改動的文件,(由于B電腦上工作區(qū)改動了很多文件,而我害怕被覆蓋,所以使用了fetch而不是pull),然后再使用git checkout [commit] compile.sh更新暫存區(qū)與工作區(qū)的文件,那么,問題來了:這么做的后果是,當(dāng)我使用git log的時候無法顯示在電腦A上的提交,使用git blame compile.sh命令包含如下信息:

00000000 (Not Committed Yet 2017-02-08 14:16:09 +0800 73) source build/envsetup.sh 00000000 (Not Committed Yet 2017-02-08 14:16:09 +0800 74) lunch aosp_avocado-userdebug

?這是由于沒有合并導(dǎo)致的,可以先使用git log -p master..origin/master查看本地與遠(yuǎn)程的區(qū)別,然后再使用git merge origin/master來合并代碼,當(dāng)然也可以使用pull來實現(xiàn),只是這么做不太安全,因為不知道到底會合并了哪些文件。

?

轉(zhuǎn)載于:https://www.cnblogs.com/pngcui/p/6291189.html

超強干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的Git服务器搭建笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美无砖砖区免费 | 爽天天天天天天天 | 欧美日韩一区二区不卡 | 欧美成人黄色小视频 | 在线成人一区二区 | 国产不卡av在线 | 黄色片在线 | 亚洲一区二三区 | 伊人伊人伊人 | 欧美专区一区 | 久久一区二区电影 | 日本xxxx在线观看 | 国产精品久久久久91 | 在线日本中文字幕 | 精品少妇一区二区三区密爱 | 亚洲精品国产成人无码 | 超碰2025| 2021av| 欧洲一区在线 | 国产a v一区二区三区 | 不卡av片 | 亚洲一区二区三区免费观看 | 无码人妻丰满熟妇区五十路 | 日本不卡不卡 | 色哟哟国产精品 | 日韩精品免费一区二区夜夜嗨 | 久久伊人久久 | 白丝女仆被免费网站 | 日本爱爱网址 | 中国挤奶哺乳午夜片 | 色哟哟av | 精品国产精品网麻豆系列 | 亚洲欧美小视频 | 亚洲美免无码中文字幕在线 | 久久久99精品国产一区二区三区 | 操bbbbb| 国产精品高清在线观看 | 欧美日韩一级二级 | 国产福利资源在线 | av中文一区 | 91狠狠综合| 性欧美大战久久久久久久免费观看 | 亚洲永久精品视频 | 亚洲国产精品一区二区三区 | 少妇被躁爽到高潮无码人狍大战 | 丰满少妇aaaaaa爰片毛片 | 国产aaa级片 | 影音先锋日韩资源 | 手机成人av在线 | 国产精品丝袜在线观看 | 男女www视频| 亚洲精品久久久久久国 | 伊人精品在线视频 | h无码动漫在线观看 | 免费av地址 | 18被视频免费观看视频 | 日日夜夜人人 | 亚洲a免费 | 伊人黄色| 国产精品热 | 中文字幕无码乱码人妻日韩精品 | 久久久穴 | 国产精品1234 | 欧美性猛交xxxx偷拍洗澡 | 中文字幕日韩欧美 | 亚洲尻逼 | 一本色道久久综合无码人妻 | 国产精品久久久久免费 | 久久久久国产综合av天堂 | 波多野结衣视频免费看 | 日本精品在线视频 | 深夜影院在线观看 | 四虎国产精品永久免费观看视频 | 成人免费a视频 | 久草综合在线 | 色桃av| 涩色网| 免费黄色在线视频 | 国产最新在线视频 | 草啪啪| 国产调教 | 黄色理论视频 | 亚洲av久久久噜噜噜熟女软件 | 国产精品大片 | 国产最新在线视频 | 中文人妻熟妇乱又伦精品 | 亚洲片在线观看 | 一道本av在线 | 青青草成人网 | 欧美熟妇7777一区二区 | 日本性视频网站 | 亚洲精品白浆高清久久久久久 | 一区二区三区四区高清视频 | 我的公把我弄高潮了视频 | 欧美黄色短视频 | 天天干中文字幕 | 国产一级网站 | 找个毛片看看 | 在线www|