安裝git
首先須要在服務器上安裝git環境,以centos爲例:node
yum install git
而後添加一個用戶,就叫git吧。linux
adduser git passwd git input your password...
而後在終端輸入 gitgit
添加信任關係
linux默認是不信任任何機器的,經過ssh登陸其餘主機都須要輸入密碼,創建信任關係的過程就是一臺主機生成公鑰,把公鑰放到其餘主機上,而後這個主機經過ssh登陸其餘機器就不須要輸入密碼了。 在用戶家目錄下默認是沒有.ssh目錄的:github
cd /home/git ls -al
由於沒有生成過公鑰,生成公鑰和私鑰的命令爲:(-t 的意思是加密算法爲rsa)算法
ssh-keygen -t rsa ls -al
一路回車,而後在用戶的家目錄下能看到 .ssh 目錄。收集全部須要登陸的用戶的公鑰,就是該用戶的/.ssh/id_rsa.pub文件,把全部公鑰導入/home/git/.ssh/authorized_keys文件。而後就能夠經過ssh username@ip 直接遠程登陸其餘機器,而不須要使用密碼了。因爲git跟遠程倉庫的交互主要依靠http和ssh,這個步驟的目的就是讓遠程提交的時候不須要每次都輸入密碼。shell
問題是window下如何生成這個公鑰呢? 經過windows下的git工具就能夠生成公鑰了,並且生成的公鑰也是在當前用戶的家目錄。windows
scp C:/Users/semptian/.ssh/id_rsa.pub git@47.95.11.33:/tmp ssh git@47.95.11.33 "cat /tmp/id_rsa.pub >> /home/git/.ssh/authorized_keys"
scp是遠程複製的命令,把本地的公鑰文件遠程複製到/tmp下;而後登陸服務器,把/tmp下的文件添加到git用戶的authorized_keys中。 本地經過ssh命令登陸到遠程服務器不要密碼,算是信任關係已經創建。centos
初始化git倉庫
先選定一個目錄做爲遠程git倉庫。服務器
su root mkdir /srv/repository/sample cd /srv/repository/sample git init --bare sample.git ls -al
把遠程倉庫於本地之間的交互
在本地的一個目錄下運行git Bashssh
git clone git@47.95.11.33:/srv/repository/sample/sample.git
本地代碼的提交:
git init #初始化本地文件夾爲git倉庫 git add . #把當前文件夾中的全部文件添加到git倉庫,也能夠添加某一個文件。 git commit -m "commit" #提交 git remote add origin git@47.95.11.33:/srv/repository/sample/sample.git #與github倉庫創建遠程鏈接 git push -u origin master #把本地的項目推送到github遠程倉庫
一、git remote add origin git@47.95.11.33:/srv/repository/sample/sample.git #與遠程倉庫創建遠程鏈接 二、git push -u origin master #把本地的項目推送到github遠程倉庫 一、2兩個命令等價於如下這個命令: git push -u origin master git@47.95.11.33:/srv/repository/sample/sample.git
若是當前分支與多個主機存在追蹤關係,可使用-u選項指定一個默認主機,這樣後面就能夠不加任何參數使用git push,而後下次就提交以後就能夠直接 git push 了。
#與遠程倉庫同步 git pull --rebase origin master
遇到的一些錯誤
在提交的時候報錯:
$ git commit -m "test_02" *** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (got 'semptian@DESKTOP-QVJGTA9.(none)')
提示中git config --global 是全局的配置,單獨爲項目配置的方法(全局和單獨配置都存在的時候會默認使用項目單獨配置的): 1.打開項目所在目錄,找到隱藏的.git文件夾。注意這個文件夾是隱藏的,顯示隱藏出來就行。 2.打開文件夾裏的config文件,推薦用nodepad++打開。 3.添加這三行到文件:
[user] name = XXX(本身的名稱) email = XXXX(郵箱)
輸入 git log 報錯:
fatal: Not a git repository (or any of the parent directories): .git
須要在git倉庫的根目錄中使用git命令。
push到遠程的時候報錯:
fatal: remote part of refspec is not a valid name in git@47.95.11.33:/srv/repository/sample/sample.git
可能這是第二次提交,添加了遠程倉庫以後能夠直接 git push 。