Git梳理

前言

    遠端和本地交互代碼時,有兩種方式:HTTP&SSH。使用HTTP時,每次都需要輸入密碼,在這裏建議使用SSH,生成Key後就可重複使用了,gitlab中生成SSH Key,可以看這裏 --> https://www.jianshu.com/p/31cbbbc5f9fa

 

集中式、分佈式

    集中式:所有文件的修訂版本通過一箇中央服務器集中存放,協同工作的開發者都需要通過網絡連接到這臺服務器,取出最新的文件或者提交更新

    分佈式:每個協同開發者都能從一臺“共享服務器”克隆一份完整的版本庫到自己計算機本地,離開了網絡依然可以執行修改提交文件、查看歷史版本記錄等操作,不需要每次修改都把文件推送到版本控制服務器

 

工作區、暫存區、版本庫

    對於任何一個文件,只有三個狀態:已修改(modified)、已暫存(staged)、已提交(committed)

  1. 用戶在工作區修改文件
  2. 修改完成後將需要追蹤的新文件和帶提交的更改等以快照的形式保存到暫存區
  3. 最後將暫存區的文件快照轉儲到Git版本庫中

 

關鍵分支

    master(主分支):存放可供在生產環境中部署的代碼,即應用包,每次更新都有對應的版本號標籤,可進行後續代碼版本跟蹤

    develop(主開發分支):包含確定即將發佈的代碼,當前最新開發成果的代碼集合

    feature(新功能分支):可最終合併至develop或捨棄

    release:發佈時用的分支,允許在該分支中修復測試中發現的缺陷,有版本發佈各項說明信息(版本號、發佈/編譯時間)

    hotfix:緊急修復bug分支

 

常用指令

    一、創建&添加倉庫

  • 在當前目錄下輸入:git init //將目錄變成git可跟蹤管理的倉庫
  • 克隆操作:git clone 遠程倉庫地址 //拷貝一個git倉庫到本地,查看該項目或者進行修改
  • 添加新的遠程倉庫:git remote add gitlab 倉庫地址

    二、分支操作

  • 查看分支:git branch -a/ r/
  • 創建分支:git branch xxx //執行git init的時候,缺省情況下會創建一個"master"分支
  • 切換分支:git checkout xxx //將該分支的最後提交的快照替換你的工作目錄的內容
  • 創建分支並切換分支:git checkout -b xxx origin/master //在本地創建xxx分支,分支代碼基於origin/master
  • 在本地刪除一個分支:git branch -d 分支名
  • 刪除遠端分支:git branch -r -d origin/分名 //刪除本地的遠程跟蹤分支 git push origin :分支名//刪除遠程原種分支
  • 從遠程拉數據至主分支:git pull origin master

    三、文件操作

    1.添加/修改文件

  • 修改後的文件進行快照,保存到暫存區域:git add 文件名
  • 將文件提交到倉庫:git commit -m"提交說明"
  • 將修改添加到暫存區提交到倉庫:git commit -a -m"說明"
  • 查看倉庫當前狀態:git status
  • 查看文件修改部分:git diff

    2.撤銷修改

  • 修改未add暫存區:git checkout -- file //撤銷至版本庫狀態
  • 修改已add暫存區:git reset HEAD <file>、git checkout --file //撤銷至暫存區狀態
  • 已經提交了不合適的修改到版本庫時需要版本回退

    3.版本回退

  • 查看倉庫版本:git log
  • 回退版本:git reset --hard 版本號
  • 回退上一版本:git reset --hard HEAD^ //git內部HEAD指向當前版本、HEAD^指向上一版本、HEAD^^指向上上版本
  • 回退上上版本:git reset HEAD^^
  • 回退上100個版本:git reset HEAD~100

    備註:--soft 重置HEAD到指定版本,不會修改暫存區和工作區;--mixed 同時修改了暫存區;--hard 同時修改了工作目錄,還原至上一次commit的狀態且無法找回

    4.合併分支

  • 代碼合併:git merge 指定分支

    5.解決分支衝突

  • 查看衝突:git tracks changes of files
  • 解決衝突:保留、刪除 //同一個文件在遠程分支和本地分支裏按照不同的方式被修改了

    6.文件推送至遠端

  • 查看當前遠程倉庫:git remote -v
  • 獲取遠程倉庫的更新:git fetch origin 分支名
  • 合併遠程倉庫的更新到當前分支:git merge orign/master -m"說明"
  • 推送當前分支與數據到遠端倉庫:git push origin 分支名

    四、打標籤

  • 對提交快照打標籤:git tag -a 標籤名 -m"說明" 版本號
  • 查看所有標籤:git tag
  • 刪除某個標籤:git tag -d 標籤名
  • 推送某個標籤到遠程:git push origin 標籤名 //推送指定標籤、git push origin --tags //推送全部標籤
  • 刪除遠程標籤(本地刪除後):git push origin :refs/tags/標籤名

    備註:發佈版本時,在版本庫中打一個標籤,便唯一確定打標籤時刻的版本,取某個標籤的版本就是把那個打標籤時刻的歷史版本取出來

 

 

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