git知識和github知識來源於網絡,本人進行測試與總結後本身截圖發佈。git
Git是目前世界上最早進的分佈式版本控制系統,和svn,vss等同樣都是進行版本控制的。github
GitHub是一個軟件項目的託管平臺,至關於本身創建的 svn服務器,vss服務器,GitHub平臺能夠創建私人倉庫和公開倉庫,私人倉庫須要收費,公開倉庫不收費,但你們均可以避免費下載(不能夠更改)windows
接下來就講解一下如何使用Git與GitHubbash
(1) 申請GitHub服務器
打開網址:https://github.com/,點擊signup,註冊一個github帳號網絡
(2)下載並安裝gitssh
打開網址:https://git-scm.com/downloads分佈式
點擊windows,選擇適合本身的版本,進行安裝。svn
(3)在某個磁盤下新建一個文件夾做爲本地倉庫測試
點擊右鍵 「git bash here」
配置本身的名稱:
$ git config --global user.name 'test'
$ git config --global user.email 'test@test.com'
查詢是否配置成功
$ git config --global user.name
$ git config --global user.email
(3)在GitHub建立倉庫
打開網址https://github.com/,並進行登陸
點擊your repositories,點擊new,填寫倉庫信息,點擊create repository
(4)本地倉庫和GitHub對接
首先建立密鑰,上傳到github,進行之後的身份驗證
執行命令:$ ssh-keygen -t rsa -C *****@qq.com
這裏的郵箱,必須是github帳號的郵箱,根據提示進行輸入
找到密鑰存儲位置,打開公鑰,複製裏面的內容
在github網站把此內容複製到相應窗口:
我的中心->setting->ssh and gpgkeys->new ssh key->add ssh key
(5)github倉庫clone到本地
執行一下命令:
$ git clone git@github.com:fengyuzhexing/test.git【本身的git地址】
輸入密碼
能夠看到項目已經clone到本地了
(6)提交到本地倉庫
在此目錄下新建一個文件 test.txt,輸入內容:testbegin,
把文件提交到本地倉庫
首先運行pwd命令,看當前所在目錄
切換目錄到須要提交的文件目錄
運行命令:
$ git add 'test.txt'
$ git commit -m 'testfirst'
$ git log【查看提交記錄】
(7)提交到遠程倉庫
$ git push origin master
能夠看到github網站已經有新建的文件了
(8)建立分支
分支概念圖
一般狀況下,github會有一個默認的主分支 master,這個分支通常都是存放最終發佈版本的代碼,通常狀況下會創建一個新的分支 例如 dev,在這個分支上進行開發維護,最後在發佈以前,合併到master分支。
每個分支,都是一個獨立的版本,擁有本身版本時間線,在不一樣分支下的操做是相互獨立的。
接下來能夠參看一下一個例子
$ git checkout -b dev
$ git branch
能夠看到已經切換到了dev這個分支,此時dev分支的內容和master是同樣,至關因而從當前master進行了一份copy
當前在dev下的任何提交不會影響mater分支,只是在dev分支上進行處理
編輯test.txt 文件
運行一下命令,提交
$ git add 'test.txt'
$ git commit -m 'dev'
$ git log
$ git switch master
$ git branch
能夠看到已經切換到了master
再打開文件看內容是什麼,能夠看到這個文件的內容沒有變化,仍是master分支的數據。
$ git merge dev
再次查看 master下的test.txt,能夠看到dev數據被合併過來了
刪除dev分支
$ git branch -d dev
4 解決衝突
衝突出現的緣由:
每一個人在本地都有一套本身的源碼庫,在開發過程當中
A 同窗 修改了本地的 test.txt,
B 同窗 也修改了本地的 text.txt
這時候 A同窗 把本地代碼 push到 服務器倉庫,B同窗再想push到服務器倉庫,就會出現問題,由於B同窗不能夠覆蓋A同窗的更改,因此這時候 B同窗就要把代碼pull下來就行代碼合併,解決完衝突再上傳到服務器倉庫。
由於以前的改動都是在本地,因此首先將本地的代碼先提交到github,運行如下命令
$ git push origin master
打開github網站,能夠看到本地數據和git服務器數據已經同步
打開github後臺,在線修改test.txt,而後提交
輸入如下內容:
輸入 commit 備註,點擊commit changes
此時A同窗已經把代碼進行了更改,而且提交到服務器
在本地倉庫打開test.txt,輸入如下內容:masterB-localchange
在命令行輸入 提交命令
$ git add 'test.txt'
$ git commit -m 'b-local'
$ git push origin master
在提交到服務器倉庫命令時,出現異常
首先把服務代碼拉取下來
$ git pull
找到衝突文件,能夠看到這裏已經合併了文件,但有問題,須要本身手動編輯
編輯後文件
再次運行如下命令從新上傳
$ git add 'test.txt'
$ git commit -m 'hebing'
$ git push origin master
上傳成功了
再次打開github網站查看內容,已經同步過去了
(5)版本回退
回退版本命令:$ git reset --hard 【待回退的comitid】
有時候可能提交失敗了,必需要回退回某一個版本能夠運行如下命令:
$ git log
能夠回退到dev當時的版本,運行如下命令
$ git reset --hard 57554
能夠看到數據已經回退回去了
再運行 git
$ git reset --hard 8cf6c
能夠看到版本又回來了