Linux作服務器,windows作爲客戶端,都需要安裝git
- 1、Linux安裝git(我這裏用的Ubuntu的系統) Centos 用yum安裝
apt-get -y install git
- 安裝完畢檢查
git --version
服務器創建git用戶,來管理git服務器
useradd git
passwd git
- Windows安裝git自行百度安裝
Git bash 可以運行Linux命令 ls mkdir touch vim 等等 也可以運行shell腳本(.sh) 模擬的Linux環境
- 安裝完畢檢查
- 2、服務器創建Git倉庫
- 設置/home/zhou/git/cd.git 爲Git倉庫
- 把Git倉庫所屬權修改給剛剛創建的git用戶
- 創建倉庫文件
mkdir -p /home/zhou/git/cd.git
- 初始化倉庫
git init --bare /home/zhou/git/cd.git
- 修改倉庫
cd.git
所屬權
cd /home/zhou/git
chown -R git:git cd.git/
-3、Windows克隆git倉庫 - 隨便在一個文件夾下面運行 Git Bash Here(Windows版本Git)
- 自己電腦公鑰和私鑰已經配置好了,用另一臺電腦先用密碼拉取和提交代碼演示
這裏需要輸入密碼,剛剛創建的管理Git倉庫的git用戶,上庫的時候也需要密碼,這樣操作比較麻煩
- 4、Windows客戶端創建SSH公鑰和私鑰
ssh-keygen -t -ras -C "郵箱@163.com"
公鑰和私鑰創建完成- id_rsa 私鑰
- id_rsa.pub 公鑰 複製到服務器
- 5、Linux服務器配置RSA
- Linux服務器配置rsa文件在 ‘/etc/ssh/sshd_config’
- vim 編輯配置文件 放開這三行的註釋
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
- 保存並重啓 不同Linux系統shh重啓不一樣,不同的自行百度
/etc/init.d/ssh restart
- 在/home/git 目錄下創建 .ssh
- 修改.ssh文件夾的所屬權
chown -R git:git .ssh
- 6、將Windows客戶端的公鑰導入
/home/git/.ssh/authorized_keys
- 方法一
- 先將id_rsa.pub 文件上傳至Linux服務器
cat id_ras.pub >> /home/git/.ssh//authorized_keys
- 先將id_rsa.pub 文件上傳至Linux服務器
- 方法二 在Git Bash中 重定向進去,這個操作需要密碼
ssh git@Linux機器IP 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
- 操作完畢,去Linux
/home/git/.ssh/authorized_keys
查看是否存在文件
修改 /home/git 下的 .ssh文件夾和authorized_keys文件權限
chomd 700 .ssh
chomd 600 authorized_keys
- 方法一
- 7、Windows客戶端再次連接clone遠程倉庫和push文件上庫操作,無需輸入密碼
提交時可能會報這個錯誤-
解決辦法
-
因爲Windows使用回車和換行兩個字符來結束一行,而Mac和Linux只使用換行一個字符。雖然這是小問題,但它會極大地擾亂跨平臺協作。
-
Git可以在你提交時自動地把行結束符CRLF轉換成LF,而在簽出代碼時把LF轉換成CRLF。用core.autocrlf來打開此項功能,如果是在Windows系統上,把它設置成true,這樣當簽出代碼時,LF會被轉換成CRLF:
$ git config --global core.autocrlf true
- Linux或Mac系統使用LF作爲行結束符,因此你不想 Git 在簽出文件時進行自動的轉換;當一個以CRLF爲行結束符的文件不小心被引入時你肯定想進行修正,把core.autocrlf設置成input來告訴 Git 在提交時把CRLF轉換成LF,簽出時不轉換:
$ git config --global core.autocrlf input
- 這樣會在Windows系統上的簽出文件中保留CRLF,會在Mac和Linux系統上,包括倉庫中保留LF
- 如果你是Windows程序員,且正在開發僅運行在Windows上的項目,可以設置false取消此功能,把回車符記錄在庫中:
$ git config --global core.autocrlf false
-