一、Git服務(wù)器搭建
任務(wù)描述
雖然有提供托管代碼服務(wù)的公共平臺,但是對一部分開發(fā)團(tuán)隊(duì)來說,為了不泄露項(xiàng)目源代碼、節(jié)省費(fèi)用及為項(xiàng)目提供更好的安全保護(hù),往往需要搭建私有
Git
服務(wù)器用做遠(yuǎn)程倉庫。Git
服務(wù)器為團(tuán)隊(duì)的開發(fā)者們,提供了協(xié)作開發(fā)平臺,開發(fā)者可以基于私有的Git
服務(wù)器進(jìn)行項(xiàng)目開發(fā)。本關(guān)任務(wù):搭建本地
Git
服務(wù)器。相關(guān)知識
Git
服務(wù)器必須搭建在Linux
系統(tǒng)下,因此必須準(zhǔn)備一臺運(yùn)行Linux
系統(tǒng)的主機(jī),這里我們推薦Ubuntu
或者Debian
系統(tǒng)。 #####搭建遠(yuǎn)程登錄Git服務(wù)器 如果你已經(jīng)有了一臺運(yùn)行Ubuntu
系統(tǒng)的主機(jī),而且取得了root
權(quán)限,那么如果你想要在該主機(jī)上搭建Git
服務(wù)器,需要以下幾個步驟。安裝并配置git
首先要在主機(jī)上安裝
git
服務(wù),在Ubuntu
下安裝git
只需要一條命令即可:sudo apt-get install git
這樣就在該主機(jī)上安裝了
Git
服務(wù),然后執(zhí)行git config
,即可完成git
的配置。創(chuàng)建一個用戶用來運(yùn)行g(shù)it服務(wù)的用戶
創(chuàng)建一個專門的服務(wù),來運(yùn)行
git
服務(wù),是為了使git
服務(wù)和系統(tǒng)的其它服務(wù)不沖突。如果git
服務(wù)可以在root
權(quán)限下運(yùn)行,則以root
用戶使用git
服務(wù)即可,并不需要創(chuàng)建專門的用戶去運(yùn)行git
服務(wù)。這里,我們假設(shè)創(chuàng)建一個名為educoder
的用戶,來運(yùn)行git
服務(wù):sudo adduser educoder
這樣就可以在
educoder
用戶下運(yùn)行git
服務(wù)。創(chuàng)建證書登錄
雖然是私有的
Git
服務(wù)器,但是也不能允許主機(jī)隨意向Git
服務(wù)器推送代碼。因此,必須將需要使用Git
服務(wù)器,即需要登錄到Git
服務(wù)器的主機(jī)的公鑰(即id_rsa.pub
文件)導(dǎo)入Git
服務(wù)器的/home/git/.ssh/authorized_keys
文件里,一行一個。初始化git倉庫
然后,就需要在主機(jī)下,選定一個目錄做為
Git
倉庫。如果我們使用/tmp/educoder.git
做為遠(yuǎn)程倉庫,則需要在/tmp
目錄下執(zhí)行:sudo git init --bare educoder.git
這樣,Git
就會創(chuàng)建一個空白的倉庫,里面沒有內(nèi)容,也不存在工作區(qū)和暫存區(qū)。這是因?yàn)?code>Git倉庫只是為了托管代碼,所以不需要用戶直接登錄到Git
服務(wù)器上去做修改。當(dāng)我們創(chuàng)建了Git
倉庫之后,對應(yīng)第二步創(chuàng)建專門的用戶來運(yùn)行Git
,這一步需要將倉庫的所屬關(guān)系更改為相應(yīng)用戶,即:sudo chown -R educoder:educoder educoder.git
禁用shell登錄
出于安全考慮,第二步創(chuàng)建的
educoder
用戶不允許登錄shell
,可以通過編輯/etc/passwd
文件完成。找到類似下面的一行:git:x:1001:1001:,,,:/home/git:/bin/bash
改為:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
這樣,eudcoder
用戶可以正常通過ssh
使用git
,但是無法登錄shell
。 通過以上步驟就完成了Git
服務(wù)器的搭建,然后就可以通過Git
命令,克隆遠(yuǎn)程倉庫,并向遠(yuǎn)程倉庫推送代碼了搭建本地Git服務(wù)器
但是,在本實(shí)訓(xùn)中,所有的用戶都是在很高的權(quán)限下進(jìn)行操作,本實(shí)訓(xùn)的目的也是為了讓用戶體驗(yàn)私有
Git
服務(wù)器,并掌握其搭建過程。因此,本實(shí)訓(xùn)允許在root
權(quán)限下運(yùn)行git
服務(wù),且需要以bash
方式使用git
操作。因此,需要在本機(jī)搭建Git
服務(wù)器,且在本機(jī)執(zhí)行克隆、推送等操作。為了滿足這一要求,只需以下步驟即可。安裝并配置git
方法同遠(yuǎn)程
Git
服務(wù)器搭建步驟1
。初始化git倉庫
由于是在本機(jī)執(zhí)行操作,因此不需要證書管理,則可以直接執(zhí)行初始化
Git
倉庫的操作。假設(shè)遠(yuǎn)程倉庫地址為/home/sample.git
,則可以在/home
目錄下執(zhí)行:sudo git init --bare sample.git
這樣即可完成
Git
倉庫的初始化。由于需要在本地執(zhí)行
git
操作,因此,也不需要設(shè)定Git
服務(wù)器的登錄方式。由在遠(yuǎn)程服務(wù)器搭建的步驟5
中可知,git
默認(rèn)支持bash
操作,因此也不需要再做改動。由于需要在本地執(zhí)行
git
操作,因此,也不需要設(shè)定Git
服務(wù)器的登錄方式。由在遠(yuǎn)程服務(wù)器搭建的步驟5
中可知,git
默認(rèn)支持bash
操作,因此也不需要再做改動。僅需要以上兩個步驟,即可完成本地
Git
服務(wù)器搭建。該服務(wù)器允許通過bash
和遠(yuǎn)程倉庫操作,且直接使用目錄名做為遠(yuǎn)程倉庫名。如果按照以上步驟生成了遠(yuǎn)程倉庫/home/sample.git
,則可以直接在本機(jī)目錄下,執(zhí)行如下格式的命令,完成遠(yuǎn)程版本庫的clone
:git clone /home/sample.git
即可以直接把某個目錄做為遠(yuǎn)程倉庫。這種方式不是典型的遠(yuǎn)程倉庫模式,但是做為體驗(yàn)遠(yuǎn)程倉庫的方法,它簡單方便,可操作性強(qiáng)。因此,本實(shí)訓(xùn)就只考察本地版本庫的搭建,而把遠(yuǎn)程倉庫的搭建做為體驗(yàn)性內(nèi)容由用戶自己完成。
編程要求
平臺已經(jīng)為你提供了一臺運(yùn)行
Ubuntu
系統(tǒng)的Linux
主機(jī),且已經(jīng)為你安裝了git
,但是尚未進(jìn)行配置。本關(guān)的編程任務(wù)是補(bǔ)全右側(cè)代碼片段中Begin
至End
中間的腳本,具體要求如下:
- 配置
git
的用戶名和郵箱;- 在
/tmp
目錄下初始化educode.git
倉庫,即倉庫地址為?/tmp/educoder.git
。
#配置Git
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
#進(jìn)入/tmp目錄
cd /tmp
#請?jiān)谙路紹egin/End星號線內(nèi)填寫git命令以初始化educoder.git倉庫
#********** Begin **********#
git init --bare educoder.git
#********** End **********#
二、配置別名
任務(wù)描述
在操作
Git
的過程中,我們經(jīng)常需要手動敲入類似于git status
或git checkout
等命令。而status
和checkout
這些單詞較長,每次都要完整敲入的話,不僅浪費(fèi)時間,而且還容易輸錯。如果可以為命令設(shè)置簡寫的話,比如以git st
來代替git status
,則會使操作變得更加簡單方便。實(shí)際上,Git
允許我們?yōu)?code>git命令設(shè)置別名,以達(dá)到簡化操作的目的。本關(guān)任務(wù):為
git
命令設(shè)置別名。相關(guān)知識
設(shè)置別名
設(shè)置別名需要使用的命令是
git config --global alias
,其具體使用方法示例如下:#為status設(shè)置別名st git config --global alias.st status
執(zhí)行以上步驟,即可將
st
設(shè)置為status
的別名,即執(zhí)行:git st
的效果等效于執(zhí)行git status
。 同樣,如果需要為其他命令設(shè)置別名,也可以采用相同的方式:#為checkout設(shè)置別名co $ git config --global alias.co checkout #為commit設(shè)置別名ci $ git config --global alias.ci commit #為branch設(shè)置別名br $ git config --global alias.br branch
需要指出的是
--global
參數(shù)是一個全局參數(shù),即設(shè)置的這些別名可以在這臺主機(jī)的所有Git
倉庫下使用。如果不加這個參數(shù),則只對當(dāng)前的倉庫起作用。刪除別名
如果需要刪除已經(jīng)設(shè)置的別名的時候,則需要執(zhí)行以下步驟:
刪除所有別名: 刪除所有別名用到的命令為:
git config [--global] --remove-section alias
其中,
--global
是可選參數(shù),加上這個參數(shù)也將本主機(jī)所有git
倉庫下的別名都刪除,不加這個參數(shù)則僅刪除本倉庫下的別名。刪除指定別名:
git config [--global] --unset alias.你的別名
同樣的,
--global
也是一個全局參數(shù)。如果要刪除本主機(jī)所有倉庫下的st
別名,則可以執(zhí)行以下命令:git config --global --unset alias.st
查看別名: 如果要查看當(dāng)前主機(jī)已經(jīng)設(shè)置了哪些別名,則可以執(zhí)行以下命令:
git config --list | grep alias
會得到類似于
alias.st=status
的信息,這就是說系統(tǒng)當(dāng)前已經(jīng)為status
設(shè)置了別名st
。本關(guān)的編程任務(wù)是,補(bǔ)全右側(cè)代碼片段中
Begin
至End
中間的腳本,具體要求如下:
- 為
status
設(shè)置全局別名st
;- 為
checkout
設(shè)置全局別名co
;- 為
commit
設(shè)置全局別名ci
;- 為
branch
設(shè)置全局別名br
。
#請?jiān)谙路紹egin/End星號線內(nèi)填寫git命令為系統(tǒng)設(shè)置全局別名
#********** Begin **********#
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
#********** End **********#
三、公共版本庫的使用之碼云、Github
任務(wù)描述
本關(guān)任務(wù):在碼云上創(chuàng)建自己的項(xiàng)目。
相關(guān)知識
Github和碼云的介紹
GitHub
是通過Git
進(jìn)行版本控制的軟件源代碼托管服務(wù),由GitHub
公司(曾稱Logical Awesome
)的開發(fā)者Chris Wanstrath
、PJ Hyett
和Tom Preston-Werner
使用Ruby on Rails
編寫而成。
GitHub
同時提供付費(fèi)賬戶和免費(fèi)賬戶。這兩種賬戶都可以創(chuàng)建公開的代碼倉庫,但是付費(fèi)賬戶還可以創(chuàng)建私有的代碼倉庫。根據(jù)在2009
年的Git
用戶調(diào)查,GitHub
是最流行的Git
訪問站點(diǎn)。除了允許個人和組織創(chuàng)建和訪問保管中的代碼以外,它也提供了一些方便社會化共同軟件開發(fā)的功能,即一般人口中的社區(qū)功能,包括允許用戶追蹤其他用戶、組織、軟件庫的動態(tài),對軟件代碼的改動和bug
提出評論等。GitHub
也提供了圖表功能,用于概觀顯示開發(fā)者們怎樣在代碼庫上工作以及軟件的開發(fā)活躍程度。碼云
Gitee
(最新獨(dú)立域名)是由開源中國出品,旨在樹立國內(nèi)代碼托管和協(xié)作開發(fā)的行業(yè)標(biāo)桿,靈活便捷地支撐個人、團(tuán)隊(duì)、企業(yè)的開發(fā)需求的產(chǎn)品。碼云這一產(chǎn)品名稱,指代的是“代碼”和“云平臺/云服務(wù)”。它和Github
的區(qū)別是碼云的私有庫也是完全免費(fèi)的,它提供中文服務(wù),從而能夠更好地服務(wù)國內(nèi)開發(fā)者。碼云分為企業(yè)版和個人版。企業(yè)版相對于個人版而言,其針對國內(nèi)中小型開發(fā)團(tuán)隊(duì)敏捷開發(fā)的實(shí)踐需要,除了代碼托管之外,重點(diǎn)強(qiáng)化了與代碼聯(lián)系最密切的項(xiàng)目/任務(wù)管理和文檔功能。碼云
對于一個沒有使用過碼云的開發(fā)者來說,如果要在碼云上創(chuàng)建項(xiàng)目需要采用以下步驟。
注冊
首先,我們需要到碼云主頁面去注冊一個賬號,碼云的網(wǎng)址是
https://gitee.com
,其主界面如下所示
點(diǎn)擊右上角紅色框內(nèi)的注冊按鈕,根據(jù)提示完成注冊,即可獲得一個碼云賬號。 登陸后主界面如下所示:
右上方紅色框的加號按鈕,提供的下拉菜單有進(jìn)一步的操作。
創(chuàng)建項(xiàng)目
點(diǎn)擊右上方的加號按鈕,選擇新建項(xiàng)目:
之后,進(jìn)入新建項(xiàng)目界面,其界面顯示如下:
從圖中可以看到,我們可以設(shè)置自己項(xiàng)目的名稱,并對自己的項(xiàng)目進(jìn)行介紹。同時,我們也可以設(shè)置自己項(xiàng)目所采用的語言,并添加
gitignore
文件及添加開源許可證。在最下方,我們也可以選擇將我們的項(xiàng)目進(jìn)行公開或者保持私有,也可以選擇初始化項(xiàng)目的方法。在項(xiàng)目介紹下方的三個下拉框內(nèi)有更為詳細(xì)的操作,請自行注冊體驗(yàn)。 當(dāng)設(shè)置好我們的項(xiàng)目的細(xì)節(jié)后,點(diǎn)擊新建之后就完成了項(xiàng)目的創(chuàng)建:
在項(xiàng)目詳情的右上角有
HTTPS
以及SSH
協(xié)議的遠(yuǎn)程倉庫地址,使用這個地址我們就能向向這個倉庫推送代碼。推送代碼
當(dāng)在碼云上創(chuàng)建了項(xiàng)目,從而創(chuàng)建了代碼倉庫之后,我們就可以向其推送代碼,如下圖所示:
我們在本地創(chuàng)建版本庫,并添加在上一步驟中創(chuàng)建的碼云倉庫做為遠(yuǎn)程倉庫。使用
pull
操作拉取遠(yuǎn)程分支內(nèi)容之后,通過ls
命令可以看到,將遠(yuǎn)程倉庫的README.md
這一初始化文件拉取到了本地。隨后我們添加helloGit
文件,并將其提價到本地倉庫,隨后我們將其推送至遠(yuǎn)程倉庫,如下圖所示:
注意,推送過程中會提示你輸入用戶名和密碼,這里需要使用注冊用的郵箱和登錄密碼。 然后我們觀察碼云上的版本庫可以看到:
helloGit
文件已被推送至碼云上的代碼倉庫。Github
創(chuàng)建并使用代碼倉庫
為了使用
Github
,必須首先在其官網(wǎng)注冊賬號,注冊完成后,點(diǎn)擊右上角加號按鈕創(chuàng)建倉庫:
然后,配置新倉庫的名稱、描述信息、公開或者私有以及是否初始化等選項(xiàng):
之后就完成了倉庫的創(chuàng)建,在倉庫的主界面我們可以看到如下界面: 在界面右上角點(diǎn)擊
Clone or download
按鈕,就能看到倉庫的遠(yuǎn)程地址:
之后就完成了倉庫的創(chuàng)建,在倉庫的主界面我們可以看到如下界面: 在界面右上角點(diǎn)擊
Clone or download
按鈕,就能看到倉庫的遠(yuǎn)程地址:
但是僅有倉庫地址,還無法向其推送代碼。因?yàn)?code>Github要求認(rèn)證主機(jī),即需要在項(xiàng)目的證書列表中,添加主機(jī)的公鑰。然后改主機(jī),才能向此倉庫推送代碼。點(diǎn)擊
Settings
按鈕,選擇Deploy keys
選項(xiàng),可以看到如下界面:
在右側(cè)的
Title
輸入框設(shè)置公鑰的名稱,然后在下方的key
輸入框中,寫入相應(yīng)主機(jī)的公鑰,然后該主機(jī)就能向該倉庫推送代碼。Fork和Pull Request
Github
提供了fork
功能。當(dāng)我們發(fā)現(xiàn)某一個優(yōu)秀的開源項(xiàng)目,并想為項(xiàng)目貢獻(xiàn)代碼時,點(diǎn)擊fork
即可復(fù)制該項(xiàng)目到自己的賬戶下的一個倉庫。
在自己的倉庫下進(jìn)行修改后,可向原項(xiàng)目發(fā)起
pull Request
,以請求將自己的代碼合并進(jìn)原項(xiàng)目。項(xiàng)目發(fā)起方收到你的pull request
后,會對你的代碼進(jìn)行審核,審核通過則會將你的修改合并到項(xiàng)目中去。這種模式也是目前流行的開源項(xiàng)目的發(fā)展模式。
Star
當(dāng)你對一個項(xiàng)目很感興趣,想實(shí)時關(guān)注該項(xiàng)目的進(jìn)展時,可以
star
該項(xiàng)目,這樣,當(dāng)項(xiàng)目有改動時你就可以及時收到通知。
文章來源:http://www.zghlxwxcb.cn/news/detail-838664.html
編程要求
本關(guān)的任務(wù)是,在碼云上注冊賬號,并創(chuàng)建項(xiàng)目,然后將此項(xiàng)目做為遠(yuǎn)程倉庫地址,向其
master
分支推送gitTraining.txt
文件。具體要求如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-838664.html
- 在碼云上注冊賬號并創(chuàng)建項(xiàng)目;
- 向項(xiàng)目中推送
gitTraining.txt
文件;- 將項(xiàng)目的版本庫地址填入右側(cè)
Begin/End
星號線內(nèi)。
git remote add origin https://gitee.com/your_username/your_project.git
到了這里,關(guān)于git分布式管理-頭歌實(shí)驗(yàn)搭建Git服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!