GIT

Git簡介

  • 作用:源代碼管理
# 爲什麼要進行源代碼管理
- 方便多人協同開發
- 方便版本控制
# Git管理源代碼特點
1. Git是分佈式管理服務器和客戶端都有版本控制能力,都能進行代碼的提交、合併、。。。
2. Git會在根目錄下創建一個.git隱藏文件夾,作爲本地代碼倉庫
# Git操作流程圖
Git服務器-->本地倉庫-->客戶端-->本地倉庫-->Git服務器

工作區暫存區和倉庫區

  • 工作區:對於添加、修改、刪除文件的操作,都發生在工作區中
  • 暫存區:指將工作區中的操作完成小階段的存儲,是版本庫的一部分
  • 倉庫區:表示個人開發的一個小階段的完成
    • 倉庫中記錄的各版本是可以查看並回退的
    • 但是在暫存區的版本一旦提交就再也沒有了

Git單人本地倉庫操作

# 流程
# 安裝git
sudo apt-get install git
密碼:******23
# 查看git安裝結果
git
# 創建項目
- 在桌面創建test文件夾,表示是工作項目
Desktop/test/
# 創建本地倉庫
- 進入到test, 並創建本地倉庫.git
- 新創建的本地倉庫.git是個空倉庫
cd Desktop/test
git init
# 配置個人信息
git config user.name '張三'
git config user.email '[email protected]'
# 新建py文件
- 在項目文件test裏面創建login.py文件,用於版本控制演示
# 查看文件狀態
- 紅色表示新建文件或者新修改的文件,都在工作區
- 綠色表示文件在暫存區
- 新建login.py文件在工作區, 需要添加到暫存區並提交到倉庫區
git status
# 將工作區文件添加到暫存區
# 添加項目中所有文件
git add.
或者
# 添加指定文件
git add login.py
# 將暫存區文件提交到倉庫區
- commit會生成一條版本記錄
- -m後面是版本描述
git commit -m '版本描述'
# 接下來就可以在login.py文件中編輯代碼
- 代碼編輯完成後即可進行 add 和 commit 操作
- 提示:添加和提交合並命令
git commit -am '版本描述'
# 查看歷史版本
git log
或者
git reflog
# 回退版本
* 方案一
- HEAD表示當前最新版本
- HEAD^表示當前最新版本的前一個版本
- HEAD^^表示當前最新版本的前兩個版本, 以此類推...
- HEAD~1表示當前最新版本的前一個版本
- HEAD~10表示當前最新版本的前10個版本,以此類推...
git reset --hard HEAD^
* 方案二
- 通過每個版本的版本號回退到指定版本
git reser --hard 版本號
# 撤銷修改
- 只能撤銷工作區、暫存區的代碼,不能撤銷倉庫區代碼
- 撤銷倉庫區的代碼就相當於回退版本操作
~撤銷工作區代碼:
git checkout 文件名
~撤銷暫存區代碼:
# 第一步:暫存區代碼撤銷到工作區
git reset HEAD 文件名
# 第二步:撤銷工作區代碼
git checkout 文件名
#  對比版本
- 對比版本庫與工作區
git diff HEAD -- login.py
- 對比版本庫
git diff HEAD HEAD^ -- login.py
#  刪除文件:分爲確定刪除和誤刪
- 確定刪除
# 刪除文件
rm 文件名
# git確定刪除文件, 對比添加文件git add
git rm 文件名
# 刪除後記錄刪除操作版本
git commit -m '刪除描述'
- 誤刪處理:撤銷修改即可
# 刪除文件
rm 文件名
# git 撤銷修改
git checkout -- 文件名

Git 遠程倉庫

# 配置SSH公鑰入口
賬戶下的settings屬性
# 修改Github註冊郵箱和用戶名
vi .gitconfig
[user]
      email = zhangjiesharp@163.com
      name = zhangxiaochuZXC
# 生成公鑰
 ssh-keygen -t rsa -C "[email protected]"
# 刪除舊公鑰
rm -r .ssh
# 配置公鑰

# 經理的工作
cd Desktop/manager/
 git clone [email protected]:zhangxiaochuZXC/test007.git
# 密鑰錯誤
eval "$(ssh-agent -s)"
  ssh-add
# 推送項目到遠程倉庫
## 工作區添加到暫存區
git add .
# 暫存區提交到倉庫區
git commit -m '立項'
# 推送到遠程倉庫
git push

# 張三的工作
# 克隆項目到本地
cd Desktop/zhangsan/
git clone [email protected]:zhangxiaochuZXC/test007.git
# 配置張三身份信息
cd Desktop/zhangsan/test007/
git config user.name '張三'
git config user.email '[email protected]'
代碼衝突
  • 提示:多人協同開發時,避免不了會出現代碼衝突的情況
  • 原因:多人同時修改了同一個文件
  • 危害:會影響正常的開發進度
  • 注意:一旦出現代碼衝突,必須先解決再做後續開發
# 容易衝突的操作方式
多個人同時操作了同一個文件
一個人一直寫不提交
修改之前不更新最新代碼
提交之前不更新最新代碼
擅自修改同事代碼
減少衝突的操作方式

# 養成良好的操作習慣,先pull在修改,修改完立即commit和push
一定要確保自己正在修改的文件是最新版本的
各自開發各自的模塊
如果要修改公共文件,一定要先確認有沒有人正在修改
下班前一定要提交代碼,上班第一件事拉取最新代碼
一定不要擅自修改同事的代碼
標籤
  • 當某一個大版本完成之後,需要打一個標籤
  • 作用:
  • 記錄大版本
  • 備份大版本代碼
# 打標籤流程
## 經理進入本地倉庫test007
cd Desktop/manager/test007/
## 經理在本地打標籤
 git tag -a 標籤名 -m '標籤描述'
 例:
 git tag -a v1.0 -m 'version 1.0'
# 經理推送標籤到遠程倉庫
 git push origin 標籤名
 例:
 git push origin v1.0
# 刪除本地和遠程標籤
## 刪除本地標籤
git tag -d 標籤名
## 刪除遠程倉庫標籤
git push origin --delete tag 標籤名
分支
# 作用
研究新的功能或者攻關難題
解決線上bug
# 特點
分支使每個員工開發期的代碼互不干擾
項目開發中公用分支包括master、dev
分支master是默認分支,用於發佈,當需要發佈時將dev分支合併到master分支
分支dev是用於開發的分支,開發完階段性的代碼後,需要合併到master分支
項目中每個項目成員都可以單獨建立分支用於的代碼開發,實現不交叉
# 模擬經理分支操作
## 進入經理本地倉庫
 cd Desktop/manager/test007/
## 查看當前分支
git branch
## 創建並切換到dev分支
git checkout -b dev
## 管理dev分支源代碼:add、commit、push(git push --set-upstream origin dev## dev分支合併到master分支
### 先切換到master分支
git checkout master
### dev分支合併到master分支
git merge dev
### 合併分支操作到遠程倉庫
git push
## 張三同步代碼成功,分支合併纔算成功
cd Desktop/zhangsan/test007/
git pull

# BUG 分支
有時當我們正在開發新功能時,出現了線上BUG。此時,必須暫停正在開發的功能,新建臨時分支先解決線上BUG
## 張三切換到dev分支
git checkout dev
## 線上v1.0版本突然發現bug
### 暫停該工作,記錄未提交的修改:保留現場
git stash
## 解決線上v1.0版本bug
### 切換到經理賬戶
### 新建fixbug分支,並下載v1.0版本的代碼到fixbug分支
git checkout -b fixbuh v1.0
### 修復線上v1.0版本bug
### 管理fixbug分支代碼 add  commit  push(git push --set-upstream origin fixbug)
### 合併fixbug分支到master分支,並推送到遠程倉庫
##### 切換到master分支
git checkout master
##### 合併fixbug分支到master分支
git merge fixbug
##### 推送合併到遠程倉庫
git push
## 經理打標籤v1.1,發佈v1.1版本
git tag -a v1.1 -m 'version 1.1'
git push origin v1.1
## 張三回覆dev分支未提交的修改
git checkout dev
git stash lish
git stash pop
## 張三將fixbug分支合併到dev分支
git merge fixbug
git push
## 張三將dev分支合併到master分支,並推送
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章