Git 基礎
- 作者:DecaMinCow
- 博客:http://blog.csdn.net/m0_37567301
- 郵箱:decamincow#gmail.com (#->@)
git 特點
-
快速:幾乎所有操作都在本地運行
-
分佈式:每個 clone 都是完整的生命週期副本
-
工作區、暫存區(stage)、倉庫
場景教學
-
普通青年
# 克隆代碼到本地 git clone http://xxx/test-git && cd test-git # 創建文件 touch README.md && echo "hello world"> README.md # 添加創建文件到暫存區 git add README.md # 提交代碼到本地倉庫 git commit -m"xxx" README.md # 拉取遠程代碼 git pull # 推送代碼到遠程 git push
-
文藝青年
# 拉取代碼 git pull # 創建 feature 分支 git checkout -b feature/xxx # 查看分支,確定在新建的分支下 git branch # 修改內容 vim README.md # 查看狀態 git status # 開發一半需要臨時切換到 master 分支做一些事情,並且不想提交到本地倉庫, 工作區代碼暫存 git stash # 切換到 master 分支 git checkout master # 處理完事情後切回 feature/xxx 分支繼續開發 git checkout feature/xxx # 查看暫存區(stash)所有內容 git stash list # 暫存區(stash)內容釋放到工作區 git stash apply stash@{0} # 刪除暫存區(stash)內容 git stash drop stash@{0} # 繼續開發,查看工作區和暫存區(stage)區別 git diff # 確認後提交代碼 git commit -m"xxx" -a # 切換到 master 分支合併代碼 git checkout master git merge feature/xxx # 拉取代碼,提交代碼 git pull git push # 刪除分支 git branch -D feature/xxx
-
搞事青年
# 拉取代碼 git pull # 創建 feature 分支 git checkout -b feature/xxx # 文件太多了耽誤事,先刪除幾個再說 git rm -rf . # 添加文件修改代碼 touch My.class && echo "myfunc"> My.class # 切換到 master 進行合併, 並提交代碼 git checkout master git merge feature/xxx git pull git push # 發現文件被刪了,版本回退 git reflog git reset --hard <commit id> # 強制推送到遠程倉庫--萬不得已不要使用 git push -f
git flow
-
應用創建
- 項目管理員創建應用倉庫
- 創建 master 分支
- 基於 master 分支開闢 develop 分支
-
開發迭代
- 開發工程師基於 develop 分支開闢 feature/A、feature/B 等等,發佈 development 環境進行自測
- 開發工程師合併所有 feature 分支到 develop 分支,發佈 test 環境 冒煙測試
- 如果測試有 bug,迭代上面兩步,直到冒煙測試通過,然後提交測試
-
測試集成
- 測試工程師人員基於開發工程師提測的 develop 分支在 test 環境進行集成測試
- 開發工程師從 develop 分支開闢 feature 分支修復測試工程師發現的 bug,自測後合併入 develop 分支公測試工程師繼續測試
- 迭代上面兩步直到集成測試通過,然後開闢 release 分支提交發布
-
預發驗證
- 測試工程師將 release 分支部署 staging 環境進行迴歸驗證
- 開發工程師在 release 分支修復測試工程師發現的 bug,直到迴歸測試通過
- 開發工程師將 release 分支上的修復合併回 develop 分支,同時將 release 分支合併 master 分支
-
生產上線
- 運維工程師將 master 分支發佈到 production 環境,測試工程師線上環境進行功能驗證
- 開發工程師基於 master 分支開闢 hotfix 分支修復測試工程師發現的 bug
- 測試工程師將 hotfix 分支部署 staging 環境進行 bugfix 驗證,直到驗證通過
- 開發將 hotfix 分支合併 master 和 develop 分支
- 迭代上面四步直到線上版本發佈通過,基於 master 分支開闢 tag 記錄版本
基本命令
-
本地新建分支
git checkout -b <branch>
-
查看本地分支列表
git branch
-
切換分支
git checkout <branch>
-
工作區代碼恢復到本地版本倉庫
git checkout <file>
-
刪除分支
git branch -D <branch>
-
查看本地代碼狀態
git status
-
新加文件
git add <file>
-
刪除文件
git rm <file>
-
刪除文件夾
git rm -rf <folder>
-
提交到本地代碼倉庫
git commit -m <message>
-
拉取代碼到本地
git pull origin <branch>
-
提交代碼到遠程
git push origin <branch>
-
強制提交代碼到遠程
git push -f origin <branch>
-
在當前把其它分支合並過來
git merge <branch>
-
查看 git 提交歷史
git log git log --pretty=oneline git reflog
-
回退到歷史
git reset --hard <commit_id>
-
防止本地自己環境或者配置提交修改 .gitignore
vim .gitignore