Git
- Git 是目前世界上最先進的分布式版本控制系統(沒有之一)
作用
- 源代碼管理
為什么要進行源代碼管理?
- 方便多人協同開發
- 方便版本控制
Git管理源代碼特點
-
1.
Git
是分布式管理.服務器和客戶端都有版本控制能力,都能進行代碼的提交、合并、. -
?
2.Git
會在根目錄下創建一個.git
隱藏文件夾,作為本地代碼倉庫
Git操作流程圖解
工作區暫存區和倉庫區
?
工作區
- 對于
添加
、修改
、刪除
文件的操作,都發生在工作區中
暫存區
- 暫存區指將工作區中的操作完成小階段的存儲,是版本庫的一部分
倉庫區
- 倉庫區表示個人開發的一個小階段的完成
- 倉庫區中記錄的各版本是可以查看并回退的
- 但是在暫存區的版本一旦提交就再也沒有了
?
Git單人本地倉庫操作
?
? ? ? 1 .安裝git
sudo apt-get install git
-
2.查看git安裝結果
git
-
3.創建項目
-
在桌面創建
test
文件夾,表示是工作項目Desktop/test/
-
-
4.創建本地倉庫
- 進入到
test
,并創建本地倉庫.git
-
新創建的本地倉庫
.git
是個空倉庫cd Desktop/test/git init
- 進入到
? ? ? ?5.配置個人信息
git config user.name '張三'git config user.email 'zhangsan@163.com'
默認不配置的話,會使用全局配置里面的用戶名和郵箱 全局git配置文件路徑:~/.gitconfig
? ? ? 6.新建py文件
-
?在項目文件
test
里面創建login.py
文件,用于版本控制演示
7.查看文件狀態
- 紅色表示新建文件或者新修改的文件,都在工作區.
- 綠色表示文件在暫存區
-
新建的
login.py
文件在工作區,需要添加到暫存區并提交到倉庫區git status
- 8.將工作區文件添加到暫存區
-
# 添加項目中所有文件git add .或者# 添加指定文件git add login.py
-
9.將暫存區文件提交到倉庫區
commit
會生成一條版本記錄-
-m
后面是版本描述信息git commit -m '版本描述'
10.接下來就可以在login.py
文件中編輯代碼
- 代碼編輯完成后即可進行
add
和commit
操作 -
提示:添加和提交合并命令
git commit -am "版本描述"
11.查看歷史版本
git log或者git reflog
git reflog 可以查看所有分支的所有操作記錄(包括commit和reset的操作),包括已經被刪除的commit記錄,git log 則不能察看已經刪除了的commit記錄
12.回退版本
-
方案一:
HEAD
表示當前最新版本HEAD^
表示當前最新版本的前一個版本HEAD^^
表示當前最新版本的前兩個版本,以此類推...HEAD~1
表示當前最新版本的前一個版本-
HEAD~10
表示當前最新版本的前10個版本,以此類推...git reset --hard HEAD^
?
方案二:當版本非常多時可選擇的方案
-
通過每個版本的版本號回退到指定版本
git reset --hard 版本號
13.撤銷修改
- 只能撤銷工作區、暫存區的代碼,不能撤銷倉庫區的代碼
-
撤銷倉庫區的代碼就相當于回退版本操作
-
撤銷工作區代碼
-
新加代碼
num3 = 30
,不add
到暫存區,保留在工作區git checkout 文件名
-
-
?
撤銷暫存區代碼
-
新加代碼
num3 = 30
,并add
到暫存區# 第一步:將暫存區代碼撤銷到工作區 git reset HEAD 文件名 # 第二步:撤銷工作區代碼 git checkout 文件名
14.對比版本
-
對比版本庫與工作區
- 新加代碼
num3 = 30
,不add
到暫存區,保留在工作區 -
git diff HEAD -- login.py
- 新加代碼
對比版本庫
- 新加代碼
num3 = 30
,并add
到暫存區 -
git diff HEAD HEAD^ -- login.py
15.刪除文件:刪除文件分為確定刪除和誤刪
-
在項目中新建
test.py
文件,并添加和提交到倉庫-
確定刪除處理:
# 刪除文件rm 文件名# git確定刪除文件,對比添加文件git add git rm 文件名# 刪除后記錄刪除操作版本git commit -m '刪除描述'
-
誤刪處理:撤銷修改即可
# 刪除文件rm 文件名# git撤銷修改git checkout -- 文件名
Git遠程倉庫Github
- 要使用git命令操作倉庫,需要進入到倉庫內部
- 要同步服務器代碼就執行:
git pull
- 本地倉庫記錄版本就執行:
git commit -am '版本描述'
- 推送代碼到服務器就執行:
git push
- 編輯代碼前要先
pull
,編輯完再commit
,最后推送是push
代碼沖突
- 提示:多人協同開發時,避免不了會出現代碼沖突的情況
- 原因:多人同時修改了同一個文件
- 危害:會影響正常的開發進度
- 注意:一旦出現代碼沖突,必須先解決再做后續開發
-
3.解決沖突
- 原則:誰沖突誰解決,并且一定要協商解決
- 方案:保留所有代碼 或者 保留某一人代碼
-
解決完沖突代碼后,依然需要
add
、commit
、push
標簽
- 當某一個大版本完成之后,需要打一個標簽
-
作用:
- 記錄大版本
-
備份大版本代碼
補充:刪除本地和遠程標簽
# 刪除本地標簽git tag -d 標簽名# 刪除遠程倉庫標簽git push origin --delete tag 標簽名
-
分支
-
- 作用:
- 區分生產環境代碼以及開發環境代碼
- 研究新的功能或者攻關難題
- 解決線上bug
- 特點:
- 項目開發中公用分支包括master、dev
- 分支master是默認分支,用于發布,當需要發布時將dev分支合并到master分支
- 分支dev是用于開發的分支,開發完階段性的代碼后,需要合并到master分支
- 作用:
-
-