1. 程式人生 > >git 命令 (帶圖詳情版包括程式碼衝突標籤以及合併分支)

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工具配置 後面會演示

程式碼衝突

  • 提示:多人協同開發時,避免不了會出現程式碼衝突的情況
  • 原因:多人同時修改了同一個檔案
  • 危害:會影響正常的開發進度
  • 注意:一旦出現程式碼衝突,必須先解決再做後續開發

 衝突程式碼表現

解決衝突

  • 原則:誰衝突誰解決,並且一定要協商解決
  • 方案:保留所有程式碼 或者 保留某一人程式碼
  • 解決完衝突程式碼後,依然需要addcommitpush

沒有具體解決方案 誰衝突誰解決 最簡單的就是你把自己程式碼粘貼出來 然後重新pull一下在貼上上去

########決不能修改同事程式碼(會被打)

補充:

  • 容易衝突的操作方式

    • 多個人同時操作了同一個檔案
    • 一個人一直寫不提交
    • 修改之前不更新最新程式碼
    • 提交之前不更新最新程式碼
    • 擅自修改同事程式碼
  • 減少衝突的操作方式

    • 養成良好的操作習慣,先pull在修改,修改完立即commitpush
    • 一定要確保自己正在修改的檔案是最新版本的
    • 各自開發各自的模組
    • 如果要修改公共檔案,一定要先確認有沒有人正在修改
    • 下班前一定要提交程式碼,上班第一件事拉取最新程式碼
    • 一定不要擅自修改同事的程式碼

標籤

  • 當某一個大版本完成之後,需要打一個標籤
  • 作用:

    • 記錄大版本
    • 備份大版本程式碼

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 

如果一切妥當使用