什麼是Git , 如何使用Git , 如何實現Git自動部署

本文預計閱讀時間 :  3分鐘
複製代碼

導讀

本文將帶你認識Git 和簡單的使用Git 並不適合想要學習更深層次Git的讀者 , 附帶講解了簡單的自動部署腳本.git

若是你是一個合格的程序員那就應該學會使用Git , 否則不只苦了本身也苦了你的同事.程序員

畢竟沒有人願意放下手上的工做特意去教你 學會自我學習纔是這個行業最好的技能.windows

若是你不肯意動手只是單純的閱讀這篇文章可能對並沒有益處.緩存

什麼是Git

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 的理由

  • 異地協同工做
  • 現場版本控制
  • 重寫提交說明
  • 無盡的後悔藥(分支回退,能夠指定回到某一提交)
  • 更好用的提交列表(文件修改記錄)
  • 更好的差別比較
  • 工做進度保存

如何搭建一個倉庫

  1. 安裝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/ 下載安裝便可
    複製代碼
  2. 在 Linux 下初始倉庫

    //創建專屬用戶 Git(該用戶應該擁有倉庫文件的讀寫權限)
    
     adduser git
    
     //設置用戶密碼
    
     passwd git
    
     //建立倉庫文件夾(可隨意命名)
     mkdir /opt/git  
    
     //進入倉庫目錄
     cd /opt/git
    
     //初始化Git倉庫
     git init --bare 倉庫名稱.git
    
     //賦予倉庫文件夾權限
    
     chown -R  git:root 倉庫名稱.git
    複製代碼
  3. 倉庫結構

  • HEAD:指示目前被檢出的分支
  • config:包含項目特有的配置選項
  • description:僅供 GitWeb 程序使用
  • hooks:包含客戶端或服務端的鉤子腳本(hook scripts)
  • info:包含一個全局性排除(global exclude)文件,用以放置那些不但願被記錄在 .gitignore 文件中的忽略模式(ignored patterns)
  • objects:存儲全部數據內容
  • refs:存儲指向數據(分支)的提交對象的指針

如何使用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
複製代碼

這是實現的是簡單的自動部署只是用於開發測試 , 具體的部署方案可能須要根據業務進行調整

有哪些好用Git客戶端

  • 倉庫的部署有 gitlab 方便的管理倉庫
  • 客戶端下JetBrains系列編輯器 對git 支持已經十分完善
  • 比較有名的Git 第三方管理客戶端 有 Source Code 等

最後

平常開發中部署倉庫這些用的比較少,更多的是做爲客戶端來使用 , 可能須要更多去了解 合併分支,分支的回退 , 分支的創建, 和 cherry-pick 的使用.

每次開發前更新一次分支我以爲也是避免衝突好方法 , 學會編寫更加溫馨,合理,準確 commit 信息.

若是想要開發一些本身的我的項目 學會創建倉庫也是頗有必要的 , 固然也有不少能夠免費的使用的 Git 倉庫,好比GitHub 這些 , 今年GitHub私人倉庫也是能夠無償使用(不過協做人數仍是有限制的),還有碼雲這些國內的平臺,若是本身有服務器 的也能夠本身搭建倉庫.

相關文章
相關標籤/搜索