Git與GitHub 學習筆記

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分支。

每個分支,都是一個獨立的版本,擁有本身版本時間線,在不一樣分支下的操做是相互獨立的。

接下來能夠參看一下一個例子

  1. 新建分支 dev,並切換到分支

$ git checkout -b dev

$ git branch

能夠看到已經切換到了dev這個分支,此時dev分支的內容和master是同樣,至關因而從當前master進行了一份copy

 

 

 

  1. 在dev下進行提交

當前在dev下的任何提交不會影響mater分支,只是在dev分支上進行處理

編輯test.txt 文件

 

 

 

運行一下命令,提交

$ git add 'test.txt'

$ git commit -m 'dev'

$ git log

 

 

  

 

 

 

  1. 切換到master,進行查看

$ git switch master

$ git branch

能夠看到已經切換到了master

 

 

 

再打開文件看內容是什麼,能夠看到這個文件的內容沒有變化,仍是master分支的數據。

 

 

 

  1. 合併dev到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服務器數據已經同步

 

 

 

 

 

 

  1. 模擬A同窗修改本地代碼

打開github後臺,在線修改test.txt,而後提交

 

 

 

 

 

 

輸入如下內容:

 

 

 

輸入 commit 備註,點擊commit changes

 

 

 

此時A同窗已經把代碼進行了更改,而且提交到服務器

  1. 模擬B同窗修改代碼

在本地倉庫打開test.txt,輸入如下內容:masterB-localchange

 

 

 

在命令行輸入 提交命令

$ git add 'test.txt'

$ git commit -m 'b-local'

 

 

 

$ git push origin master

在提交到服務器倉庫命令時,出現異常

 

 

 

  1. 衝突解決

首先把服務代碼拉取下來

$ 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

能夠看到版本又回來了

 

相關文章
相關標籤/搜索