天天看點

Git基礎概念和指令合集

必備概念

  1. 多分支-遠端分支與本地分支
  2. 工作區、緩存區、本地版本庫、遠端版本庫
  3. rebase和merge的差別
  4. 分支的"基"
  5. 企業常用的分支結構—master、develop、feature、bugfix等

各常見分支的含義

1. master分支

  • 所有項目的父分支(穩如狗的分支)
  • 一般需求開發不會用到master分支

2. develop分支

  • 最不穩定的分支(bug頻出,如果哪次代碼同步完develop之後炸了千萬不要懷疑自己)
  • 幾乎所有的需求都需要從develop分支checkout,需求最後的MR也會送出到develop分支
  • develop分支會有封闆時間,封闆後拉出release或alpha分支

3. release分支和alpha分支

  • bug數量僅次于develop的分支
  • 用于bugfix,封闆後隻能交bugfix
  • 用于灰階測試
  • 最終合入master

4. feature分支

  • 這個就是做需求時自己從develop中checkout出來的分支,對應每個需求
  • 最終經過送出MR,代碼出包提測步驟,合入develop分支
  • feature記得保持和develop同步

5. bugfix分支

  • 在封闆之後,bugfix從release或alpha分支checkout,最終修複bug後合入release或alpha,最終會被帶到develop

Git指令合集

1. 說明

  • 所有下劃線開頭的詞語均為變量
  • origin存在的指令一般跟遠端分支有關
  • 标紅的指令為多分支開發所需的基本指令

2. 使用者資訊操作

  • git config user.name '_name',設定/修改目前project的使用者名
  • git config user.email '_email',設定/修改目前project的email
  • git config --global user.name '_name',設定/修改全局的使用者名
  • git config --global user.email '_email',設定/修改全局的email

3. 分支操作

  • git branch,檢視本地所有分支,有标記的為目前分支
  • git branch -a,檢視所有分支,包括遠端分支
  • git branch _local_branch_name,從目前分支建立新分支
  • git branch _local_branch_name origin/_remote_branch_name,基于遠端版本建立新分支
  • git branch -vv,檢視本地分支和遠端分支的映射關系,如果有映射關系,pull和push等操作都會直接操作到映射的遠端分支
  • git branch -d _local_branch_name,删除分支
  • git branch --unset-upstream,撤銷目前本地分支與遠端分支的映射關系
  • git branch --set-upstream-to origin/_remote_branch_name,建立本地目前分支與遠端分支的映射關系
  • git checkout _local_branch_name,切換到某個分支,切換前需要stash或者commit目前分支的修改
  • git branch -m _old_local_branch_name _new_local_branch_name,重命名本地分支
  • git push origin :_remote_branch_name,删除遠端分支,注意冒号前為空代表送出空到遠端分支,故會删除目标遠端分支
  • git cherry-pick <commit id>,相當于再次送出一次commit到另一個分支,但是辨別不變

4. 拉取遠端

  • git clone _url,克隆遠端倉庫中的項目,開始一個項目的第一步
  • git pull,從映射的遠端分支fetch代碼merge到目前分支
  • git pull origin _remote_branch_name:_local_branch_name,從遠端分支fetch代碼并merge到本地分支,相當于先執行git fetch再執行git merge
  • git pull origin _remote_branch_name,pull遠端分支合并到目前分支
  • git pull --rebase,fetch後不執行merge而執行rebase操作
  • git fetch

5. 修改代碼

  • git status,檢視目前本地代碼狀态
  • git diff,檢視工作區代碼和暫存區的差別
  • git diff -- _local_file_path,檢視特定檔案工作區代碼和暫存區的差別
  • git diff --cached,檢視暫存區和本地版本庫的差別,不加filepath能看到所有diff的檔案名
  • git diff HEAD,檢視工作區代碼和本地版本庫的差別
  • git diff HEAD -- _local_file_path,檢視特定檔案工作區代碼和本地版本庫的差別
  • git add _local_file_path,将某個檔案送出到暫存區
  • git add .,将目前目錄下所有改動檔案送出到暫存區
  • git commit -m '_msg',将已經add過的内容送出到本地版本庫
  • git push,将目前分支的版本庫代碼送出到映射的遠端分支,注意這裡需要本地分支名與其映射的遠端分支名相同
  • git push origin _local_branch_name:_remote_branch_name,将本地分支代碼送出到遠端分支,如果遠端分支不存在則建立新的遠端分支
  • git reset _id,復原到某個操作号版本
  • git reset,如果不小心把一些.class檔案add并commit了,可以用這個撤銷,工作區的代碼還會存在
  • git stash,暫存目前工作區的代碼,後面可以恢複(用于暫時切換其他分支工作)
  • git stash list,檢視目前已暫存版本
  • git stash pop stash@{1},恢複指定的stash