<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-179  評論-666  文章-29  trackbacks-0

    Git 教程


    Git本地服務(wù)器搭建及使用

    Git是一款免費、開源的分布式版本控制系統(tǒng)。眾所周知的Github便是基于Git的開源代碼庫以及版本控制系統(tǒng),由于其遠(yuǎn)程托管服務(wù)僅對開源免費,所以搭建本地Git服務(wù)器也是個較好的選擇,本文將對此進(jìn)行詳細(xì)講解。(推薦一家提供私有源代碼免費托管的網(wǎng)站:Bitbucket,目前支持一個項目5個成員)

    搭建環(huán)境:

    服務(wù)器:intel i5 / 8g內(nèi)存 / 64位操作系統(tǒng)  Ubuntu 15.04

    PC: intel i5 / 8g內(nèi)存 / 64位操作系統(tǒng)  Windows 7 旗艦版

    第一部分:Git的基本操作

    初始化操作
        $ git config -global user.name <name> #設(shè)置提交者名字
        $ git config -global user.email <email> #設(shè)置提交者郵箱
        $ git config -global core.editor <editor> #設(shè)置默認(rèn)文本編輯器
        $ git config -global merge.tool <tool> #設(shè)置解決合并沖突時差異分析工具
        $ git config -list #檢查已有的配置信息
    創(chuàng)建新版本庫
        $ git clone <url> #克隆遠(yuǎn)程版本庫
        $ git init #初始化本地版本庫
    修改和提交
        $ git add . #添加所有改動過的文件
        $ git add <file> #添加指定的文件
        $ git mv <old> <new> #文件重命名
        $ git rm <file> #刪除文件
        $ git rm -cached <file> #停止跟蹤文件但不刪除
        $ git commit -m <file> #提交指定文件
        $ git commit -m “commit message” #提交所有更新過的文件
        $ git commit -amend #修改最后一次提交
        $ git commit -C HEAD -a -amend #增補(bǔ)提交(不會產(chǎn)生新的提交歷史紀(jì)錄)
    查看提交歷史
        $ git log #查看提交歷史
        $ git log -p <file> #查看指定文件的提交歷史
        $ git blame <file> #以列表方式查看指定文件的提交歷史
        $ gitk #查看當(dāng)前分支歷史紀(jì)錄
        $ gitk <branch> #查看某分支歷史紀(jì)錄
        $ gitk --all #查看所有分支歷史紀(jì)錄
        $ git branch -v #每個分支最后的提交
        $ git status #查看當(dāng)前狀態(tài)
        $ git diff #查看變更內(nèi)容
    撤消操作
        $ git reset -hard HEAD #撤消工作目錄中所有未提交文件的修改內(nèi)容
        $ git checkout HEAD <file1> <file2> #撤消指定的未提交文件的修改內(nèi)容
        $ git checkout HEAD. #撤消所有文件
        $ git revert <commit> #撤消指定的提交
    分支與標(biāo)簽
        $ git branch #顯示所有本地分支
        $ git checkout <branch/tagname> #切換到指定分支或標(biāo)簽
        $ git branch <new-branch> #創(chuàng)建新分支
        $ git branch -d <branch> #刪除本地分支
        $ git tag #列出所有本地標(biāo)簽
        $ git tag <tagname> #基于最新提交創(chuàng)建標(biāo)簽
        $ git tag -d <tagname> #刪除標(biāo)簽
    合并與衍合
        $ git merge <branch> #合并指定分支到當(dāng)前分支
        $ git rebase <branch> #衍合指定分支到當(dāng)前分支
    遠(yuǎn)程操作
        $ git remote -v #查看遠(yuǎn)程版本庫信息
        $ git remote show <remote> #查看指定遠(yuǎn)程版本庫信息
        $ git remote add <remote> <url> #添加遠(yuǎn)程版本庫
        $ git fetch <remote> #從遠(yuǎn)程庫獲取代碼
        $ git pull <remote> <branch> #下載代碼及快速合并
        $ git push <remote> <branch> #上傳代碼及快速合并
        $ git push <remote> : <branch>/<tagname> #刪除遠(yuǎn)程分支或標(biāo)簽
        $ git push -tags #上傳所有標(biāo)簽

    附:參考

    中文版權(quán)威教程Git Pro

    簡明使用指導(dǎo)

    第二部分:搭建C/S架構(gòu)Git服務(wù)器

    一、搭建步驟

    Git支持本地(local)、ssh、git和http(s)這四種協(xié)議進(jìn)行傳輸,本部分將基于ssh協(xié)議搭建(此協(xié)議不利于開源,適合公司團(tuán)隊使用)。

    本文操作大部分在Ubuntu服務(wù)器端完成。

    1、我們在服務(wù)器端新增加一個用戶(本文為gitadmin)用于管理git倉庫:

    Ubuntu下啟動終端,鍵入命令:
    $ sudo useradd -m gitadmin   --首次執(zhí)行sudo命令需要按提示輸入管理員密碼
    $ sudo passwd gitadmin       --設(shè)置用戶gitadmin密碼

    將gitadmin設(shè)置為管理員用戶,方法很多,這里用通過修改sudoers文件實現(xiàn):

    $ sudo vim /etc/sudoers

    提示/etc/sudoers Warning: Changing a readonly file

    解決這個問題只需要切換到其他可以執(zhí)行sudo的用戶,修改/etc/sudoers文件即可,但是這個文件的修改要很小心,它默認(rèn)的權(quán)限為440,所以要改權(quán)限,修改完文件再把權(quán)限改回去

    改權(quán)sudoers文件的權(quán)限時要注意:

    用sudo su -徹底切換到root,否則是不行滴

    執(zhí)行命令如下:

    1. $ sudo su -  
    2. # chmod a+w /etc/sudoers  
    3. # vi /etc/sudoers  
    4. # chmod a-w /etc/sudoers  
    其中vi /etc/sudoers之后,需要在root ALL(ALL) ALL一行之后加上:

    接下來進(jìn)到vim編輯器,鍵入i進(jìn)入插入模式,找到下面這行并添加gitadmin:

    # User privilege specification
    root ALL=(ALL:ALL)  ALL
    gitadmin  ALL=(ALL:ALL)  ALL

    鍵盤esc退出插入模式,輸入冒號(:),光標(biāo)出現(xiàn)在底端,輸入wq回車退出。
    $ su gitadmin                   --輸入剛剛設(shè)置的密碼切換到gitadmin用戶

    2、安裝配置ssh服務(wù)

    $ sudo apt-get install openssh-server openssh-client

    按提示輸入管理員密碼,同意[Y],安裝完畢。OpenSSH為自由軟件,是ssh的開源實現(xiàn)。

    $ sudo vim /etc/ssh/sshd_config

    找到下面幾行,去掉前面"#"注釋,并設(shè)置:

    StrictModes  no --在用戶名和其公鑰文件名不匹配時將通過驗證

    RSAAuthentication yes   --使用純的RSA認(rèn)證
    PubkeyAuthentication yes    --允許Public Key AuthorizedKeysFile     %h/.ssh/authorized_keys

    上面這個配置是設(shè)定免密碼登陸的賬號公鑰存儲路徑

    ps:如果是小團(tuán)隊,把每個人的公鑰收集起來放到/home/git/.ssh/authorized_keys文件里問題不大;如果團(tuán)隊較大或是有權(quán)限要求,這種方式就很不靈活了,這時可以用Gitosisgitolite來管理公鑰,我將在后文介紹。

    gitolite
     http://blog.csdn.net/u010320108/article/details/59106768

    接著重啟ssh服務(wù)

    $ sudo service ssh restart   或是   $ sudo /etc/init.d/ssh restart

    ssh服務(wù)器到這里安裝配置完畢。

    出于安全考慮,可以在本教程配置完畢后設(shè)置gitadmin用戶不允許登錄shell,可通過 用vim打開編輯/etc/passwd文件并找到下面的一行(自行創(chuàng)建的用戶名):

    gitadmin:x:1001:1001:,,,:/home/gitadmin:/bin/bash

    改為:

    gitadmin:x:1001:1001:,,,:/home/gitadmin:/usr/bin/git-shell

    這樣,gitadmin用戶可以正常通過ssh使用git,但無法登錄shell,因為我們?yōu)間itadmin 用戶指定的git-shell每次一登錄就自動退出

    3、安裝配置git服務(wù)器

    $ sudo apt-get install git git-core   --安裝git服務(wù)器

    $ sudo mkdir /home/gitadmin/repositories    --創(chuàng)建git倉庫存儲目錄

    $ sudo chown gitadmin:gitadmin /home/gitadmin/repositories  --設(shè)定所有者

    $ sudo chmod 755 /home/gitadmin/repositories   --設(shè)置倉庫訪問權(quán)限

    接下來初始化全局設(shè)置

    • 初始化git用戶。在任何一臺機(jī)器上使用git,第一次必須初始化一下。在當(dāng)前用戶下初始化全局的git信息(用戶名和郵箱隨便填寫都可以,只是為了讓git識別git用戶而已):

    首先查看一下是否存在了git用戶執(zhí)行命令:
    root@development:~# cat ~/.gitconfig

    若已有g(shù)it用戶,最好刪除了重新初始化,我搭建時就是因為用了已有的git用戶,后面搭建出問題了,刪除命令:

    root@development:~# sudo userdel -r git
    初始化git命令:
    root@development:~# git config --global user.name "jackliu"
    root@development:~# git config --global user.email "xcltl618@gmail.com"

    $ git config --global user.name “gitadmin”

    $ git config --global user.email “gitadmin@server”

    @后的server為本機(jī)IP,可用ifconfig查看

    4、基本的git服務(wù)器(without gitosis)

    這里是git本地服務(wù)器最基本的實現(xiàn),不使用下文講解的gitosis進(jìn)行管理,適合人數(shù)較 少并且沒有權(quán)限管理要求的小團(tuán)隊。

    PC客戶端:

    首先安裝git客戶端(參見后文方法)

    配置無密碼登陸需拷貝pc端公鑰至/home/git/.ssh/authorized_keys,在git.bash下:

    $ ssh-keygen -t rsa       --生成本機(jī)密鑰,公鑰默認(rèn)在~/.ssh/id_rsa.pub

    $ ssh-copy-id gitadmin@host   --上傳公鑰,遠(yuǎn)程主機(jī)host為服務(wù)器IP

    若不用以上命令,用下面這條命令則清楚地解釋了公鑰的保存過程:

    $ ssh gitadmin@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

    Ubuntu服務(wù)器端:

    你可以在服務(wù)器端自行創(chuàng)建倉庫,先選定一個目錄作為Git倉庫,假定是/srv/sample.git, 在/srv目錄下輸入命令:

    $ sudo git init --bare sample.git

    $ sudo chown -R gitadmin:gitadmin sample.git --把owner改為gitadmin

    這樣Git就會創(chuàng)建一個裸倉庫,裸倉庫沒有工作區(qū),因為服務(wù)器上的Git倉庫純粹是為 了共享,所以不讓用戶直接登錄到服務(wù)器上去改工作區(qū),并且服務(wù)器上的Git倉庫通常 都以.git結(jié)尾。

    至此,最基本的git本地服務(wù)器已經(jīng)搭建完畢,可以通過git clone命令克隆遠(yuǎn)程倉庫在各自電腦上運行了。

    5、安裝配置gitosis

    簡單地說,Gitosis 就是一套用來管理 authorized_keys文件和實現(xiàn)簡單連接限制的腳本。有趣的是,用來添加用戶和設(shè)定權(quán)限的并非通過網(wǎng)頁程序,而只是管理一個特殊的 Git 倉庫。你只需要在這個特殊倉庫內(nèi)做好相應(yīng)的設(shè)定,然后推送到服務(wù)器上,Gitosis 就會隨之改變運行策略。

    創(chuàng)建管理員公鑰和私鑰:

    在默認(rèn)用戶的主目錄路徑下,運行以下命令,按照提示創(chuàng)建(可直接回車略過) $ ssh-keygen -t rsa

    默認(rèn)生成2048位,如果需要提高安全級別,也可以通過下面的命令

    $ ssh-keygen -t rsa -b 4096

    公鑰和私鑰默認(rèn)會保存在~/.ssh目錄下,如下所示:

    id_rsa id_rsa_pub(公鑰) known_hosts

    安裝gitosis:

    安裝python的setup tool

    $sudo apt-get install python-setuptools

    獲取并安裝gitosis

    $ cd /tmp --切換到緩存目錄下載安裝包,在關(guān)機(jī)時會被系統(tǒng)自動清理

    $ git clone https://github.com/tv42/gitosis.git --下載安裝包

    $ cd gitosis

    $ sudo python setup.py install --到此gitosis安裝完成

    配置gitosis:

    gitosis會默認(rèn)將git倉庫放在gitadmin主目錄下,并自動管理authorized_keys文件 :

    $ cp ~/.ssh/id_rsa.pub /tmp --拷貝出管理員公鑰

    向gitosis添加公鑰并初始化:

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

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

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

    這樣該公鑰的擁有者gitadmin就能修改用于配置Gitosis的那個特殊Git倉庫了。接 下來,需要手工對該倉庫中的post-update 腳本加上可執(zhí)行權(quán)限:

    $ sudo chmod 755 /home/gitadmin/repositories/gitosis-admin.git/hooks/post-update

    到此為止git服務(wù)器端的搭建結(jié)束,管理員為gitadmin。

    6、倉庫管理員信息:

    現(xiàn)在在終端下進(jìn)到用戶主目錄,克隆Gitosis的控制倉庫:

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


    如果出現(xiàn):fatal: '~/gitosis-admin.git' does not appear to be a git repository
    fatal: The remote end hung up unexpectedly

    $ sudo git clone gitadmin@server:/home/gitadmin/repositories/gitosis-admin.git


    當(dāng)前目錄下將得到一個名為 gitosis-admin 的工作目錄,主要由兩部分組成:

    $ cd gitosis-admin

    $ find .

    ./gitosis.conf

    ./keydir

    ./keydir/gitadmin.pub

    gitosis.conf 文件是用來設(shè)置用戶、倉庫和權(quán)限的控制文件。keydir 目錄則是保存所有 具有訪問權(quán)限用戶公鑰的地方(每人一個)。在 keydir 里的文件名(如我gitadmin.pub) 應(yīng)該跟你的不一樣,Gitosis會自動從使用 gitosis-init 腳本導(dǎo)入的公鑰尾部描述中獲取 該名字。用編輯器 gitosis.conf 文件的內(nèi)容,只包含與剛剛克隆的 gitosis-admin 相關(guān) 的信息:

    $ cat gitosis.conf

    [gitosis]

    [group gitosis-admin]

    members = gitadmin

    writable = gitosis-admin

    它顯示用戶 gitadmin是唯一能管理 gitosis-admin 項目的人。

    二、測試用例

    PC客戶端下:

    1、安裝git客戶端

    訪問git官網(wǎng),下載安裝包(許多Windows上的git服務(wù)都以msysgit作為支撐支撐軟件,建議讀者安裝):

    wpsD516.tmp

    下載后按默認(rèn)配置安裝完畢,會出現(xiàn)git.bash命令行工具:wpsD517.tmp

    1、接下來的pc端工作在git.bash命令行內(nèi)完成:

    測試能否ssh登錄遠(yuǎn)程主機(jī):

    $ cd ~

    $ ssh gitadmin@host --遠(yuǎn)程登錄

    由于無法確認(rèn)遠(yuǎn)程host主機(jī)的真實性,shell會告訴你它的公鑰指紋讓你確認(rèn),鍵入yes:

    Are you sure you want to continue connecting (yes/no)?  yes

    輸入遠(yuǎn)程主機(jī)gitadmin的密碼,正常情況下這里就能夠登錄成功,顯示gitadmin用戶

    $ exit --退出遠(yuǎn)程登錄

    配置免密碼登陸:

    $ ssh-keygen -t rsa       --生成本機(jī)密鑰,公鑰默認(rèn)在~/.ssh/id_rsa.pub

    未使用gitosis情況下執(zhí)行:

    $ ssh-copy-id gitadmin@host   --上傳公鑰,遠(yuǎn)程主機(jī)host為服務(wù)器IP

    使用gitosis管理公鑰則執(zhí)行:

    $ scp ~/.ssh/id_rsa.pub gitadmin@host:/tmp --遠(yuǎn)程拷貝公鑰至服務(wù)器臨時目錄

    2、可視化工具

    在安裝官方git的同時,它也給我們提供了gitk 和 git-gui兩種可視化工具:

    gitk 是一個歷史記錄的圖形化查看器。

    cd 到一個Git倉庫,然后鍵入:

    $ gitk [git log options]

    git-gui 則主要是一個用來制作提交的工具:

    $ git gui

    注意:

    本部分末參考鏈接里有官網(wǎng)推薦的Git圖形化客戶端(github上還有更多選擇),更親近不熟悉命令行的使用者。由于這一部分的選擇較多,但究其實現(xiàn)原理還是一樣的,所以這里就不做延伸。請使用者參考本文或搜索自行選擇的客戶端相應(yīng)教程進(jìn)行配置。

    Ubuntu服務(wù)器端下:

    1、管理gitosis

    $ cd ~

    $ git clone gitadmin@host:/home/gitadmin/gitosis-admin.git

    $ cd gitosis-admin/

    接下來各個用戶按照前面安裝配置gitosis時提到的辦法生成各自的ssh公鑰文件后, scp上傳到服務(wù)器/tmp 目錄下,也可由服務(wù)器管理員手動取得,并最終重命名為各用戶 名后拷貝到keydir目錄下,就能實現(xiàn)使用git協(xié)同作業(yè)了。

    2、gitosis.conf文件講解:

    [gitosis]

    [group gitosis-admin]

    writable = gitosis-admin

    members = a@server1

    [group developers]

    writable = helloworld

    members = a@server1 b@server2

    [group test]

    readonly = helloworld

    members = c@server3

    這個配置文件表達(dá)了如下含義:gitosis-admin組成員有a,該組對gitosis-admin倉庫 有讀寫權(quán)限; developers組有a,b兩個成員,該組對helloworld倉庫有讀寫權(quán)限; test 組有c一個成員,對helloworld倉庫有只讀權(quán)限。當(dāng)然目前這些配置文件的修改只是 在你的本地,你必須推送到gitserver上才能真正生效。

    操作方法:

    加入新文件、提交并推送到git服務(wù)器:

    $ git add . --添加命令,這里的點’.’表示當(dāng)前目錄

    $ git commit -am "add helloworld project and users" --提交,并描述此次行為

    $ git remote add origin ssh://gitadmin@host:helloworld.git

    添加遠(yuǎn)程主機(jī)

    $ git push origin master --推送到服務(wù)器master分支

    這里介紹遠(yuǎn)程主機(jī)URL修改方法,需要進(jìn)到待修改倉庫目錄下:

    方法一:先刪除$ git remote rm origin 再添加$ git remote add origin URL

    方法二:$ git remote set-url origin URL

    方法三:進(jìn)入.git目錄下修改config文件

    3、演示操作

    現(xiàn)在我們來添加一個新項目。為此我們要建立一個名為mobile的新段落,在其中羅列 手機(jī)開發(fā)團(tuán)隊的開發(fā)者,以及他們擁有寫權(quán)限的項目。由于 'gitadmin' 是系統(tǒng)中的唯 一用戶,我們把他設(shè)為唯一用戶,并允許他讀寫名為 iphone_project 的新項目:

    [group mobile]

    members = gitadmin

    writable = iphone_project

    修改完之后,提交 gitosis-admin 里的改動,并推送到服務(wù)器使其生效:

    選擇目錄創(chuàng)建裸倉(本步驟可省略,我們不用事先到服務(wù)器上手工創(chuàng)建該項目的裸倉庫, Gitosis會在第一次遇到推送時自動創(chuàng)建):

    $ mkdir iphone_project.git

    $ sudo git init --bare iphone_project.git

    $ sudo chown -R gitadmin:gitadmin iphone_project.git

    添加新工程并提交用戶組:

    $ git commit -am 'add iphone_project and mobile group'

    在新工程 iphone_project 首次推送數(shù)據(jù)到服務(wù)器前,得先設(shè)定該服務(wù)器地址為遠(yuǎn)程 倉庫,注意使用gitosis可以不用指明完整路徑,只需要一個冒號加項目名字即可, Gitosis會自動幫你映射到實際位置:

    $ git remote add origin gitadmin@host:iphone_project.git

    推送到服務(wù)器:

    $ git push origin master

    要和朋友們在一個項目上協(xié)同工作,就得重新添加他們的公鑰。不過這次不用在服務(wù)器 上一個一個手工添加到 ~/.ssh/authorized_keys 文件末端,而只需管理 keydir 目錄中的 公鑰文件(文件的命名由 gitosis.conf 中用戶的標(biāo)識名決定),并修改gitosis.conf , 最后用前面的方法推送到服務(wù)器配置生效。

    現(xiàn)在我們?yōu)?John,Josie 和 Jessica 添加公鑰:

    $ cp /tmp/id_rsa.john.pub keydir/john.pub

    $ cp /tmp/id_rsa.josie.pub keydir/josie.pub

    $ cp /tmp/id_rsa.jessica.pub keydir/jessica.pub

    然后把他們都加進(jìn) 'mobile' 團(tuán)隊,讓他們對 iphone_project 具有讀寫權(quán)限:

    [group mobile]

    members = scott john josie jessica

    writable = iphone_project

    如果你提交并推送這個修改,四個用戶將同時具有該項目的讀寫權(quán)限。

    Gitosis 也具有簡單的訪問控制功能。如果想讓John只有讀權(quán)限,可以這樣做:

    [group mobile]

    members = scott josie jessica

    writable = iphone_project

    [group mobile_readonly]

    members = john

    readonly = iphone_project

    現(xiàn)在 John 可以克隆和獲取更新,但 Gitosis 不會允許他向項目推送任何內(nèi)容。像這 樣的組可以隨意創(chuàng)建,多少不限,每個都可以包含若干不同的用戶和項目。甚至還可以 指定某個組為成員之一(在組名前加上 @前綴),自動繼承該組的成員:

    [group mobile_committers]

    members = scott josie jessica

    [group mobile]

    members   = @mobile_committers

    writable  = iphone_project

    [group mobile_another]

    members   = @mobile_committers john

    writable  = another_iphone_project

    如果遇到意外問題,試試看把 loglevel=DEBUG 加到 [gitosis] 的段落,即把日志設(shè)置為調(diào)試級別,記錄更詳細(xì)的運行信息。如果一不小心搞錯了配置,失去了推送權(quán)限,也可以手工修改服務(wù)器上的 /home/git/.gitosis.conf 文件,因為Gitosis 實際是從該文件讀取信息的。它在得到推送數(shù)據(jù)時,會把新的 gitosis.conf 存到該路徑上。所以如果你手工編輯該文件的話,它會一直保持到下次向gitosis-admin 推送新版本的配置內(nèi)容為止。

    三、參考

    SSH原理與應(yīng)用

    官網(wǎng)手冊<pro git>,參看服務(wù)器部分

    Git服務(wù)器Gitosis安裝設(shè)置

    Git的可視化客戶端(GUI Client)

    第三部分:搭建B/S架構(gòu)Git服務(wù)器

    一、搭建步驟

    本部分將講解如何基于瀏覽器訪問Git服務(wù)器,雖然 GitWeb 相當(dāng)簡單,但眼下有一些更現(xiàn)代,功能更全的Git服務(wù)器,其中有幾個開源的解決方案可供人們選擇安裝。GitLab是其中最出名的一個,我將使用它作為示例并討論其安裝和使用。這比GitWeb要復(fù)雜的多并且需要更多的維護(hù),但它是一個功能更為健全的方案。

    1、安裝gitlab:

    GitLab是一個數(shù)據(jù)庫支持的開源web應(yīng)用,可通過Web界面進(jìn)行訪問公開的或者私人項目。它是一個擁有Github類似的功能、實現(xiàn)了自托管的Git項目倉庫。所以相比于其他git服務(wù)器,它的安裝過程涉及到更多的東西。幸運的是,這個過程有非常詳細(xì)的文檔說明和支持,而且在Bitnami(一個產(chǎn)生的開源軟件的項目)可以獲取一鍵安裝包:

    wpsD518.tmp

    在Ubuntu服務(wù)器端打開Bitnami,由于我的是64位操作系統(tǒng),選擇第一個進(jìn)行下載。(本教程基于gitlab 8.7.4-0)完成之后在終端下用cd命令進(jìn)入其所在目錄:

    $ sudo chmod +x bitnami-gitlab-8.7.3-0-linux-installer.run --修改權(quán)限,文件名以自己為準(zhǔn)

    $ sudo ./bitnami-gitlab-7.4.3-0-linux-installer.run --以管理員權(quán)限執(zhí)行安裝

    接下來將出現(xiàn)如下安裝界面(此前服務(wù)器需要安裝SSH server),整個過程基本點擊Next就可以完成安裝:

    wpsD529.tmp

    注意這里的小叉代表勾選

    wpsD52A.tmp

    設(shè)置你自己的郵箱、登錄名、密碼,這將在之后的網(wǎng)頁端作為管理員賬戶登錄信息

    wpsD52B.tmp

    如果你的默認(rèn)端口80, 3306有占用,則需要修改或者解除占用。我的80端口由于之前安裝過Apache而被占用,所以我將之卸載。(此一鍵安裝包已經(jīng)內(nèi)置了Apache2)

    這里提供一條卸載命令:$ sudo apt-get autoremove [application or package-name]

    wpsD53B.tmp

    用戶在網(wǎng)頁端注冊的時候需要對所填郵箱進(jìn)行驗證,所以這里的mail support建議勾選上,郵箱驗證沒通過是無法登錄gitlab的。當(dāng)然如果你在此并沒有勾選或者注冊后沒有收到驗證郵件也不要緊,在管理員登錄網(wǎng)頁端后,在全局設(shè)置界面可以方便的通過所有待驗證用戶。接下來一路Next直至Finish,Gitlab的安裝到此完成,之后會有幫助窗口出現(xiàn),有興趣可以看看。

    wpsD53C.tmp

    注意,在安裝的目錄下有個文件:ctlscript.sh,通過./ctlscript.sh可以關(guān)閉和啟動gitlab服務(wù)器:(具體見README文件)

    $ sudo /opt/gitlab-8.7.3-0/ctlscript.sh [start/stop/restart]

    gitlab在安裝目錄下有一個GUI管理控制臺,啟動命令:

    $ sudo /opt/gitlab-8.7.3-0/manager-linux-x64.run

    2、用戶管理:

    管理員登錄:

    接下來咱們打開Ubuntu的瀏覽器,在地址欄輸入localhost/將打開gitlab登錄頁面,輸入注冊時設(shè)置的郵箱(或者登錄名)以及密碼,進(jìn)入gitlab。

    注意:這里的地址也可以輸入安裝過程中提示的本地IP,我的是127.0.1.1;如果在局域網(wǎng)內(nèi)其他電腦上,則在地址欄輸入服務(wù)器IP。(Ubuntu命令行下ifconfig可以得到本地IP)

    wpsD54D.tmp

    新用戶注冊:

    在客戶端電腦打開瀏覽器,在地址欄輸入局域網(wǎng)服務(wù)器IP進(jìn)入登錄/注冊頁面:

    wpsD54E.tmp

     

     

     

     

     

     

     

     

    郵箱驗證(如果沒收到郵件繼續(xù)參照下方操作)

    wpsD55F.tmp

    回到剛剛登錄的服務(wù)器端的瀏覽器管理員頁面,點擊右上角的全局設(shè)置(下圖中的扳手)

    wpsD560.tmp

    點擊左側(cè)面板的Users

    wpsD561.tmp

    剛剛在PC端注冊的新用戶developer01出現(xiàn)在這里,點擊用戶名:

    wpsD562.tmp

    就能在接下來的頁面對其手動進(jìn)行驗證,點擊Confirm user,此驗證欄將消失,代表新用戶developer01已經(jīng)通過驗證,注冊成功。此時的PC端再次登錄就可以進(jìn)入Gitlab啦!

    wpsD572.tmp

    二、測試用例

    經(jīng)過以上的操作,希望大家對Gitlab頁面布局有一定的熟悉,接下來我將講解在各種環(huán)境下如何部署項目代碼倉庫并進(jìn)行基本操作。

    Gitlab的管理員頁面中,在左側(cè)的面板下可以非常便捷地創(chuàng)建用戶、用戶組、新工程,并進(jìn)行管理,還集成了各類事件消息。在為新工程添加用戶時可以設(shè)置其權(quán)限,添加后同樣可以在左側(cè)面板的Members選項面對其進(jìn)行管理。

    比如我在管理員端創(chuàng)建了mobiledevelopers用戶組,并在該組下創(chuàng)建了新工程mobile_dev,并添加了用戶developer01,而此時的developer01并沒有辦法對此項目倉庫進(jìn)行Git操作,提示需要添加SSH秘鑰:

    wpsD573.tmp

    參考前文生成的我們需要的ssh公鑰,其儲存路徑為~/.ssh/id_rsa.pub(用戶主目錄下.ssh/文件夾的id_rsa.pub),找到并用任意文本編輯器(推薦Notepad++)打開,復(fù)制其全部內(nèi)容(Ctrl+A、Ctrl+C),返回瀏覽器頁面點擊add an SSH key :

    wpsD574.tmp

    將公鑰粘貼(Ctrl+V)至key欄,下邊的Title在點擊時將自動填充,最后Add key添加成功,到此用戶developer01對此項目倉庫將具備管理員賦予的權(quán)限。

    Web頁面:

    進(jìn)入項目,點擊左側(cè)面板Files選項,可進(jìn)行文件的編輯、上傳,文件夾的上傳,創(chuàng)建新分支和標(biāo)簽(管理員)等行為。

    wpsD585.tmp

    例:創(chuàng)建一個新文本文件filetest01:

    wpsD586.tmp

    wpsD587.tmp

    提交后叫在左側(cè)的Merge Requests將出現(xiàn)此合并請求。

    命令行:

    新建Git項目

    Git global setup(Git全局設(shè)置):

    $ git config --global user.name "name"

    $ git config --global user.email "name@email.com"

    Create Repository(創(chuàng)建倉庫)

    $ mkdir common-util

    $ cd common-util

    $ git init

    添加并提交文件:

    $ touch README

    $ git add README

    $ git commit -m 'first commit'

    $ git remote add origin git@server:devteam/common-util.git

    $ git push -u origin master

    添加已存在Git項目:

    $ cd existing_git_repo 
    $ git remote add origin git@server:devteam/common-util.git
    $ git push -u origin master

    到此可正常進(jìn)行g(shù)it操作,具體請參看第一部分。

    客戶端:

    本教程介紹的客戶端均為Windows環(huán)境下。

    SourceTree

    使用SourceTree軟件進(jìn)行代碼開發(fā)的管理,客戶端免費支持windows和蘋果系統(tǒng),下載地址:http://www.sourcetreeapp.com/。

    安裝過程中需要認(rèn)證用戶,在FQ環(huán)境下訪問Atlassian注冊賬戶后繼續(xù)安裝,之后會下載一些依賴,完成后可選擇跳過初始設(shè)置。

    wpsD597.tmp

    這里對SSH key登錄進(jìn)行講解:

    1、生成SSH keys:點擊工具--創(chuàng)建SSH秘鑰--點擊Generate--點擊Save public key和save private key,保存好公鑰和私鑰

    wpsD598.tmp

    2、Gitlab 配置SSH keys:瀏覽器打開Gitlab登錄自己的賬戶,按前面提到的方法添加公鑰SSH keys。

    3、客戶端導(dǎo)入私鑰:回到source tree的工具,點擊“選項”,選擇上次生成的SSH秘鑰,點擊“確定”即可添加成功。

    4、SSH助手配置:點擊“啟動SSH助手”,點擊“Add Key”,選擇之前導(dǎo)出的私鑰,添加成功后,查看公鑰跟Gitlab網(wǎng)頁添加的相同,則說明配置成功。

    Eclipse中使用git--Egit:

    EGit是Eclipse上的Git插件,官方內(nèi)容參看:http://wiki.eclipse.org/EGit

    EGIT使用教程http://my.oschina.net/doloop/blog/221800

    Git Bash+EGit在項目中配合使用最常用方法:

    http://blog.csdn.net/hongshan50/article/details/22582049

    Visual Studio 中使用git:

    官方教程:https://www.visualstudio.com/en-us/get-started/code/gitquickstart

    三、參考

    gitlab的用戶使用手冊

    Bitnami GitLab Wiki

    GitLab版本管理

    gitlab多人協(xié)同工作

     
    轉(zhuǎn)自:https://www.cnblogs.com/linsanshu/p/5512038.html

    作者:林三豎

    補(bǔ)充:

    通過以上的步驟我們就完成了git服務(wù)器的搭建,完成搭建后,我們需要了解一下與git服務(wù)器交互過程中所用到命令。主要命令有 git clone、git remote、git fetch、git pull、git push等,下面我們逐一了解

    1、git clone

    此命令是我們和遠(yuǎn)程倉庫交互的第一步,通過此命令,我們可以將遠(yuǎn)程版本庫克隆到本地,如上面第7步我們就使用了此命令,將遠(yuǎn)程庫克隆道了本地。

    語法:git clone 版本庫的網(wǎng)址     本地庫名稱

    本地庫名稱可以省略,省略后在本地會生成一個和遠(yuǎn)程版本庫名字相同的目錄。

    2、git remote

    此命令用于管理遠(yuǎn)程主機(jī)名,此命令在沒有參數(shù)的情況下可以列出所有主機(jī)名。

    版本控制-搭建git服務(wù)器

    顯示origin是在使用clone命令,克隆遠(yuǎn)程版本庫時Git自動為遠(yuǎn)程主機(jī)命名。

    版本控制-搭建git服務(wù)器

    通過命令 git remote –v,可查看版本庫的網(wǎng)址。

    3、git fetch

    此命令可以將遠(yuǎn)程版本庫的更新,更新到本地庫。

    語法:git fetch 主機(jī)名字

    版本控制-搭建git服務(wù)器

    在默認(rèn)情況下,git fetch origin將會更新遠(yuǎn)程主機(jī)origin上的所有分支,如果只想更新某個分支,則在主機(jī)名origin后面加分支名。

    語法:git fetch origin master

    4、git push

    此命令用于將本地分支的更新推送到遠(yuǎn)程主機(jī)。

    語法:git push 遠(yuǎn)程主機(jī)名 本地分支名:遠(yuǎn)程分支名

    如果省略遠(yuǎn)程分支名,則表示將本地分支推送與存在最終關(guān)系的遠(yuǎn)程分支,如果遠(yuǎn)程分支不存在,則會被新建。

    如:git push origin master,表示將本地master分支推送到origin主機(jī)的master分支上。

    版本控制-搭建git服務(wù)器

    如果省略本地分子名,則表示要刪除遠(yuǎn)程主機(jī)中分支,如git push origin : master,則表示刪除origin主機(jī)中master分支

    5、git pull

    此命令用于獲取遠(yuǎn)程分支中更新。

    語法:git pull 遠(yuǎn)程主機(jī) 遠(yuǎn)程分支:本地分支如:git pull origin master:master,表示將遠(yuǎn)程主機(jī)origin中的master分支跟新到本地分支master。

    ======================================================

    https://www.jianshu.com/p/2ebd208975cd
    配置gitosis。如果你是git服務(wù)器的管理員,在你的計算機(jī)上(最好是另一臺PC)來生成訪問git服務(wù)器的ssh公鑰,然后將生成的公鑰拷貝到git服務(wù)器,執(zhí)行相關(guān)命令來允許你用個人的計算機(jī)進(jìn)行訪問和管理git服務(wù)器。本文檔以mqt@iMACdeiMac.local來做為遠(yuǎn)程訪問和控制git服務(wù)器的管理用戶。如果另外一臺電腦還是linux的電腦,還要在linux上安裝上git(傳送下載地址http://git-scm.com/downloads),并且初始化用戶git config那兩句命令

    如果是linux 或 蘋果系統(tǒng),在此計算機(jī)上的/home/git目錄下(隨便一個目錄都行)

    • 在你的PC上選擇一個用戶做為遠(yuǎn)程訪問及管理git服務(wù)器的用戶,同時并生成ssh公鑰。在選中的用戶的home下,執(zhí)行如下命令:
      iMACdeiMac:~ root# ssh-keygen -t rsa
      一直回車就行了,不需修改文件名
    • 接著,將生成的公鑰拷貝到服務(wù)器的/tmp下,注意要把改成git服務(wù)器對應(yīng)的IP地址:
      為了保險一點,你最好去看看服務(wù)器端/tmp目錄下是否有id_rsa.pub,若有,把它刪除了
      iMACdeiMac:~ root# scp .ssh/id_rsa.pub git:192.168.4.26/tmp
      輸入服務(wù)器登錄密碼,拷貝成功,如下圖:
      Paste_Image.png

    如果拷貝不成功,你也可以直接用U盤拷貝id_rsa.pub到這臺服務(wù)器上到/tmp目錄下,最壞的情況是不能拷貝的話,可以在服務(wù)器的/tmp下創(chuàng)建一個id_rsa.pub文件,內(nèi)容為:git服務(wù)器的管理員的id_rsa.pub里的內(nèi)容(即剛才生成的id_rsa.pub文件的內(nèi)容)

    • 回到git服務(wù)器/tmp/gitosis目錄,執(zhí)行:
      root@development:/tmp/gitosis# sudo chmod a+r /tmp/id_rsa.pub
    • 在git服務(wù)器上執(zhí)行如下命令,讓gitosis運行起來:
      root@development:/tmp/gitosis# sudo -H -u git gitosis-init < /tmp/id_rsa.pub
      會出現(xiàn)如下信息:
      Initialized empty Git repository in /home/repo/gitosis-admin.git/
      Reinitialized existing Git repository in /home/repo/gitosis-admin.git/
    • gitosis通過一個git倉庫來管理配置文件,倉庫放在/home/repo/gitosis- admin.git。我們需要為一個文件加上可執(zhí)行權(quán)限,以root用戶登錄(我操作是一直是以root用戶的):
      root@development:/tmp/gitosis# cd /home/git/repositories
      root@development:/home/git/repositories# cd gitosis-admin.git/
      root@development:/home/git/repositories# sudo chmod 755 /home/repo/gitosis-admin.git/hooks/post-update
      然后退出(退不退root無所謂):
      root@development:/home/git/repositories# exit

    在git服務(wù)器上搭建測試項目庫

    1.建立倉庫名“test”的測試倉庫。在git服務(wù)器上切換到git用戶,執(zhí)行如下命令建立測試倉庫:

    root@development:/home/git/repositories/gitosis-admin.git# su - git
    git@development:~$ cd /home/repo
    git@development:/home/repo$ mkdir test.git
    git@development:/home/repo$ cd test.git
    git@development:/home/repo/test.git$ git init --bare
    git@development:/home/repo/test.git$ exit

    到目前為止,這只是一個空倉庫,空倉庫是不能clone的。為了能clone,我們必須先讓某個有權(quán)限的人放一個初始化的版本到倉庫中。所以,我們必須先修改一下gitosis-admin。此時需要 管理gitosis的配置文件。

    2.gitosis本身的配置也是通過git中的gitosis-admin.git來實現(xiàn)的。
    • 克隆gitosis-admin.git倉庫。在git管理員用戶目錄下,把gitosis-admin.git這個倉庫clone下來,接下來我們可以用管理員的身份修改配置了。

    在git管理員用戶目錄執(zhí)行:
    iMACdeiMac:~ root# cd /Users/imac/Documents/gtis
    我把gitosis-admin.git放在/Users/imac/Documents/gtis這個目錄下
    iMACdeiMac:gtis root# git clone git@192.168.4.26:gitosis-admin.git
    在windows電腦上git base下一樣執(zhí)行這個克隆命令

    如果出現(xiàn):fatal: '~/gitosis-admin.git' does not appear to be a git repository
    fatal: The remote end hung up unexpectedly
    改成: sudo git clone git@192.168.4.26:/home/repo/gitosis-admin.git

    • 拷貝需要訪問git服務(wù)器的開發(fā)用戶的ssh公鑰 獲取倉庫后,執(zhí)行:

    進(jìn)入到剛剛克隆的管理倉庫
    iMACdeiMac:gtis root# cd gitosis-admin/

    該目錄下的keydir目錄是用來存放所有需要訪問git服務(wù)器的用戶的ssh公鑰:各個用戶按照前面提到的辦法生成各自的ssh公鑰文件后,把所有人的ssh公鑰文件都拿來,按名字命名一下(#### 注意:在各個用戶機(jī)上生成ssh公鑰時不要修改文件名,粘貼到gitosis-admin下的keydir目錄才修改文件名####),比如b@pc1.pub, lz@pc2.pub等,統(tǒng)統(tǒng)拷貝到keydir下:
    iMACdeiMac:gtis root# su root //蘋果系統(tǒng)下執(zhí)行 sudo su - root
    iMACdeiMac:gtis root# cp /path/.ssh/id_rsa.pub ./keydir/b@pc1.pub
    iMACdeiMac:gtis root# exit

    然后看看keydir目錄下是否有b@pc1.pub,若這樣的命令復(fù)制粘貼不行,直接手動復(fù)制粘貼到keydir目錄下也行,windows下直接復(fù)制粘貼

    • 修改gitosis.conf文件

    [group gitosis-admin] # 組名稱(可隨意起)
    members = mqt@iMACdeiMac.local b@pc1 #組員 :配置了兩個服務(wù)器管理員,mqt@iMACdeiMac.local 和 b@pc1,因為gitosis-admin 項目是配置權(quán)限用的
    writable = gitosis-admin # 組員對項目gitosis-admin有讀寫權(quán)限

    [group hello] # 組名
    members = mqt@iMACdeiMac.local b@pc1 # 為test項目配置兩個組員
    writable = test # 組員對項目test有讀寫權(quán)限

    如果想為一個用戶只配置讀權(quán)限,而沒有寫權(quán)限,在文件上添加:
    [group hello]
    members = b@pc2
    readonly = test # 組員b@pc2對項目test只有讀權(quán)限

    注意:members = keydir目錄下.pub文件名,否則沒有訪問權(quán)限

    目前這些配置文件的修改只是在你的本地,你必須推送到遠(yuǎn)程的gitserver上才能真正生效。 加入新文件、提交并push到git服務(wù)器:
    iMACdeiMac:gitosis-admin root# git add .
    iMACdeiMac:gitosis-admin root# git commit -am “add test prj and users”
    iMACdeiMac:gitosis-admin root# git push origin master

    gitosis.conf 文件的修改,起到的作用是:

    gitosis-admin組成員有 mqt@iMACdeiMac.local, b@pc1, 該組對gitosis-admin倉庫有讀寫權(quán)限;
    hello組有mqt@iMACdeiMac.loca, b@pc1兩個成員, 該組對test倉庫有讀寫權(quán)限

    測試搭建的項目庫

    • 服務(wù)器搭建完了,并且有一個空的項目test在服務(wù)器上。接下來測試一下,空倉庫是不能clone的,所以需要某一個有寫權(quán)限的人初始化一個版本。 下面是在b@pc1客戶端完成:

    mkdir test-ori
    cd test-ori/
    git init
    echo “/*add something*/” > hello #創(chuàng)建一個說明文件
    git add .
    git commit -am “initial version”
    git remote add origin git@192.168.4.26:test.git
    git push origin master

    這些命令一個都不能漏,到此,test已經(jīng)有了一個版本了,test倉庫的其他成員只要先clone一下test倉庫,就可以進(jìn)行倉庫的開發(fā)了。下面是一個用戶b來克隆test:

    su b
    cd /home/b
    git clone git@192.168.4.26:test.git
    cd teamwork
    vim hello
    git add .
    git commit -am “b add”
    git push origin master
    exit



    yum安裝Git服務(wù)器

    https://www.linuxidc.com/Linux/2014-05/101830.htm
    posted on 2018-03-08 10:44 Alpha 閱讀(3245) 評論(0)  編輯  收藏 所屬分類: Linux Nginx
    主站蜘蛛池模板: 一区在线免费观看| 国产一级在线免费观看| 国产精品免费一区二区三区| 免费无码成人AV在线播放不卡| 真实乱视频国产免费观看| 亚洲无人区一区二区三区| 亚洲а∨天堂久久精品9966| 国产A∨免费精品视频| 18禁超污无遮挡无码免费网站国产| 久久久无码精品亚洲日韩软件| jlzzjlzz亚洲jzjzjz| 成人免费乱码大片A毛片 | jyzzjyzz国产免费观看| 亚欧色视频在线观看免费| 亚洲精品国产电影| ASS亚洲熟妇毛茸茸PICS| 热99RE久久精品这里都是精品免费 | 国产卡一卡二卡三免费入口| 四虎影视免费永久在线观看| 亚洲精品免费在线| GOGOGO免费观看国语| 日韩一级视频免费观看| 亚洲美女在线观看播放| fc2免费人成为视频| 午夜一级免费视频| 亚洲综合网美国十次| 成在线人视频免费视频| 国产一级淫片免费播放电影| 亚洲一区二区三区免费视频| 国内永久免费crm系统z在线| 免费国产a国产片高清| 亚洲国产精品免费观看| 99久久人妻精品免费一区| 久久久久国产成人精品亚洲午夜 | 亚洲免费黄色网址| 久久亚洲国产精品一区二区| 色噜噜狠狠色综合免费视频| 最近2019中文字幕免费看最新| 亚洲黄色高清视频| 久久精品免费观看| 久久亚洲中文字幕精品一区四|