1. 程式人生 > >Git介紹,安裝,Git+Git flow使用

Git介紹,安裝,Git+Git flow使用

span mon 緊急 sna initial setup cto 快速 oca

特點:

  1.可以快速的切換項目分支.
  2.回滾某個分支的版本.
  3.每次切換分支不用修改配置文件 (因項目而定義)
  4.不用 新建/切換 虛擬目錄/域名.因為都是在同一個目錄下進行.
  5.上面這些對你有吸引力嗎? 喜歡那就參與進來吧.

什麽是Git

  
   Git是Linux Torvalds為了幫助管理 Linux,內核開發而開發的一個開放源碼的版本控制軟件.

   特點是快速,開源,分布式管理系統.

   它可以對代碼的修改進行回滾,將錯誤的代碼剔除.

   或者簡單地跟蹤哪些人修改了代碼的哪些行的內容.
  

對比:集中化的版本控制

  
  集中化的版本控制系統通常采用兩種方式:


  有些提供了文件鎖來防止多個用戶的並行訪問,這些系統對文件進行加鎖,這樣在某個時間只有一個開發人員對中心倉庫具有寫入權限.

  另外一些工具,例如 SVN,允許多個開發人員同時對相同的文件進行編輯,並提供了一些機制稍後合並這些修改。
  
  CVS,SVN 等工具都是代碼部署到服務器上,每次需要遠程更新到本地,解決沖突在此提交.
  這樣弊端很明顯,如果這臺服務器掛掉幾個小時,可能在這幾個小時內,你的代碼都無法去提交.

  配圖:
  

技術分享

  圖解: 代碼都集中部署到一臺服務器上,每臺電腦需更新服務器上的代碼,修改後提交到服務器上.  

  弊端:如果版本控制這臺服務器掛掉,可能對整個項目開發都會造成影響,因為開發者都不能提交,其他人也無法獲取到代碼,最重要的是代碼也無法時時的進行備份,改動大風險也更大.如果你在一個不能連接網絡的地方時,就像在飛機上,火車上,或者某些無網絡的情況下,就不能提交文件,查看歷史版本記錄,創建項目分支,等.

對比:分布式的版本控制

  
   GIT跟SVN一樣有自己的集中式版本庫或服務器.

   但GIT更傾向於被使用於分布式模式,也就是以每個開發人員為中心 版本庫/服務器 上chectout代碼後會在自己的機器上克隆一個自己的版本庫.

   如果你在一個不能連接網絡的地方時,就像在飛機上,火車上,或者某些無網絡的情況下,也一樣可以提交文件,查看歷史版本記錄,創建項目分支,等.
  
   GIT把內容按元數據方式存儲,而SVN是按文件:

   所有的資源控制系統都是把文件的元信息隱藏在一個類似.svn,.cvs等的文件夾裏.

   把.git目錄的體積大小跟.svn比較,會發現它們差距很大.


   .git目錄是處於你的機器上的一個克隆版的版本庫,它擁有中心版本庫上所有的東西,例如標簽,分支,版本記錄等.

  配圖:
  

  技術分享

  圖解:開發者從 版本庫/服務器 克隆一份代碼,可以隨意的 新建/切換 分支,可以同時在 版本1,版本2 中去來回切換修改代碼,互並不影響其他版本.

  把開發者的機器也克隆成一臺服務器,同樣也擁有,查看歷史記錄,創建,合並分支等功能.

操作環境

  操作系統:Mac Os

  虛擬主機:VMware Fusion

  虛擬系統:Centos 5.5+

  操作用戶:Root

  實現目的:搭建Git版本控制.

安裝依賴庫和版本控制軟件

技術分享
# 安裝 Git#######################################################

# Git 依賴庫
yum install -y gettext-devel expat-devel curl-devel zlib-devel openssl-devel
# Centos
http://codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz

# Mac Os
安裝最新版XCode即可

# Windows Msysgit
http://code.google.com/p/msysgit/downloads/list

# Ubuntu
sudo apt-get install git git-core #(可能會出現未發現軟件源,推薦下載tar.gz包安裝包)

# 安裝 Git End####################################################

# Gitosis(GIT環境)
安裝Git後在安裝Gitosis
技術分享

安裝Git

技術分享
# 存放軟件包目錄
cd /web/git

tar -zxvf git-latest.tar.gz
cd git-2011-12-14/ # 根據當前版本解壓目錄名稱可能不同
make -j6

# 如果出現找不到libiconv.so庫設置一下軟連接
ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2
make install

# 測試安裝是否成功
git
技術分享


#如圖

技術分享

簡單配置Gitosis

  
  Git我們安裝好了,這時我們需要一臺服務器(或者Git Hub開始使用一下Git)

  Git Hub很簡單網上資料較多,找一下,我就不在重復的總結了.

  有時我們開發環境是局域網,並且源碼不想讓其他人看到,這時需要在局域網上搭建一臺GIT Server

  本篇主要介紹Git的,只是搭建一個環境提供簡單的使用,不會過多的介紹Gitosis.

技術分享
# 創建Git目錄
mkdir /git
cd /git

# 克隆Gitosis
git clone git://eagain.net/gitosis.git

# 安裝python擴展
yum -y install python python-setuptools

# 安裝
cd gitosis
python setup.py install

# 生成共秘鑰
ssh-keygen -t rsa -C [email protected]

# 公鑰發送到git Server上
scp ~/.ssh/id_rsa.pub [email protected]:/git (ce.com是我指向的虛擬機IP)

# 切換到Git Server添加,切換用戶
adduser git
su git

# 初始化版本庫
gitosis-init < /git/id_rsa.pub
# Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
# Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/

# 切換本機,克隆倉庫,修改創建項目
# (可以直接在Git Server /home/git/repositories/gitosis-admin.git/gitosis.conf 下操作)
git clone [email protected]:gitosis-admin.git

# 新建項目(名稱woyaoquan)
vi gitosis-admin/gitosis.conf
[group woyaoquan]
writable = woyaoquan
members = [email protected]

# 切換本機重新克隆
git clone [email protected]:woyaoquan.git
cd woyaoquan && touch index.php
git add . #添加緩存區
git commit -m "提交文件,添加index.php文件"

[master (root-commit) 42e0160] 提交文件,添加index.php文件
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 index.php

git push #發布到master分支上

 
技術分享

 

Git + Git Flow 項目中使用

  
  在上面已經使用過Git的一些參數,詳細講Git的有很多,比較詳細的有 Git Book Pro Git 等,就不太過多的Copy,Git本身也比較靈活.

  一般都會使用Git Flow控制版本發布流程, 因篇幅問題就不在這裏展示安裝Git Flow了,也比較簡單.

  簡單的說一下項目的發布流程

  
Git flow普通BUG流程:

技術分享
# 進入克隆倉庫(上面有方法) clone
cd /git/woyaoquan
# 初始化版本流程控制
git checkout -b develop origin/develop
# 初始化工作目錄(一直回車即可)
git flow init
# 開始創建新的需求分支,目的修改image
git flow feature start editimage #這時項目會自動切換 feature/editimage分支
# 更改部分代碼後
# git commit -a -m "修改完了"
# 完成開發分支合並develop(自動)
git flow feature finish editimage
# 發布到遠程開發分支
git push origin develop
技術分享


Git flow 緊急BUG流程(1)

技術分享
# 拉回release版本
git pull origin release/v1.0
# 切換分支
git checkout release/v1.0
# 修改BUG
# git commit -a -m "修改完BUG,BUG文件+行數"
# 修改完後提交
git push origin release/v1.0
技術分享


Git flow 緊急BUG流程(2)

技術分享
# 更新master分支
git pull origin master(更新master分支為最新)
# 切換到master分支
git checkout master
#生成一個hotfix分支
git flow hotfix start hfx

# 通知相關得工程師和測試人員hotfix分支名稱
# 最終測試完成後拉回分支最新代碼
git pull origin hotfix/hfx
# 最終修改和測試完成後,結束hot fix以供發布
git flow hot fix finish hfx
# 發布最終的master分支
git push origin master
技術分享

Git介紹,安裝,Git+Git flow使用