天天看點

版本管理工具git基本操作git簡介時光穿梭遠端倉庫:分支管理标簽管理自定義git經驗建議git單人工作流git功能分支工作流其他

版本管理工具git

版本管理工具git基本操作git簡介時光穿梭遠端倉庫:分支管理标簽管理自定義git經驗建議git單人工作流git功能分支工作流其他

git簡介

分類

集中式:cvs,svn
分布式:git
托管網站:github      

下載下傳

git官網: https://git-scm.com/
國内鏡像:https://npm.taobao.org/mirrors/git-for-windows/      

mac

$ brew install git      
linux

常用指令

建立:mkdir dirname
進入:cd dirname
目前:pwd
檔案清單:ls
檢視:cat readme.txt
編輯:vim readme.txt
删除:rm readme.txt      

git配置

指定使用者名和位址
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
git config --global color.ui true # 顯示顔色      

建立版本庫

初始化倉庫:git init
添加到暫存區:git add filename
送出更改:git commit -m "message"
檢視狀态:git status
檢視不同:git diff
檢視工作區和版本庫裡面最新版本的差別:
git diff HEAD -- readme.txt      

時光穿梭

送出曆史

git log  
git log --pretty=oneline
git log --graph --pretty=oneline --abbrev-commit
指令曆史:git reflog      

版本回退

回退到上一版本:git reset --hard HEAD^
HEAD表示目前版本指針,往上多個版本:HEAD~100
回到指定版本:git reset --hard 版本号      

工作區和暫存區

工作區(Working Directory) -> 版本庫(Repository)(暫存區stage -> master)      

撤銷删除

丢棄工作區的修改:git checkout -- file
撤銷暫存區的修改:git reset HEAD file
删除版本庫檔案:git rm 删掉,并且git commit      

遠端倉庫:

建立SSH Key

ssh-keygen -t rsa -C "[email protected]"
預設值即可
路徑:使用者主目錄/.ssh目錄
github 添加公鑰      

克隆項目:

https協定:git clone https://github.com/mouday/demo.git
ssh協定:git clone [email protected]:mouday/demo.git

指定克隆深度:git clone --depth 1 [email protected]:mouday/demo.git

關聯遠端倉庫:git remote add origin [email protected]:username/gitname.git      

拉取推送

送出到遠端:git push -u origin master
-u參數關聯本地和遠端分支,用于第一次推送

推送master分支到遠端: git push origin master

拉取分支:git pull

檢視遠端分支:git branch -r
拉取遠端分支:git checkout -b 本地分支名x origin/遠端分支名x
拉取遠端分支:git checkout -t origin/branch_name      

分支管理

備注:有修改未 commit 最好不要切換分支

建立與合并分支

檢視分支:git branch
建立分支:git branch <name>
切換分支:git checkout <name>
建立+切換分支:git checkout -b <name>
合并某分支到目前分支:git merge <name>
删除分支:git branch -d <name>
不使用Fast forward模式合并:git merge --no-ff -m "merge with no-ff" dev      

bug分支

存儲目前現場:git stash
檢視:git stash list
恢複現場:git stash apply
删除存儲:git stash drop
恢複并删除:git stash pop

強制删除有被合并過的分支:git branch -D <name>      

多人協作

檢視遠端庫的資訊: git remote
詳細的資訊:git remote -v

建立本地dev分支: git checkout -b dev origin/dev
建立關聯:git branch --set-upstream-to=origin/dev dev

多人協作: 推送 -> 失敗則拉取 -> 解決沖突 -> 本地送出 -> 再推送       

标簽管理

建立标簽

檢視标簽:git tag
設定标簽:git tag <tagname> [commit id]
檢視标簽資訊:git show <tagname>
指定标簽資訊:git tag -a <tagname> -m "blablabla..." [commit id]
用PGP簽名标簽:git tag -s <tagname> -m "blablabla..." [commit id]      

操作标簽

推送一個本地标簽:git push origin <tagname>
推送全部未推送過的本地标簽:git push origin --tags
删除一個本地标簽:git tag -d <tagname>
删除一個遠端标簽:git push origin :refs/tags/<tagname>      

自定義git

忽略特殊檔案

.gitignore   https://github.com/github/gitignore
強制添加:git add -f App.class
檢查規則:git check-ignore -v App.class      

配置别名

git config --global alias.st status

倉庫的Git配置檔案  .git/config
目前使用者的Git配置檔案  使用者主目錄/.gitconfig      

經驗建議

每次送出前記得diff,以免送出錯誤代碼
下班回家前,整理好自己的工作區
并行的項目,使用分支開發
遇到沖突,搞明白原因,不要随意丢棄别人的代碼
産品釋出後,記得打tag,友善将來拉分支修複bug      

git單人工作流

# 本地送出
git status # 檢視本地倉庫的修改狀态
git add # 暫存檔案
git commit # 送出檔案

# 推送到遠端倉庫
git pull
git push origin master

注意,origin:遠端中央倉庫别名。master 推送的分支      

git功能分支工作流

# 第一步,确認master主分支版本
$ git branch   # 檢視分支
$ git checkout master  # 切換到master分支
$ git pull  # 拉取最新master分支

# 第二步,建立feature功能分支
$ git checkout -b feature master  # 建立feature分支

# 第三步,本地送出代碼
$ git status  # 檢視代碼狀态
$ git add .  # 添加到暫存區
$ git commit -m message  # 送出到分支
$ git push -u origin feature
# 推送 feature 分支到中央倉庫(origin)
# -u選項設定本地分支去跟蹤遠端對應的分支
# 設定好跟蹤的分支後,就可以使用git push指令省去指定推送分支的參數

# 第四步,送出合并請求
# GUI界面點選 Pull Requests

# 第五步,接受合并
git checkout master
git pull  # 檢查master分支是否為最新
git pull origin feature  # 合并到本地master分支
git push  # 推送到遠端倉庫

# 其他
$ git merge feature/psy_itjuzi_person             

其他

# 補充送出,不新增送出記錄
$ git commit -m "以防死循環" --amend      

參考:

  1. Git教程 - 廖雪峰
  2. 常用 Git 指令清單 - 阮一峰
  3. 廖老師網站上總結的Git筆記
  4. Git工作流指南

繼續閱讀