[轉] 使用Git進行小項目代碼管理

來源:互聯網
上載者:User

標籤:

http://www.uml.org.cn/pzgl/201206155.asp

之前在公司使用過SVN(無甚感覺)和ClearCase(把人噁心死的東西)兩種版本控制工具,都不滿意。後來想自己寫點東西玩,就發現了這個在國內人氣還不怎麼高的Git,這個由Linus實現的靈活小巧的VCS。對它的印象差不多可以這麼說:“我被萌到了”。

通過採用不同類型的工作流程,Git可以適用於各種大小規模的項目。這裡介紹一下針對最簡單的集中式工作流程的配置方式,適合個人和小型團隊使用。

註:本文只是一個快速流程,要詳細瞭解Git使用方法的話,強烈推薦閱讀《Pro Git》這本書(見本文末尾的參考)。流程中需要一台伺服器或VPS(越來越感受到VPS這東西對程式員真有用啊)。

安裝Git

Git是跨平台的,在Linux/Mac/Windows上都可以使用,它的分布式特性也使得個人可以在多種平台下方便地進行開發。

Linux

作為案頭系統用的Linux大多是Debian系的,安裝很方便,執行下面命令即可:

 
$ sudo apt-get install git-core

 

Mac OS X

如果安裝了Xcode 4的,裡面就已經包含了Git。也可以從這裡單獨安裝:http://code.google.com/p/git-osx-installer/downloads/list?can=3

Windows

window平台可以安裝msysgit: http://code.google.com/p/msysgit/downloads/list?can=3

喜歡圖形介面的可以再加上TortoiseGit:http://code.google.com/p/tortoisegit/downloads/list

初次配置

執行下面兩條命令來配置使用者資訊,他們會用於Git提交時的簽名:

 
$ git config --global user.name "John Doe"$ git config --global user.email [email protected] 

建立本地Git倉庫

在你的項目目錄下執行:

$ git init

這會在你的項目目錄下建立一個.git目錄,儲存所有Git所需的資源。

然後我們該往項目中添加檔案了。不過在這之前,最好先建立一個名為.gitignore的檔案,來把一些不需要的檔案或檔案夾排除掉。比如在Mac下有時會在目前的目錄下產生一個.DS_Store的檔案,這對我們的項目是無用的,我們就可以把它排除掉,而一些文字編輯器會使用以~結尾的備份檔案,也要排除掉:

 
.DS_Store*~

《Pro Git》的2.2節對此規則有更詳細的介紹。

然後我們就可以進行文檔的添加了,如果是按照上面把忽略規則設定好了的話,可以簡單地執行:

$ git add .

這會把忽略規則以外的所有檔案都添加進來,也可以這樣:

$ git add *.c

來添加部分檔案。Git還可能會忽略.gitignore檔案,需要手工添加:

$ git add .gitignore

添加好檔案後,就進行第一次提交:

$ git commit -m ‘initial project version‘

Git要求所有地提交都要包含解說文字,-m後面地即為說明,這是一種快捷地做法,也可以只用git commit,然後在切換到的介面中編輯解說文字。

建立伺服器端

Git是分布式的版本管理軟體,不需要伺服器端也可以使用,但若要進行多人/多裝置協同開發,還是要架設一個伺服器端。
首先把剛才建好的本地倉庫匯出為裸倉庫,在項目的上級目錄執行:

$ git clone --bare my_project my_project.git

這會建立一個my_project.git檔案夾,差不多和項目目錄.git檔案夾中的內容一樣。

使用scp命令(或其他方式)把它上傳到你的伺服器上:

$ scp -r my_project.git [email protected]:/var/git

伺服器上存放的目錄可以是任意位置,目錄的存取權限其實就和通過Git訪問的許可權相同(使用ssh協議來存取碼),比如你的項目是私人的,就可以放在你的home目錄中。

上傳之後本地的my_project.git就可以刪掉了。

如果你的伺服器端還沒有安裝git的話,這時是無法通過Git擷取代碼的,很簡單,還是通過

$ sudo apt-get install git-core

命令,在伺服器端安裝Git。

現在就可以在本地通過Git來擷取這個項目了:

$ git clone [email protected]:/var/git/my_project.git

這會在目前的目錄下建立一個my_project檔案夾,裡麵包含項目源碼和git倉庫。也可以在上面的命令後再添加一個參數,來制定這個檔案夾的位置和名稱。

本地倉庫和伺服器端的關聯

我們通過git clone命令抓下來的項目會自動和抓取的伺服器端關聯好,這樣如果你確保前面添加到庫中的檔案沒有遺漏,就可以把它刪掉,再新clone下來的項目目錄下進行開發(這樣最簡單最懶)。

也可以手工為原項目建立關聯,在最初的項目目錄中執行:

$ git remote add origin [email protected]:/var/git/my_project.git

這條命令就是把剛才做好的伺服器端倉庫添加為遠程倉庫,名字叫origin。

這時已經可以通過git fetch origin和git push origin master命令來抓取和推送代碼了,但這樣會比較麻煩(git fetch不會自動將遠端分支合并到當前工作的分支)。

為了之後的使用方便,要設定本地的master分支跟蹤遠程倉庫的master分支:

$ git checkout --track origin/master

$ git checkout --set-upstream master origin/master

這條命令即讓本地master分支跟蹤遠程倉庫origin中的master分支。

設定好更總後如果我們需要從遠程倉庫抓取資料,只需要運行

$ git pull

即可。而本機資料變動後,要提交到遠程倉庫,則執行:

$ git push

使用git部署網站

以前寫好了網頁就用ftp工具上傳到伺服器上,這樣子沒有版本控制的發布行為可能會導致很多問題。既然現在我們用git來管理項目,那也可以用它來發布網站。

假設剛才我們的my_project是為sojingle.net做的網站,要放在伺服器的/var/www/sojingle.net/htdocs/www目錄下,則可以在伺服器端執行

$ git clone [email protected]:/var/git/my_project.git /var/www/sojingle.net/htdocs/www

如果網站和git伺服器在同一個主機的話,也可以使用本地檔案協議來抓取:

$ git clone /var/git/my_project.git /var/www/sojingle.net/htdocs/www

不止是網站,有些軟體也是通過這種方式來發布。比如Homebrew和RVM,在更新本地軟體時,就是利用git來更新。

建立develop分支

Git除了分布式這一大特性外,還大大強化了分支的使用。我們日常的開發工作一般不在master分支上進行,而是最好建立一個develop分支:

$ git checkout -b develop

開發時,最好基於develop分支再建立一個特性分支,比如我們要為網站添加一個新功能“標籤支援”,就為其建立一個分支tag_support,新功能開發完成之後,將其合并到develop分支上:

$ git checkout develop $ git merge tag_support

這就將新功能的代碼合并到了開發主分支上,合并過程沒有衝突的話,就可以刪掉這個分支:

$ git branch -d tag_support

當做好了一組新功能,決定要發版本了,就用可以把develop分支合并到master分支上,git push推送到遠程倉庫。在伺服器端的www目錄中,再來執行git pull,即可把網站更新到最新版本。

推薦及參考

《Pro Git》 http://progit.org/book/zh/

這本書的作者是GitHub的員工,寫得非常棒,大量的配圖把Git的分支管理講得非常清楚。而且非紙質書是免費的,已經有了中文版翻譯,可以直接線上閱讀。

《Git開發管理之道》 http://blog.leezhong.com/translate/2010/10/30/a-successful-git-branch.html

這篇文章主要講的是軟體開發中的分支管理模型,很值得一讀

[轉] 使用Git進行小項目代碼管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.