git 命令 (帶圖詳情版包括程式碼衝突標籤以及合併分支)
Git
Git 是目前世界上最先進的分散式版本控制系統(沒有之一)
作用
原始碼管理
好處
方便多人協同開發
方便版本控制
Git的誕生
作者是 Linux 之父:Linus Benedict Torvalds當初開發
Git 僅僅是為了輔助 Linux 核心的開發(管理原始碼)
git 開發時間表
- git 的產生是 Linux Torvals 在無奈被逼的情況下創造的,我看了一下時間歷程:
- 2005 年 4 月3 日開始開發 git
- 2005 年 4 月 6 日專案釋出
- 2005 年 4 月 7 日 Git 開始作為自身的版本控制工具
- 2005 年 4 月 18 日發生第一個多分支合併
- 2005 年 4 月 29 日 Git 的效能達到 Linux 預期
- 2005年 7 月 26 日 Linux 功成身退,將 Git 維護權交給 Git 另一個主要貢獻者 Junio C Hamano,直到現在
Git 迅速成為最流行的分散式版本控制系統,尤其是 2008 年,GitHub 網站上線了,它為開源專案免費提供 Git 儲存,無數開源專案開始遷移至 GitHub,包括 jQuery,PHP,Ruby 等等
工作區暫存區和倉庫區
github gitlab命令一樣
工作區
- 對於
新增
、修改
、刪除
檔案的操作,都發生在工作區中
暫存區
- 暫存區指將工作區中的操作完成小階段的儲存,是版本庫的一部分
倉庫區
- 倉庫區表示個人開發的一個小階段的完成
- 倉庫區中記錄的各版本是可以檢視並回退的
- 但是在暫存區的版本一旦提交就再也沒有了
安裝git
sudo apt-get install git
如果想安裝最新版本國慶幾天我會寫一篇文章是Centos7 安裝git Python consul的文章
2.檢視git安裝結果
git
配置個人資訊
git config user.name '張三'
git config user.email '[email protected]'
檢視檔案狀態
- 紅色表示新建檔案或者新修改的檔案,都在工作區.
- 綠色表示檔案在暫存區
-
新建的
login.py
檔案在工作區,需要新增到暫存區並提交到倉庫區git status
將工作區檔案新增到暫存區
# 新增專案中所有檔案
git add .
或者
# 新增指定檔案
git add login.py
將暫存區檔案提交到倉庫區
commit
會生成一條版本記錄-
-m
後面是版本描述資訊git commit -m '版本描述'
檢視歷史版本
git log
或者
git reflog
推薦使用git reflog (詳細版包括刪除的commit記錄)
回退版本
-
方案一:
HEAD
表示當前最新版本HEAD^
表示當前最新版本的前一個版本HEAD^^
表示當前最新版本的前兩個版本,以此類推...HEAD~1
表示當前最新版本的前一個版本-
HEAD~10
表示當前最新版本的前10個版本,以此類推...git reset --hard HEAD^
方案二:當版本非常多時可選擇的方案
-
通過每個版本的版本號回退到指定版本
git reset --hard 版本號
推薦使用方案二
撤銷修改
- 只能撤銷工作區、暫存區的程式碼,不能撤銷倉庫區的程式碼
-
撤銷倉庫區的程式碼就相當於回退版本操作
git checkout 檔名
撤銷暫存區程式碼
# 第一步:將暫存區程式碼撤銷到工作區
git reset HEAD 檔名
# 第二步:撤銷工作區程式碼
git checkout 檔名
對比版本
-
對比版本庫與工作區
-
git diff HEAD -- login.py
推薦使用ide工具這個不清晰
對比版本庫
- 新加程式碼
num3 = 30
,並add
到暫存區 -
git diff HEAD HEAD^ -- login.py
刪除檔案:刪除檔案分為確定刪除和誤刪
-
在專案中新建
test.py
檔案,並新增和提交到倉庫-
確定刪除處理:
# 刪除檔案 rm 檔名 # git確定刪除檔案,對比新增檔案git add git rm 檔名 # 刪除後記錄刪除操作版本 git commit -m '刪除描述'
-
誤刪處理:撤銷修改即可
# 刪除檔案
rm 檔名
# git撤銷修改
git checkout -- 檔名
克隆遠端倉庫的命令
git clone https://github.com/xxxxxxxx.git (第一次拉下來程式碼)
配置使用者名稱和郵箱 git config user.name 'xx'
git config user.email '[email protected]'
在 push 的時候需要設定賬號與密碼,該密碼則是 github 的賬號與密碼
- 如果在每次 push 都需要設定賬號與密碼,那麼可以設定記住密碼
設定記住密碼(預設15分鐘): git config --global credential.helper cache 如果想自己設定時間,可以這樣做(1小時後失效): git config credential.helper 'cache --timeout=3600' 長期儲存密碼: git config --global credential.helper store
推薦使用ide工具配置 後面會演示
程式碼衝突
- 提示:多人協同開發時,避免不了會出現程式碼衝突的情況
- 原因:多人同時修改了同一個檔案
- 危害:會影響正常的開發進度
- 注意:一旦出現程式碼衝突,必須先解決再做後續開發
衝突程式碼表現
解決衝突
- 原則:誰衝突誰解決,並且一定要協商解決
- 方案:保留所有程式碼 或者 保留某一人程式碼
-
解決完衝突程式碼後,依然需要
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
dev分支合併到master分支
- 提示:只有當dev分支合併到master分支成功
-
先切換到master分支
git checkout master
dev分支合併到master分支
git merge dev
推送合併分支操作到遠端倉庫
-
合併分支預設在本地完成,合併後直接推送即可
git push
只有當同事同步程式碼成功,分支合併才算成功
cd Desktop/zhangsan/test007/
git pull
git 命令大全
第一次拉下來程式碼
git clone 網址
更新已經拉下來過得程式碼
git pull
一次性拉下來分支程式碼
git clone origin -b 分支名 網址
-
配置個人資訊
-
git config user.name xxxx
-
git config user.email [email protected]
-
檢視檔案狀態
-
git status
-
建立檔案追蹤
-
git add 檔名
-
git add . (建立所有檔案追蹤)
-
將檔案推送到工作區
-
git commit -m 描述資訊(別瞎比寫不然會被打)
-
增添與提交合並命令
-
git commit -am 描述資訊
-
推送到遠端
-
git push origin 分支名
-
檢視歷史版本
-
git log
-
git reflog(推薦使用 可以看到刪除的commit資訊)
-
回退版本(這裡不寫多命令上面帶圖的有詳細版)
-
git reset --HEAD版本號(推薦使用)
-
撤銷修改
-
只能撤銷工作區
-
git checkout 檔名
-
撤銷暫存區的程式碼相當於回退版本
-
git reset HEAD 檔名
-
對比版本
-
git diff HEAD -- 檔名(推薦使用IDE工具裡面更詳細)
-
刪除檔案(別記了 一般不用)
-
git rm 檔名
-
git commit 刪除資訊描述
-
如果誤刪
-
git checkout -- 檔名
-
程式碼衝突就不詳細解釋了上面寫的很詳細
-
標籤
-
打標籤
-
git tag -a 標籤 -m 描述資訊
-
git push origin 標籤
-
分支
-
檢視分支
-
git branch
-
切換分支 git checkout 分支名
-
建立並切換分支 git checkout -b 分支名
-
提交遠端
-
git push origin 分支名
使用流程
1 配置祕鑰
2 建立檔案並使用 git clone 網址
3 拉下來程式碼之後切換分支 git checkout 分支名
4 推到遠端 git push origin 分支名
使用ide 配置 網址
ctrl + k 一步 commit 加push
如果一切妥當使用