環境:Cent_os_7系統 ,SoureTree ,Xshell5
本案例是在虛擬機下安裝Cent_os_7系統搭建git環境用作服務端,實現本地與服務端的數據傳輸。
1.服務端git環境搭建。
首先在虛擬機中打開運行系統,登陸後輸入:
yum install git
(這裏可以用xshell5連接服務端進行git環境搭建)
然後會有安裝過程的進度顯示
再次輸入:
yum install git
會顯示已安裝
這裏服務端的git環境已經搭建好了。
2.本地git環境設置
可以用gitbash敲命令行進行控制,我是安裝了一個SoureTree軟件,安裝教程網上搜索一下有很多,這裏就不做介紹了。
先來說一下SSH密鑰的使用,通過密鑰可以不用輸入密碼來進行文件推送拉取。步驟也很簡單,打開sourcetree點擊工具
初始的時候工具第二行是生成或添加SSH密鑰,這裏不建議使用這個生成密鑰,因爲太慢了,點擊命令行模式
會跳出類似gitbash的命令行窗口,輸入:
ssh-keygen -t rsa
這裏第一個要輸入的是密鑰保存地址,我是直接空格過去保存在默認地址的,知道在哪裏就行了,然後輸入密碼,再次輸入密碼,我沒有設置密碼,直接空格兩下過去了
會有一個密鑰生成的圖形,說明密鑰已經生成了,然後找到密鑰所在的文件夾,也就是密鑰保存的地址,可以看到兩個文件
id_rsa.pub 是公鑰,id_rsa 是私鑰,找到後切換到souretree,打開工具->選項ssh客戶端配置
將公鑰私鑰都導進去,然後點確認就行了。接下來我們再切換到服務器配置密鑰,cd 到 root 根目錄下輸入:
mkdir .ssh
創建密鑰文件目錄
然後打開文件傳輸進入到.ssh文件目錄下,將之前生成的公鑰傳到這個目錄下,然後改名爲authorized_keys,這裏解釋一下,因爲服務器讀取公鑰是讀取的這個文件名下的,可以在服務器etc/ssh/sshd_config查看配置文件,右鍵打開這個sshd_config文件
可以看到這個配置信息:AuthorizedKeysFile .ssh/authorized_keys
進行到這裏的話,密鑰登錄就已經配置好了,若想在xshell5用這個密鑰來登錄服務器需要配置一下
右鍵服務器名選擇屬性
用戶驗證這裏選擇密鑰選項,點擊瀏覽將之前生成的私鑰導入就行了
然後就可以用這個密鑰登錄服務器了。
3.git倉庫搭建
在服務器上創建git倉庫的文件目錄,然後進行初始化
mkdir git
cd git
git init
這樣服務器的git倉庫就創建好了,可能會出一些問題,輸入
git branch
查看一下有沒有生成默認分支,若是沒有生成的話需要進行添加提交的動作,隨便拖一個文件,或着倉庫裏有文件,做一次add跟commit操作就可以了
git add .
git commit -m "first "
然後可以發現會生成一個master分支,接下來可以在sourcetree克隆服務端倉庫到本地了
xshell5的地址欄有個地址,我的是ssh://[email protected]:22
把這個地址複製下來
打開sourcetree點擊克隆
把地址粘貼到源路徑,後面跟上服務端git倉庫的地址/home/git,然後寫上本地倉庫的目標路徑,然後點克隆就行了
這就是克隆完成了,不過可能還會有個推送的問題
[remote rejected]master -> master (branch is currently checkedout)
remote: error: refusing to update checked out branch:refs/heads/master
remote: error: By default, updating the current branch in anon-bare repository
remote: error: is denied, because it will make the index and worktree inconsistent
remote: error: with what you pushed, and will require 'git reset--hard' to match
remote: error: the work tree to HEAD.
remote: error:
...
出現這種情況的話需要找到服務端git倉庫下的配置文件.git/config
右鍵打開編輯
在下面加上這行
[receive]
denyCurrentBranch = ignore
然後保存就可以推送了
這就推送完成了,或許還會有個問題,你在服務器端可能看不到你剛纔推送的更新,這個時候你需要看一下緩存區的狀態
git stash
若是已經在你剛提交的這個狀態了,說明就推送到了,若是沒有,那就輸入
git log
查看一下版本,然後輸入
git reset --hard <-版本編碼->
定位到推送的版本,這樣就可以查看剛纔的推送了。對於無法及時檢出推送的問題可以查看我的這篇博客點擊打開鏈接