簡介
什麼是Git
Git是一個免費的開源分散式版本控制系統,也是目前為止世界上最先進的分散式版本控制系統。Git官方有一個影片介紹,可以點此觀看
什麼是版本控制系統?
一種記錄一個或若干檔案內容變化,以便將來查閱特定版本修訂情況的系統。簡單點理解就是一個可以幫助我們記錄檔案修改的系統。Git官方有一個影片介紹,可以點此觀看
什麼是分散式版本控制系統?
分散式版本控制系統時相對於集中式版本控制系統的。
集中式版本控制系統將倉庫存放在中央伺服器中集中管理,當你需要時從中央伺服器中拉取最新的版本,修改完後將修改提交給中央伺服器。這就會帶來例如當中央伺服器當機時整個版本控制系統就會崩潰;推送或者拉取一個較大的檔案時就會消耗很多時間等弊端。
分散式版本控制系統中,每個人電腦都是一個倉庫,自己的檔案可以在本地管理,當需要多人協同時只需要管理好本地倉庫與協同倉庫的版本即可
Git有什麼作用
進行原始碼管理
為什麼要進行原始碼管理
方便多人協同開發
方便程式碼版本控制
Git的特點
- 分散式版本控制系統,伺服器和客戶端都有版本控制能力,都能進行程式碼的提交、合併等操作。
- 在使用Git的時候會自動建立一個.git的隱藏資料夾作為本地倉庫
Git操作流程
clone
:第一次從Git伺服器獲取專案add
:將修改新增到本地倉庫commit
:將修改提交到本地倉庫push
:將本地倉庫的修改提交到Git伺服器pull
:將Git伺服器中的專案獲取到本地倉庫
Git倉庫
什麼是倉庫
倉庫的英文名是repository,又被稱為版本庫。它是一個被Git管理的檔案目錄。
工作區,暫存區和倉庫
- 工作區:對程式碼的新增,修改,刪除等操作的區域。
- 暫存區:儲存工作區的操作的區域。
- 倉庫區:即本地倉庫區域,會記錄完成的操作與歷史版本。
Git操作
安裝
Mac
在mac上有多種方法可以安裝Git,最簡單的事透過Xcode命令列工具安裝。
透過Xcode安裝
1.下載並安裝Xcode
2.在終端中執行git即可,如果尚未安裝,它將提示您安裝。
透過homebrew安裝
1.安裝homebrew
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2.安裝git
$ brew install git
透過安裝包安裝
1.點選此下載最新版本
2.下載完成後開啟安裝包,一直下一步安裝即可
Linux
在Linux發行版上安裝GIt,可以透過附帶的軟體包管理工具來安裝
Debian/Ubuntu
$ apt-get install git
其他發行版本見這個連結
Windows
下載安裝包
根據作業系統位數選擇,連結
安裝預設選項安裝即可
安裝完成後透過可以透過git --version
檢視安裝版本
配置Git
配置檔案介紹
Git有一個git config
的工具,可以設定和獲取配置,用來控制Git外觀及操作。這些變數可以存放在三個不同的位置,根據存放位置不同作用的範圍也不同。
1./etc/gitconfig
:包含系統上每個使用者及其儲存庫的配置。
2.~/.gitconfig
或~/.config/git/config
:每個使用者專屬的配置
3.config.git/config
:當前使用儲存庫的git目錄,用於該儲存庫的配置
如果有相同配置項時,每個級別都會覆蓋上一個級別中的值,即:3>2>1
可以使用一下命令檢視所有設定以及設定的所屬:
$ git config --list --show-origin
常見配置
下面介紹一些常見配置
身份配置
安裝完Git做的第一件事應該是設定使用者名稱和電子郵箱。
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
使用global後,該資訊將會始終作用域Git操作上
Git編輯器配置
Git預設的編輯器是系統預設編輯器
如果要是用其他文字編輯器(例如vim),則可以執行以下操作:
$ git config --global core.editor vim
檢視配置
如果要檢視配置,可以使用git config --list
命令列出Git可以找到的所有設定
你可能會看到很多配置項,找不到你想要的,這時候你可以透過git config <key>
來檢視特定的配置,例:
$ git config user.name
silencehuliang
幫助
獲取方式
Git獲取幫助的方式有三種git help <verb>
、git <verb> --help
、man git-<verb>
例如,可以透過git help config
獲取config的相關幫助
如果只需要快速瞭解Git命令的可用選項也可以用-h
來檢視相關幫助
例如git add -h
建立專案
1.將本地不收版本控制的目錄轉換為Git倉庫
①進入本地目錄
$ cd ~/Desktop/project
②輸入轉化命令
$ git init
此時會在當前目錄下建立一個.git
目錄,裡面存放著Git倉庫中所有的必須檔案
$ ls -a
. .. .git
2.從其他地方克隆現有的Git倉庫
①進入我們需要存放倉庫的路徑
$ cd ~/Desktop/
②將現有的倉庫克隆下來
$ git clone https://github.com/Silencehuliang/project
###
檢視狀態
- 可以透過
git status
檢視倉庫中穩健的狀態 - 綠色表示檔案在暫存區
- 紅色表示檔案在工作區
可以透過git add
將工作區檔案新增到暫存區
新增專案中所有檔案:
git add .
新增指定檔案:
git add xxx.py
可以透過git commit
將暫存區檔案提交到倉庫區
git commit -m "修改描述"
,其中-m引數後面跟的是對本次修改的描述git commit -am "修改描述"
,可以透過-am來實現新增和提交合並操作
檢視歷史版本
透過git log
或者git relog
可以檢視歷史版本
回退版本
透過版本號會退版本
git reset --hard 版本號
透過
HEAD
回退版本當工作區檔案發生了意外需要回退到上一個版本時可以透過
`git reset --hard HEAD`
HEAD
表示當前最新版本HEAD^
表示當前最新版本的前一個版本HEAD^^
表示當前最新版本的前兩個版本,以此類推…HEAD~1
表示當前最新版本的前一個版本HEAD~10
表示當前最新版本的前10個版本,以此類推…
撤銷修改
只能撤銷工作區、暫存區的程式碼,不能撤銷倉庫區的程式碼
撤銷倉庫區的程式碼就相當於回退版本操作
撤銷工作區程式碼
新加程式碼
num3 = 30
,不add
到暫存區,保留在工作區git checkout 檔名
撤銷暫存區程式碼
新加程式碼
num3 = 30
,並add
到暫存區# 第一步:將暫存區程式碼撤銷到工作區 git reset HEAD 檔名 # 第二步:撤銷工作區程式碼 git checkout 檔名
對比版本
對比版本庫與工作區
- 新加程式碼
num3 = 30
,不add
到暫存區,保留在工作區 git diff HEAD -- xxx.py
對比版本庫
- 新加程式碼
num3 = 30
,並add
到暫存區 git diff HEAD HEAD^ -- xxx.py
刪除檔案
刪除檔案分為確定刪除和誤刪
在專案中新建
test.py
檔案,並新增和提交到倉庫確定刪除處理:
# 刪除檔案 rm 檔名 # git確定刪除檔案,對比新增檔案git add git rm 檔名 # 刪除後記錄刪除操作版本 git commit -m '刪除描述'
誤刪處理:撤銷修改即可
# 刪除檔案 rm 檔名 # git撤銷修改 git checkout -- 檔名
程式碼衝突
提示:多人協同開發時,避免不了會出現程式碼衝突的情況
原因:多人同時修改了同一個檔案
危害:會影響正常的開發進度
注意:一旦出現程式碼衝突,必須先解決再做後續開發
解決衝突
- 原則:誰衝突誰解決,並且一定要協商解決
- 方案:保留所有程式碼 或者 保留某一人程式碼
- 解決完衝突程式碼後,依然需要
add
、commit
、push
,如果執行pull
沒有影響,就算真正解決了衝突程式碼
補充:
- 容易衝突的操作方式
- 多個人同時操作了同一個檔案
- 一個人一直寫不提交
- 修改之前不更新最新程式碼
- 提交之前不更新最新程式碼
- 擅自修改同事程式碼
- 減少衝突的操作方式
- 養成良好的操作習慣,先
pull
在修改,修改完立即commit
和push
- 一定要確保自己正在修改的檔案是最新版本的
- 各自開發各自的模組
- 如果要修改公共檔案,一定要先確認有沒有人正在修改
- 下班前一定要提交程式碼,上班第一件事拉取最新程式碼
- 一定不要擅自修改同事的程式碼
- 養成良好的操作習慣,先
標籤
- 當某一個大版本完成之後,需要打一個標籤
- 作用:
- 記錄大版本
- 備份大版本程式碼
在本地打標籤
git tag -a 標籤名 -m '標籤描述'
推送標籤到遠端倉庫
git push origin 標籤名
刪除本地和遠端標籤
# 刪除本地標籤
git tag -d 標籤名
# 刪除遠端倉庫標籤
git push origin --delete tag 標籤名
分支
- 作用:
- 區分生產環境程式碼以及開發環境程式碼
- 研究新的功能或者攻關難題
- 解決線上bug
- 特點:
- 專案開發中公用分支包括master、dev
- 分支master是預設分支,用於釋出,當需要釋出時將dev分支合併到master分支
- 分支dev是用於開發的分支,開發完階段性的程式碼後,需要合併到master分支
檢視當前分支
git branch
建立並切換到dev分支
git checkout -b dev
設定本地分支跟蹤遠端指定分支(將分支推送到遠端)
git push -u origin dev
分支合併到master分支
先切換到master分支
git checkout master
分支合併到master分支
git merge dev
本作品採用《CC 協議》,轉載必須註明作者和本文連結