本文預計閱讀時間 : 3分鐘
複製代碼
本文將帶你認識Git 和簡單的使用Git 並不適合想要學習更深層次Git的讀者 , 附帶講解了簡單的自動部署腳本.git
若是你是一個合格的程序員那就應該學會使用Git , 否則不只苦了本身也苦了你的同事.程序員
畢竟沒有人願意放下手上的工做特意去教你 學會自我學習纔是這個行業最好的技能.windows
若是你不肯意動手只是單純的閱讀這篇文章可能對並沒有益處.緩存
Linux內核的發明人Linus開發的一個版本控制系統bash
Linus花了兩週時間本身用C寫了一個分佈式版本控制系統,這就是Git!一個月以內,Linux系統的源碼已經由Git管理了 這就是Git的出身 !服務器
Git是一個免費的開源 分佈式版本控制系統,旨在快速高效地處理從小型到大型項目的全部事務。 Git 易於學習,佔用小,具備閃電般快速的性能。它超越了Subversion,CVS,Perforce和ClearCase等SCM工具 [git-scm.com]curl
在多人同時開發項目 , 一個優秀的版本控制器尤其重要編輯器
Git 的強大之處體如今它強大的分支功能,分佈式控制系統等分佈式
一個Git 客戶端能夠任何地方獨立運行 , 僅僅在須要交換 "修改" 的時候進行聯網同步函數
在實際的開發中每每也是須要一臺服務器來充當Git的服務器 , 他的做用也僅僅只是爲每一個客戶端同步各自的修改
當多人同時開發項目時
兩我的同時修改同一個文件時如何同時保留兩我的的修改
當同時修改同一行數據時保留誰的修改
線上版本與測試版本如何同步文件如何保留部分差別配置文件
Git 出現便是爲了解決這些問題(固然不只僅是)
在《Git權威指南》中提到喜歡 Git 的理由
安裝Git
########## Centos/RedHat ##########
yum install curl-devel expat-devel gettext-devel \ openssl-devel zlib-devel
########## Debian/Ubuntu ##########
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \ libz-dev libssl-dev
window 下 經過 https://gitforwindows.org/ 下載安裝便可
複製代碼
在 Linux 下初始倉庫
//創建專屬用戶 Git(該用戶應該擁有倉庫文件的讀寫權限)
adduser git
//設置用戶密碼
passwd git
//建立倉庫文件夾(可隨意命名)
mkdir /opt/git
//進入倉庫目錄
cd /opt/git
//初始化Git倉庫
git init --bare 倉庫名稱.git
//賦予倉庫文件夾權限
chown -R git:root 倉庫名稱.git
複製代碼
倉庫結構
//克隆倉庫 (將遠程倉庫同步至本地)
git clone git@IP:/opt/git/倉庫名稱.git
//添加一個文件
touch readme.md
//添加到緩存區中 .表明全部文件 能夠填寫指定的文件名稱
git add .
//提交至本地倉庫
git commit -m '提交說明'
//同步至遠程分支
git push
複製代碼
其餘請參照 git-scm.com/docs 官方文檔
//在 hooks 中建立一個函數
cd hooks
vi post-receive
//編寫部署腳本 (部署到該目錄 www/wwwroot/test )
#!/bin/bash
git --work-tree=/www/wwwroot/test checkout -f
//賦予git用戶 部署目錄的讀寫權限
chown -R git:root /www/wwwroot/test
//賦予部署腳本執行權限
chmod +x post-receive
複製代碼
這是實現的是簡單的自動部署只是用於開發測試 , 具體的部署方案可能須要根據業務進行調整
平常開發中部署倉庫這些用的比較少,更多的是做爲客戶端來使用 , 可能須要更多去了解 合併分支,分支的回退 , 分支的創建, 和 cherry-pick 的使用.
每次開發前更新一次分支我以爲也是避免衝突好方法 , 學會編寫更加溫馨,合理,準確 commit 信息.
若是想要開發一些本身的我的項目 學會創建倉庫也是頗有必要的 , 固然也有不少能夠免費的使用的 Git 倉庫,好比GitHub 這些 , 今年GitHub私人倉庫也是能夠無償使用(不過協做人數仍是有限制的),還有碼雲這些國內的平臺,若是本身有服務器 的也能夠本身搭建倉庫.