使用SourceTree和GitHub共同開發

GitHub詳細教程git

 

 

1 Git詳細教程github

 

1.1 Git簡介算法

 

1.1.1 Git是何方神聖?服務器

 

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

 

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

 

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

 

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

 

1.1.2 重要的術語優化

 

Git 術語spa

術語

定義

 

倉庫

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

Repository

在Git中倉庫的每份拷貝都是完整的。倉庫讓你能夠從中

 

取得你的工做副本。

 

一個分支意味着一個獨立的、擁有本身歷史信息的代碼線

分支

(code line)。你能夠從已有的代碼中生成一個新的分支

Branches

,這個分支與剩餘的分支徹底獨立。默認的分支每每是叫

 

master。用戶能夠選擇一個分支,選擇一個分支叫作

 

checkout.

標記

一個標記指的是某個分支某個特定時間點的狀態。經過標

Tags

記,能夠很方便的切換到標記時的狀態,例如2009年1月25

 

號在testing分支上的代碼狀態

提交

提交代碼後,倉庫會建立一個新的版本。這個版本能夠在

Commit

後續被從新得到。每次提交都包括做者和提交者,做者和

 

提交者能夠是不一樣的人

URL

URl用來標識一個倉庫的位置

 

用來表示代碼的一個版本狀態。Git經過用SHA1 hash算法

修訂

表示的id來標識不一樣的版本。每個 SHA1 id都是160位長

Revision

,16進制標識的字符串.最新的版本能夠經過HEAD來獲取.

 

以前的版本能夠經過"HEAD~1"來獲取,以此類推。

 

1.1.3 索引

 

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

 

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

 

1.2 Git 安裝 配置

 

咱們使用SourceTree這個軟件,他將Git已經配置好了,咱們只須要用就能夠了。

 

1.3 開始操做Git

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

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

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

如下咱們會建立一個本地Git工程倉庫。

Xcode自帶有Git管理,在建立工程時,勾選Source Control便可。

此工程將自帶git配置,可是因爲Xcode 在git管理上優化有問題,會讓電腦出現卡頓,因此咱們不建議用Xcode管理git倉庫。

咱們通常採用的方式是,用Xcode創建好工程以後,再運行終端,將此工程變爲Git倉庫,使用git init命令:

而後,咱們將此工程添加入SourceTree進行管理。

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

點擊進入TuYaPRO工程:

 

1.3.2 commit更改

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

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

 

 

1.4 遠端倉庫(remote repositories)

 

1.4.1 設置一個遠端的GitHub倉庫

 

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

 

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

 

1.4.2 添加遠端倉庫

首先咱們須要建立一個Repository;

 

填寫工程信息:

 

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

  

在SourceTree中Clone Repository。

將原來的工程文件拖入TuYaPRO目錄中。

全選下面的工程文件,點擊commit提交到本地倉庫。

 

master中出現一個pull標記,同時多了一條記錄:

 

1.4.3 推送更改到GitHub的倉庫

在下方的Origin中,顯示的是GitHub服務器上的工程,它顯示的進度還在第一條Initial commit;這時咱們須要將本地master中的更改Push到GitHub服務器。

點擊右上方的Push按鈕。

 

提交成功後,咱們看到服務器端的進度已經和咱們本地同步了。

 

1.4.4 拉取(Pull)更改

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

 

1.4.5 還原更改

若是你還未把更改加入到索引中,你也能夠直接還原全部的更改;也能夠經過revert命令進行還原操做 。

 

即便你刪除了一個未添加到索引和提交的文件,你也能夠還原出這個文件,點擊Checkout。

若是你已經添加一個文件到索引中,可是未提交。能夠經過git resetfile 命令將這個文件從索引中刪除。

 

 

1.5 分支、合併

 

1.5.1 分支

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

點擊Branch添加分支;

       

Branches列表會出現Dev分支,咱們能夠在此分支開發咱們負責的部分。

 

1.5.2 合併

經過Merge咱們能夠合併兩個不一樣分支的結果。Merge經過所謂的三路合併來完成。分別來自兩個分支的最新commit和兩個分支的最新公共commit。

咱們在Dev分支進行進行一些工做以後,能夠看到Dev和master的進度是不同的。

這時咱們返回master分支,點擊merge;

合併以後咱們發現,master已經和Dev同步了。

這時咱們發現orgin和master並不一樣步,這時由於咱們的更改並無推送到在線的GitHub服務器,這時咱們能夠把咱們的更改Push到Github上,點擊Push。

 

這時咱們能夠看到服務器和本地都同步了。

可是有時多人開發時,有可能會發生合併衝突。

一旦合併發生了衝突,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://pan.baidu.com/share/link?shareid=422160084&uk=2922146712

http://pan.baidu.com/s/128WT3

 

 

 

 

 

 

Author: Duger.Wang<wfyh007@gmail.com>

Date:2013年12月29日 星期日

Github:<github.com/duger>

相關文章
相關標籤/搜索