談談分佈式版本管理工具Git

一.主流的版本管理工具

  目前在企業中比較主流的版本管理工具備:GIT、SVN、CVS等等。html

.什麼是Git?

  Git是一款免費、開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目。是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。linux

三.Git與SVN的的主要區別?

  

  Git是分佈式版本控制系統,那麼它不但和SVN同樣有中央服務器,並且每一個人的電腦也是一個完整的版本庫,這樣,工做的時候聯網就不是必須的了,由於版本能夠先在本身的電腦上進行管理。既然每一個人的電腦都有一個完整的版本庫,那多我的如何協做呢?好比說本身在電腦上改了文件A,其餘人也在電腦上改了文件A,這時,大家兩之間只需把各自的修改推送給中央服務器,而後再從新去拉下代碼,就能夠互相看到對方的修改了。git

  SVN是集中式版本控制系統,版本庫是集中放在中央服務器的,而幹活的時候,用的都是本身的電腦,因此首先要從中央服務器哪裏獲得最新的版本,而後幹活,幹完後,須要把本身作完的活推送到中央服務器。集中式版本控制系統是必須聯網才能工做,若是在局域網還能夠,帶寬夠大,速度夠快,若是在互聯網下,若是網速慢的話,就尷尬了。

四.如何安裝Git?

1. windows下安裝git
  在網上下載以下圖所示的安裝文件
   
  進行默認安裝之後,就會在開始菜單中找到以下圖所示的客戶端快捷方式
  
2. linux下安裝git
sudo yum -y install git
3. 安裝成功後,還須要進行以下設置:
由於git是分佈式版本控制系統,因此安裝成功首先設置一個用戶名和一個郵箱做爲一個標識.
4. 注意:git config –global 參數,有了這個參數,表示你這臺機器上全部的Git倉庫都會使用這個配置,固然你也能夠對某個倉庫指定的不一樣的用戶名和郵箱。

五.Git的基本操做

1. 版本庫
  版本庫又名倉庫,英文名repository,你能夠簡單的理解一個目錄,這個目錄裏面的全部文件均可以被Git管理起來,每一個文件的修改,刪除,Git都能跟蹤,以便任什麼時候刻均可以追蹤歷史,或者在未來某個時刻還能夠將文件」還原」.
2. 建立版本庫(初始化)
git init
這時候你當前目錄下會多一個.git的目錄,這個目錄是Git來跟蹤管理版本的,沒事千萬不要手動亂改這個目錄裏面的文件,不然會把git倉庫給破壞了.
3. 說明
  首先要明確下,全部的版本控制系統,只能跟蹤文本文件的改動,好比txt文件,網頁,全部程序的代碼等,Git也不列外,版本控制系統能夠告訴你每次的改動,可是圖片,視頻這些二進制文件,雖能也能由版本控制系統管理,但無法跟蹤文件的變化,只能把二進制文件每次改動串起來,也就是知道圖片從1kb變成2kb,可是到底改了啥,版本控制也不知道。
4. 添加文件到暫存區
git add fileName1,fileName2...
git add . (添加全部已經修改的文件到暫存區)
5. 提交暫存區文件到本地倉庫
git commit -m 'commit description'
6. 查看暫存區狀態
git status
7. 查看暫存區中代碼的改變
git diff fileName
8. 查看暫存區的提交日誌
git log
9. 回退已提交到暫存區但還沒有push到遠程倉庫的代碼
git reset --hard commit_version
其中commit_version就是經過日誌看到的每次提交的全局惟一版本號
10. 回退到上一版本
git reset --hard HEAD^
11. 查看暫存區內容
git reflog
12. 查看當前分支,其中前面有*符號的表示當前分支
git branch
13. 查看遠程分支信息
git branch -a
14. 切換分支
git checkout branchName
15. 新建分支
git checkout -b newBranchName
16. 合併分支
git merge branchName
17. 刪除本地分支
git branch -D branchName
18. 刪除遠程分支
git branch -r -d origin/branch-name (只刪除遠程倉庫test分支,本地保留)
git push origin :branch-name
19. 添加遠程倉庫位置
git remote add origin remote_url
這樣咱們就指定了當前git的遠程倉庫地址。
20. push本地代碼到遠程倉庫
git push -u origin master (-u是把本地分支和遠程分支作關聯,第一次提交代碼到新分支的時候須要,之後只須要使用git push就能夠)
注:-u 等於 git push --set-upstream origin branch-name
21. 克隆遠程倉庫代碼到本地
git clone remote_url
22. 隱藏本地修改到緩存區
git stash
23. 恢復緩存區中的修改
  1).恢復修改,且不刪除stash內容
git stash apply
  2).恢復之後,直接刪除stash內容
git stash pop
24. 查看遠程倉庫信息
git remote show origin
25. 查看遠程倉庫的詳細信息
git remote -v
26. 拉取遠端最新代碼
git pull

27. 設置全局別名windows

git config --global alias.ac '!git add -A && git commit -m'

這樣咱們就能夠直接使用:git ac 'why you modify' 就能夠完成git add和git commit -m 操做緩存

28. 刪除文件安全

git rm file-name

29. 刪除暫存區或分支上的文件,但本地工做區間保留,只是不但願這個文件被版本控制服務器

git rm --cache file-name

30. 從遠程獲取最新的版本信息到本地有如下兩個命令:app

git fetch origin master
git pull origin master

上面的命令至關於:分佈式

git fetch origin master (從遠程的origin的master主分支下載最新的版本到origin/master分支上)
git log -p master..origin/master (比較本地的master分支和origin/master分支的差異)
git merge origin/master  (將遠程的最新版本合併到本地)

還至關於以下:svn

git fetch origin master:tmp (從遠程獲取最新的版本到本地tmp分支) 
git diff tmp (比較不一樣)
git merge tmp (進行合併)

現實狀況下git fetch更安全一些,由於在merge前,咱們能夠查看更新狀況,而後再決定是否合併.

31. rebase指定分支(把指定分支上的新提交在當前分支作一次)

git fetch
git rebase origin/branch-name
解決衝突
git add .
git rebase --continue
git push 

高效撤銷各個階段的代碼的方法請移步:如何高效撤銷Git管理的文件在各類狀態下的更改

六.總結

  到這裏,咱們就對git的使用以及與svn的不一樣有了一個大體的瞭解,這能夠幫助咱們很好的使用git,而且讓咱們能夠應對大多數開發中使用的狀況,下次有機會咱們再來聊一聊gitflow以及咱們公司使用的變種來更好地促進團隊協助開發以及分支管理。
相關文章
相關標籤/搜索