TortoiseGit + GitHub 使用指南

 

關於Gitcss

Git是用C語言開發的分佈版本控制系統。版本控制系統能夠保留一個文件集合的歷史記錄,並能回滾文件集合到另外一個狀態(歷史記錄狀態)。另外一個狀態能夠是不一樣的文件,也能夠是不一樣的文件內容。舉個例子,你能夠將文件集合轉換到兩天以前的狀態,或者你能夠在生產代碼和實驗性質的代碼之間進行切換。文件集合每每被稱做是「源代碼」。在一個分佈版本控制系統中,每一個人都有一份完整的源代碼(包括源代碼全部的歷史記錄信息),並且能夠對這個本地的數據進行操做。分佈版本控制系統不須要一個集中式的代碼倉庫。 git

當你對本地的源代碼進行了修改,你能夠標註他們跟下一個版本相關(將他們加到index中),而後提交到倉庫中來(commit)。Git保存了全部的版本信息,因此你能夠轉換你的源代碼到任何的歷史版本。你能夠對本地的倉庫進行代碼的提交,而後與其餘的倉庫進行同步。你可使用Git來進行倉庫的克隆(clone)操做,完整的複製一個已有的倉庫。倉庫的全部者能夠經過push操做(推送變動到別處的倉庫)或者Pull操做(從別處的倉庫拉取變動)來同步變動。 github

Git支持分支功能(branch)。若是你想開發一個新的產品功能,你能夠創建一個分支,對這個分支的進行修改,而不至於會影響到主支上的代碼。  算法

Git提供了命令行工具;這個教程會使用命令行。你也能夠找到圖形工具,譬如與Eclipse配套的EGit工具,可是這些都不會在這個教程中進行描述。  服務器

 

術語解釋:網絡

倉庫 :一個倉庫包括了全部的版本信息、全部的分支和標記信息.  併發

Repository   : 在Git中倉庫的每份拷貝都是完整的。倉庫讓你能夠從中   取得你的工做副本。  ide

分支:一個分支意味着一個獨立的、擁有本身歷史信息的代碼線  ,你能夠從已有的代碼中生成一個新的分支   Branches   ,這個分支與剩餘的分支徹底獨立。默認的分支每每是叫   master。用戶能夠選擇一個分支,選擇一個分支叫作   checkout   標記  一個標記指的是某個分支某個特定時間點的狀態。經過標  記Tags,能夠很方便的切換到標記時的狀態,例如2009年1月25   號在testing分支上的代碼狀態 工具

提交  :提交代碼後,倉庫會建立一個新的版本。這個版本能夠在   Commit   後續被從新得到。每次提交都包括做者和提交者,做者和   提交者能夠是不一樣的人 學習

URL   :URl用來標識一個倉庫的位置   用來表示代碼的一個版本狀態。Git經過用SHA1 hash算法  

修訂 :   表示的id來標識不一樣的版本。每個 SHA1 id都是160位長   Revision   ,16進制標識的字符串.最新的版本能夠經過HEAD來獲取.   以前的版本能夠經過"HEAD~1"來獲取,以此類推。

索引 :Git 須要將代碼的變化顯示的與下一次提交進行關聯。舉個例子,若是你對一個文件繼續了修改,而後想將這些修改提交到下一次提交中,你必須將這個文件提交到索引中,經過git add file命令。這樣索引能夠保存全部變化的快照。 

新增的文件老是要顯示的添加到索引中來。對於那些以前已經提交過的文件,能夠在commit命令中使用-a 選項達到提交到索引的目的。  

1.3 Git操做的相關操做  

後續將經過一個典型的Git工做流來學習。在這個過程當中,你會使用SourceTree建立一些文件、建立一個本地的Git倉庫、提交你的文件到這個倉庫中。這以後,你會克隆一個倉庫、在倉庫之間經過pull和push操做來交換代碼的修改。 

1.3.1 建立倉庫、添加文件和提交更改       

每一個Git倉庫都是放置在.git文件夾下.這個目錄包含了倉庫的全部歷史記錄,.git/config文件包含了倉庫的本地配置。  

如下咱們會建立一個本地Git工程倉庫。將工程添加入SourceTree進行管理。  

一個本地工程已經添加進來了。  

點擊進入工程:  

1.3.2 commit更改       

下方有問號的就是咱們的工程文件,如今咱們將他們添加到Git倉庫內。全選他們,點擊Commit鍵。  

Commit成功後,出現一條記錄和描述。  

1.4 遠端倉庫(remote repositories)       

1.4.1 設置一個遠端的GitHub倉庫       

咱們將建立一個遠端的GitHub倉庫。這個倉庫能夠存儲在本地或者是網絡上。  

遠端Git倉庫和標準的Git倉庫有以下差異:一個標準的Git倉庫包括了源代碼和歷史信息記錄。咱們能夠直接在這個基礎上修改代碼,由於它已經包含了一個工做副本。可是遠端倉庫沒有包括工做副本,只包括了歷史信息。 

1.4.2 添加遠端倉庫       

首先咱們須要建立一個CMS.Web的倉庫;

                填寫工程信息:  

建立完成後,Clone此工程下來,複製此工程的URL:

 

要將帶? 號的文件先添加到索引中去,這樣才能被SourceTree 跟蹤。

 

   

在推送前,須要 先提交,就是保存

 

錄屏太麻煩了,寫的速度也減慢了很多,不錄了         1.4.3 推送更改到GitHub的倉庫        在下方的Origin中,顯示的是GitHub服務器上的工程,它顯示的進度還在第一條Initial commit;這時咱們須要將本地master中的更改Push到GitHub服務器。  提交成功後,咱們看到服務器端的進度已經和咱們本地同步了。  

1.4.4 拉取(Pull)更改       

經過拉取,能夠從GitHub的倉庫中獲取最新的更改。  

1.4.5 還原更改       

若是你還未把更改加入到索引中,你也能夠直接還原全部的更改;也能夠經過revert命令進行還原操做 。   即便你刪除了一個未添加到索引和提交的文件,你也能夠還原出這個文件,點擊Checkout。   若是你已經添加一個文件到索引中,可是未提交。能夠經過git resetfile 命令將這個文件從索引中刪除。  

1.5 分支、合併       

1.5.1 分支       

經過分支,能夠創造獨立的代碼副本。默認的分支叫master。Git消耗不多的資源就能建立分支。Git鼓勵開發人員多使用分支。  

1.5.2 合併       

經過Merge咱們能夠合併兩個不一樣分支的結果。Merge經過所謂的三路合併來完成。分別來自兩個分支的最新commit和兩個分支的最新公共commit。      可是有時多人開發時,有可能會發生合併衝突。  一旦合併發生了衝突,Git會標誌出來,開發人員須要手工的去解決這些衝突。解決衝突之後,就能夠將文件添加到索引中,而後提交更改。  

1.5.3 合併請求(pull Requests)一個分支到源倉庫       

咱們在Github上Fork的項目,當一我的完成開發後,須要提出一個合併請求,請求把本身寫的部分與主項目合併。  

在Github上的本身Fork的工程右邊點擊Pull Requests,點擊New pull request。  

  這裏會比較你和主項目的不一樣,而後點擊建立pull request。  

  這裏寫入你要合併部分的介紹,完成了什麼功能等等,點擊發送。  

項目擁有者收到你的請求,根據你完成的功能,和你溝通後能夠選擇合併或者否決你的請求。   合併須要手工完成,具體請向度娘瞭解。  

1.6 解決合併衝突       

若是兩個不一樣的開發人員對同一個文件進行了修改,那麼合併衝突就會發生。而Git沒有智能到自動解決合併兩個修改。  

1.7 連接和文章       

1.  Git相關學習資源              

Github                      www.github.com             

SourceTree出的Git教程:      www.atlassian.com/git              

某個臺灣人寫的Git教程:      http://pan.baidu.com/s/1eQBUIe2             

一些GitHub資料:      http://pan.baidu.com/s/1qW8m5fY               

相關的資源請參考:http://www.bootcss.com/p/git-guide/

相關文章
相關標籤/搜索