Linux搭建git服務器

首先cmd里ssh命令登入服務器

Windows7用戶cmd沒有ssh命令的 openSSH官網(wǎng)下載安裝 →

git客戶端下載安裝 Git官網(wǎng)→

  # 10.10.10.10為服務器ip
  $ ssh root@10.10.10.10
  # 輸入密碼

1、安裝git

$ yum install git
$ git --version
# 接下來創(chuàng)建一個git(自己新建的用戶名)用戶組和用戶(后面會解釋為什么要新建一個用戶)钮科,用來運行g(shù)it服務:
$ groupadd git
$ adduser git -g git
$ passwd git

注意:git版本太低裤园,可能會導致后續(xù)問題。Git_2.9.2 進行編譯安裝教程 →

2泻肯、創(chuàng)建證書登錄

收集所有需要登錄的用戶的公鑰,公鑰位于id_rsa.pub文件中,把公鑰導入/home/git/.ssh/authorized_keys文件里渊迁,一行一個。如果沒有該文件創(chuàng)建它
git 安裝及配置參考

 $ cd /home/git/ 
 $ mkdir .ssh 
 $ chmod 700 .ssh 
 $ touch .ssh/authorized_keys 
 $ chmod 600 .ssh/authorized_keys

3灶挟、初始化Git倉庫

首先我們選定一個目錄作為Git倉庫琉朽,假定是/home(可自行創(chuàng)建文件目錄,但不能是系統(tǒng)根目錄或者是其他用戶目錄稚铣,當前我們創(chuàng)建的用戶為git)箱叁, 輸入以下命令:

$ cd /home
# Git命令創(chuàng)建一個空倉庫,服務器上的Git倉庫通常都以.git結(jié)尾惕医。
$ git init --bare code.git
# 將code.git目錄的擁有者(用戶組)設為 git 群體的使用者 git (用戶)
$ chown -R git:git code.git     

4耕漱、克隆倉庫

# 此時可以在客戶端測試,試試用我們新建的git用戶來登錄(10.10.10.10 為 Git 所在服務器 ip)
git clone git@10.10.10.10:/home/code.git         #可能需要輸入git用戶密碼
# 或者root用戶登錄
git clone root@10.10.10.10:/home/code.git       #此時輸入root密碼

別去試push抬伺,現(xiàn)在上傳后服務器是沒有那個文件的螟够,只要提示不報錯就算這一步成功了(一般會提示版本庫為空什么的)。

注意:此時如果是下載的包編譯安裝的可能會報錯(沒有報錯就略過)

bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly

什么原因呢峡钓?

原來代碼服務器【10.10.10.10】上的git安裝路徑是/usr/local/git妓笙,不是默認路徑,根據(jù)提示能岩,在git服務器10.10.10.10上寞宫, 建立鏈接文件

[root@localhost code]# ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack

當然,如果無法修改git代碼服務器上配置拉鹃,可以在clone時淆九,添加--upload-pack選項來指定git服務器上的git-upload-pack 路徑统锤,達到上面相同的目的,如下所示:

[root@localhost code]$ git clone --upload-pack "/usr/local/git/bin/git-upload-pack" git@10.10.10.10:/home/code.git

后續(xù)可能上傳文件或者下拉文件等可能會出現(xiàn)類似的git-receive-pack 等錯誤炭庙,和以上同理(比如以下幾個常用的)


image.png

5饲窿、禁止git用戶shell登錄

剛剛創(chuàng)建的用戶作用來了,如果你只想這個用戶被用來當做git上傳代碼焕蹄,你可以執(zhí)行以下操作

vi /etc/passwd

修改git的bash 從 /bin/bash 改為 /usr/bin/git-shell

6逾雄、設置git鉤子

進入我們的裸倉庫的hooks文件夾,然后新建一個post-receive文件腻脏。

$ cd hooks/

$ vi post-receive

在post-receive寫入以下*兩行*內(nèi)容:

      #!/bin/bash
      git --work-tree=/www/project checkout -f

# 其中/www/project為你實際需要同步的站點目錄鸦泳。
# 然后修改post-receive為可執(zhí)行文件(其實這就是一個腳本文件)

$ chmod +x post-receive

# post-receive的原理就是,當遠程倉庫發(fā)現(xiàn)有用戶執(zhí)行了push操作永品,就會執(zhí)行一個腳本post-receive(鉤子)做鹰。其實git還提供了很多其它動作的鉤子,這里我們就不深入了解了鼎姐。

# 注意:同時你還需要修改你的web站點目錄的權(quán)限钾麸,修改所屬用戶與用戶組為git,否則鉤子的權(quán)限可能會不足而導致執(zhí)行失敗炕桨。#(你也可以通過添加git用戶到相應的用戶組來解決問題)

$ chown git:git -R /www    # 修改所屬用戶

7饭尝、大功告成

設置好鉤子后,當你本地再次執(zhí)行push的時候献宫,你會發(fā)現(xiàn)你web目錄的文件也同步的更新了钥平。

客戶端常用git命令

# 首次使用git需要你配置一個全局的用戶名和郵箱,"John doe"為自定義的用戶名
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

# 可以通過以下命令查看自己配置的屬性
$ git config --get user.name
$ git config --get user.email

# origin是目標地址 dir是下載到哪個目錄下 master為自己的分支
# 下載
$ git clone origin dir

# 上傳
$ git push origin master

# 下拉
$ git pull origin master

# 查看遠程倉庫名稱
$ git remote 

# 查看遠程倉庫地址
$ git remote get-url origin 

# 設置遠程倉庫地址別名
$ git remote add origin git@10.10.10.10:/home/code.git        # 如果未設置ssh-key姊途,此處倉庫地址為 http://... 開頭

# 刪除本地倉庫當前關聯(lián)的遠程倉庫
$ git remote rm origin 

# 忽略上傳文件或目錄
   根目錄創(chuàng)建 .gitignore 文件寫文件名或者目錄

# 強制覆蓋遠程倉庫
$  git push --force origin master

# 刪除遠程倉庫的版本庫
$ git push  origin :master

喜歡 關注 評論
↓ ↓ ↓

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涉瘾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子捷兰,更是在濱河造成了極大的恐慌立叛,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寂殉,死亡現(xiàn)場離奇詭異囚巴,居然都是意外死亡,警方通過查閱死者的電腦和手機友扰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門彤叉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人村怪,你說我怎么就攤上這事秽浇。” “怎么了甚负?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵柬焕,是天一觀的道長审残。 經(jīng)常有香客問我,道長斑举,這世上最難降的妖魔是什么搅轿? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮富玷,結(jié)果婚禮上璧坟,老公的妹妹穿的比我還像新娘。我一直安慰自己赎懦,他們只是感情好雀鹃,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著励两,像睡著了一般黎茎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上当悔,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天傅瞻,我揣著相機與錄音,去河邊找鬼先鱼。 笑死俭正,一個胖子當著我的面吹牛奸鬓,可吹牛的內(nèi)容都是我干的焙畔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼串远,長吁一口氣:“原來是場噩夢啊……” “哼宏多!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起澡罚,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤伸但,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后留搔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體更胖,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡隔显,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年却妨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片括眠。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡彪标,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出掷豺,到底是詐尸還是另有隱情捞烟,我是刑警寧澤薄声,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站题画,受9級特大地震影響默辨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜苍息,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一廓奕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧档叔,春花似錦桌粉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至传蹈,卻和暖如春押逼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惦界。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工挑格, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沾歪。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓漂彤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親灾搏。 傳聞我的和親對象是個殘疾皇子挫望,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348