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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Git】搭建Git 服务器

發布時間:2025/3/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Git】搭建Git 服务器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 服務器操作
    • 1. 安裝 git
    • 2. 添加 git 賬戶
    • 3. 創建證書 登錄
    • 4. 在Git服務器上打開 RSA認證
    • 5. 初始化Git倉庫 (在服務器 xx.xx.xx.xx 上創建裸倉庫)
    • 6. 創建一個空倉庫之后,服務器上的Git倉庫通常都以.git結尾。然后,把倉庫所屬用戶改為git:
    • 7. 當遠程倉庫發現有用戶執行了push操作,就會執行一個腳本post-receive(鉤子)。
    • 8. 禁止 Shell 登錄
  • 客戶端操作
    • 1. 創建公鑰驗證
    • 2. 克隆
  • 遇到的問題
    • 1. 客戶端執行的時候到Total ........卡住不執行了(提交文件過大),查了一些之后,,,兩種解決方案
    • 2. 22 端口問題

業務需要,需要自己在服務器上搭建git倉庫, 硬著頭皮,就是干 , 內容有點長,但個人感覺還是有借鑒之處的,歡迎支持,分享
服務器ip: xx.xx.xx.xx
系統: Centos7
項目目錄: /var/www/html
倉庫版本管理目錄: /home/<用戶名>/gitrepo

服務器操作

1. 安裝 git

安裝git $ sudo yum install git -y 查看git 版本(檢查是否成功) # git --version git version 2.7.4

2. 添加 git 賬戶

有的操作系統上會在你安裝git時會同時幫你創建一個git用戶,但Ubuntu的需要我們手動來創建。這也非常簡單的,那我們就來手動創建一個git用戶:

$ sudo adduser git

3. 創建證書 登錄

收集所有需要登錄的用戶的公鑰,公鑰位于id_rsa.pub文件中,把我們的公鑰導入到/home/git/.ssh/authorized_keys文件里,一行一個。
如果沒有該文件創建它:

# cd /home/git/ # mkdir .ssh # chmod 755 .ssh # touch .ssh/authorized_keys # chmod 644 .ssh/authorized_keys

說明一下: 客戶端創建id_rsa.pub , 我會在 客戶端部分說明過程.

4. 在Git服務器上打開 RSA認證

# vim /etc/ssh/sshd_config RSAAuthentication yes PubkeyAuthentication yes # AuthorizedKeysFile <你的authorized_keys所在路徑> AuthorizedKeysFile /home/git/.ssh/authorized_keys

5. 初始化Git倉庫 (在服務器 xx.xx.xx.xx 上創建裸倉庫)

裸倉庫是不儲存文件的, 裸(bare)倉庫里只存儲歷史和元信息(詳細格式),不會維護工作目錄。
什么是裸倉庫呢?
就是沒有工作目錄的倉庫, 不能執行有關git的任何命令,只記錄歷史提交信息,
只能通過clone它的倉庫對它進行push操作對它進行更新。
裸倉庫一般用來做多人代碼交換的中轉站,它只有這么些目錄:
branches config description HEAD hooks info objects refs

# cd /home/<用戶名>/gitrepo 方法一: 創建文件夾 web.git # mkdir web.git # cd web.git # git init --bare Initialized empty Git repository in /home/<用戶名>/gitrepo/web.git/ 方法二: 直接一條命令完成 方法一的操作 # git --bare init web.git Initialized empty Git repository in /home/<用戶名>/gitrepo/web.git/

6. 創建一個空倉庫之后,服務器上的Git倉庫通常都以.git結尾。然后,把倉庫所屬用戶改為git:

# cd /home/<用戶名>/gitrepo# chown -R git:git web.git

其實,這個時候我們可以在自己的客戶機上 克隆了,
git clone git@<服務器IP>:/home/<用戶名>/gitrepo/web.git web
但是,存在3種情況,多與權限 密碼 相關

  • git密碼登錄
  • ssh, 由于在第三步已經做了ssh , 所以我們克隆的時候是免密的
  • 服務器端的git倉庫目錄權限不足, 可以使用
    chown git:git -R /home/<用戶名>/gitrepo
  • 嚴格來說,其實Git并沒有所謂的服務器端和客戶端,這也是Git和SVN最大的一點不同。不管你在哪里創建了一個git倉庫,原理上它都可以充當一個git服務器,這取決于你的配置。深入了解就涉及到很多git的原理知識了,感趣興的同學可以自行去學習,當然,我也非常推薦你這樣去做。

    7. 當遠程倉庫發現有用戶執行了push操作,就會執行一個腳本post-receive(鉤子)。

    # cd /home/<用戶名>/gitrepo/web.git/hooks # vim post-receive #!/bin/bash git --work-tree=<實際需要同步的站點目錄> checkout -f例如: git --work-tree=/var/www/html/web checkout -f 修改post-receive為可執行文件(其實這就是一個腳本文件) # chmod +x post-receive

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

    # chown git:git -R /var/www/html/web # 修改所屬用戶

    8. 禁止 Shell 登錄

    Git 創建的用戶可以通過 ssh 連接到服務器,對服務器安全造成一定影響。所以禁止 Git 用戶 shell 登錄,只賦予其操作 Git 的相關權限就可以了。

    # vim /etc/passwd 修改 git:x:1001:1001::/home/git:/bin/bash 為git:x:1001:1001::/home/git:<你的git-shell路徑>我的路徑是這樣的:git:x:1001:1001::/home/git:/usr/bin/git-shell 可以通過 find / |grep git-shell 查找git-shell路徑

    到這兒,服務器端相關的配置也就基本上ok了

    客戶端操作

    1. 創建公鑰驗證

    配置之后,從本地更新代碼到服務器時,將不會再提示輸入密碼。
    下面是Linux , Window 兩種操作系統的操作:

    Linux OS : 查看根目錄下 有沒有 .ssh/ 如果列出了authorized_keys、id_rsa、id_rsa.pub 則證明你擁有公鑰 如果沒有, 那么可以 # ssh-keygen 三次回車 OK 搞定 公鑰默認在 id_rsa.pub 中Window OS 打開 git bash 執行 ssh-keygen.exe id_rsa.pub 應該在 C:\Users\<用戶名>\.ssh 下

    最后把 id_rsa.pub 中的內容 復制給 git服務端人員, 他將把你的公鑰貼到
    /home/git/.ssh/authorized_keys

    2. 克隆

    git clone git@<服務器IP>:/home/<用戶名>/gitrepo/web.git web

    這樣, 一個Git服務器就搭建完成了, 感興趣的小伙伴可以分享/支持/評論

    遇到的問題

    1. 客戶端執行的時候到Total …卡住不執行了(提交文件過大),查了一些之后,兩種解決方案

    1-1)
    全局: # git config --global sendpack.sideband false
    本地: # git config --local sendpack.sideband false
    1-2)
    # git config http.postBuffer 524288000
    然而對我而言,都沒有用到

    2. 22 端口問題

    一般我們會修改服務器上默認端口,所以很容易出現下面的錯誤

    $ git clone git@<服務器IP>:/home/<用戶名>/gitrepo/web.gitssh: connect to host <服務器IP> port 22: Connection refused fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists. 解決方案: $ git clone ssh://git@<服務器IP>:<端口號>/home/<用戶名>/gitrepo/web.git成功搞定,端口問題整了3個多小時, 查了很多, 唉,,強大的谷歌/百度所以說搜索技巧很重要~感謝這位同仁: https://www.bdelay.com/article/327

    感謝閱讀!

    參考鏈接:
    http://www.runoob.com/git/git-server.html
    https://www.jianshu.com/p/a9c79489e3d3

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。