1. 程式人生 > >關於Git學習總結

關於Git學習總結

關於SourceTree學習總結SourceTree是git的視覺化工具,要想了解SourceTree必須要先了解Git

Git

1.什麼是Git,git是一種原始碼管理工具(分散式版本控制系統)

分散式相比於集中式的最大區別在於開發者可以提交到本地,每個開發者通過克隆(git clone),在本地機器上拷貝一個完整的Git倉庫

                                            

Git的功能特性:

從一般開發者的角度來看,git有以下功能:

1、從伺服器上克隆完整的Git倉庫(包括程式碼和版本資訊)到單機上。

2、在自己的機器上根據不同的開發目的,建立分支,修改程式碼。

3、在單機上自己建立的分支上提交程式碼。

4、在單機上合併分支。

5、把伺服器上最新版的程式碼fetch下來,然後跟自己的主分支合併。

6、生成補丁(patch),把補丁傳送給主開發者。

7、看主開發者的反饋,如果主開發者發現兩個一般開發者之間有衝突(他們之間可以合作解決的衝突),就會要求他們先解決衝突,然後再由其中一個人提交。如果主開發者可以自己解決,或者沒有衝突,就通過。

8、一般開發者之間解決衝突的方法,開發者之間可以使用pull 命令解決衝突,解決完衝突之後再向主開發者提交補丁。

從主開發者的角度(假設主開發者不用開發程式碼)看,git有以下功能:

1、檢視郵件或者通過其它方式檢視一般開發者的提交狀態。

2、打上補丁,解決衝突(可以自己解決,也可以要求開發者之間解決以後再重新提交,如果是開源專案,還要決定哪些補丁有用,哪些不用)。

3、向公共伺服器提交結果,然後通知所有開發人員。

優點:

適合分散式開發,強調個體。

公共伺服器壓力和資料量都不會太大。

速度快、靈活。

任意兩個開發者之間可以很容易的解決衝突。

離線工作。

缺點:

資料少(起碼中文資料很少)。

學習週期相對而言比較長。

不符合常規思維。

程式碼保密性差,一旦開發者把整個庫克隆下來就可以完全公開所有程式碼和版本資訊。

使用Git前,需要先建立一個倉庫(repository)。您可以使用一個已經存在的目錄作為Git倉庫或建立一個空目錄。

使用您當前目錄作為Git倉庫,我們只需使它初始化。:git init

使用我們指定目錄作為Git倉庫:git init newrepo

從現在開始,我們將假設您在Git倉庫根目錄下,除非另有說明。

新增新檔案

我們有一個倉庫,但什麼也沒有,可以使用add命令新增檔案。:git add filename 可以使用add... 繼續新增任務檔案。

提交版本

現在我們已經添加了這些檔案,我們希望它們能夠真正被儲存在Git倉庫。為此,我們將它們提交到倉庫。

git commit -m "Adding files"

如果您不使用-m,會出現編輯器來讓你寫自己的註釋資訊。

當我們修改了很多檔案,而不想每一個都add,想commit自動來提交本地修改,我們可以使用-a標識。

git commit -a -m "Changed some files"

git commit 命令的-a選項可將所有被修改或者已刪除的且已經被git管理的文件提交到倉庫中

千萬注意,-a不會造成新檔案被提交,只能修改 

釋出版本

我們先從伺服器克隆一個庫並上傳。

git clone ssh://example.com/~/www/project.git

現在我們修改之後可以進行推送到伺服器。

git push ssh://example.com/~/www/project.git

取回更新

如果您已經按上面的進行push,下面命令表示,當前分支自動與唯一一個追蹤分支進行合併。

git pull

從非預設位置更新到指定的url。

git pull http://git.example.com/project.git

已經超過了五分鐘?

刪除

如何你想從資源庫中刪除檔案,我們使用rm。

git rm file

分支與合併

分支在本地完成,速度快。要建立一個新的分支,我們使用branch命令。

git branch test

branch命令不會將我們帶入分支,只是建立一個新分支。所以我們使用checkout命令來更改分支。

git checkout test

第一個分支,或主分支,被稱為"master"。

git checkout master

對其他分支的更改不會反映在主分支上。如果想將更改提交到主分支,則需切換回master分支,然後使用合併。

git checkout master
git merge test

如果您想刪除分支,我們使用-d標識。

git branch -d test