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 日 林納斯·託瓦茲 功成身退,將 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 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章