Windows下Git與TortoiseGit使用教程(Github爲例)(四)

正式開始

建立github倉庫 

建立倉庫的操作需要在網站上進行。我們通常是在服務器上建立倉庫(repository),然後克隆(clone)到本地。如果你想在本地直接建立倉庫(init),那麼通常是本地的單人代碼庫,或者是局域網內部共享的庫,或者你就是代碼服務器的管理員。

Github上建立倉庫的操作很簡單,打開網站,右上角右數第三個按鈕就是了(看圖)。你只需要輸入項目名字,以及建立“.gitignore”文件就行。這個文件其實就是我們明確指明不需要版本跟蹤的文件,上文已經提到過了。通常這個文件是我們自己寫的,但是github已經爲我們的各種常見項目提供了現成的樣板,更加方便。


一般不會有什麼問題,你填寫完之後“create repository”就行了,我們會看到這樣的頁面:


這樣就創建成功了。可以看到,現在初始的庫中,有一個master分支,並且有了一次commit,作爲初始化的操作。你也可以在本地建立倉庫查看,其實是一樣的。不過我們通常不在本地建立倉庫,如果你需要協同開發的話,因爲你不能讓服務器去克隆你電腦上的倉庫,只能是你去克隆服務器的倉庫。當然了,如果你不打算用服務器的話,那是另外一回事了。

 

可以看到上面有項目的三種協議的地址:http,ssh,以及git協議的。這三種協議各有優缺點,都是指向同一個項目的。你還可以下載zip壓縮包,或者用github的windows客戶端進行方便的克隆。這個客戶端做的不錯,不過它只能用在github上面,其他的代碼託管平臺不能用,這個就不好了。我們還是用msysgit+tortoisegit的方式,對命令行熟悉的童鞋可以考慮直接上命令行啦。又扯開去了,不說了。

 

克隆倉庫到本地

我們用ssh的協議爲例。ssh的倉庫地址大概是長這個樣子:

[email protected]:jarelzhou/testproject.git

在你想要放本地倉庫的地方,右鍵,git clone…

據說本地倉庫不建議放在eclipse的workspace中,不知爲何。題外話了,這樣可能會造成項目間的混亂。

右鍵之後,看到這樣的界面,url中填寫之前github提供的ssh地址,putty key記得選擇之前我們創建的private key。

 

然後會要你輸入passphrase,這也是之前設置好的:


創建中:

    

 

然後是這個警告窗口,這個窗口只會出現一次,以後就不會有了,這是要你覈對sshkey的,你可以覈對一下:


如果沒錯的話,點“Yes”就行了。過了一小會兒,會出來提示成功:


這個關掉就可以了。

此時倉庫信息中已經有了原本倉庫的位置了,不再需要額外的設置。

 

有沒有看到,倉庫已經克隆下來啦?被版本控制的目錄會打上綠勾,如果沒有的話你可以刷新一下看看,windows的圖標緩存有bug,而且至今沒有解決,刷新如果還沒有的話可能得註銷一下了。

 

做一些改動

我們現在來嘗試給這個測試的項目添一點東西。比如添加一個main.cpp:


保存之後看到目錄變成了這個樣子:


發現有一個~結尾的存檔文件,不應該被跟蹤的。右鍵文件,選擇ignore即可。添加到忽略列表之後,你再刷新,就可以看到,main.cpp~這個文件上的圖標消失了。

 

而main.cpp這個文件是我們要添加到控制中的。右鍵,Tortoisegit-》add,它就從未跟蹤狀態到被跟蹤狀態,而且是被添加到了stage中。

有一種說法,.gitignore本身也應該被忽略,不過這樣的話可能大家添加的文件不一致,所以我們還是不忽略了。

 

這個時候,我們來commit一下,記錄到本地版本庫中。右鍵,commit即可。注意,git要求每次commit必須輸入描述信息。

 

點OK就可以了。此時目錄中所有文件又變成了綠勾的狀態。

 

推送到服務器端

我們已經在本地做了修改,並commit到了本地的庫。Git不允許直接commit到遠程庫,只允許兩個庫之間的同步操作,而沒有commit的修改,是沒有記錄到倉庫中的。現在,我們來推送(push)到服務器端。

仍舊是強大的右鍵……tortoisegit把幾乎全部的操作放到了右鍵菜單中去。選擇push:


點OK就行了。然後又是一個烏龜翻跟斗的動畫:


推送完了之後,關掉這個窗口就行了。

現在我們回到github的網站,刷新一下,看看,是不是文件被推送上去啦?


除此之外,還有pull操作,是從服務器端拉取最新的版本庫,因爲可能項目組的其他成員已經做了修改,你需要把其他人的改動同步下來。

 

分支操作

我們現在只有一個分支,更合理的設置是兩個常設分支,然後按需出現的臨時分支。建立分支的方法:右鍵,create branch,設置好這個分支是從哪個狀態分叉出來的,默認是當前的工作狀態,你也可以設成其他的。切換工作分支是checkout/switch。

在同步的時候,我們通常是每個分支單獨同步的,你需要推送什麼分支,就選擇哪個分支,不要推送錯了。Pull的時候,也是這樣。Tortoisegit提供了拉取/推送全部分支的選項,不過你在做這個操作之前,必須要清楚你在做什麼。

 

最後

寫到這裏,windows下tortoisegit的大概操作就說完了。你可以發現,我其實並沒有過多地去描述tortoisegit怎麼操作,我更多的是在講,git的設計,以及一種比較清晰的工作流程。這種工作流程不僅僅是tortoisegit,這在你用命令行的git,甚至是其他的版本控制系統,都是差不多的。工具不重要,重要的是如何去用工具提高我們的效率。

 

寫這篇文章到最後,我也把整個的過程理了一遍,對git也有了更深的理解。還是寫下來比較清楚。



本文檔完整版PDF版本下載:http://download.csdn.net/detail/jarelzhou/7074985


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章