初識 git
Git 是一個免費的開放源碼的 分布式版本控制系統,用于處理從小到大的項目,速度和效率的一切。
Git 易于學習,具有 閃電般快速的性能,占地面積小。它超越了像 Subversion,CVS,Perforce 和 ClearCase 這樣的 SCM 工具,具有易操作的本地分支,便利的分段區域和 多個工作流等功能。
git 命令
git:查看 git 是否安裝成功
git init:創建倉庫
git status:查看當前狀態
git add:添加到暫存區,等待被提交,還沒真正在倉庫
git rm --cached:移除添加的緩存,與 git add 相對應
git commit -m "描述信息":提交到倉庫,并添加描述信息
git log:查看所有產生的 commit 記錄
git branch:查看當前分支情況
git branch -r:查看遠程分支
git branch X:創建 X 分支
git checkout X:切換到 X 分支
git checkout X.XX:撤銷到原來的 X.XX 文件(只對沒有執行 git add 文件有效)
git checkout -b X:創建 X 分支,并且自動切換到 X 分支
git merge X:將 X 分支合并到主分支,前提是先切換到主分支(暴力合并但條理清晰)
git rebase X:將 X 分支合并到主分支,前提是先切換到主分支(進行比較排序合并但條理不清晰)
git branch -d X:刪除 X 分支,前提是已經合并到主分支,否則不能刪除
git branch -D X:強行刪除 X 分支,無論什么情況
git push origin :X:刪除遠程 X 分支
git checkout X origin/X:將遠程 X 分支遷到本地并以 X 命名分支(遠程有 X 分支而本地沒有的情況下)
git checkout -b X origin/X:將遠程 X 分支遷到本地并以 X 命名分支并切換到該分支(遠程有 X 分支而本地沒有的情況下)
git tag:查看歷史 tag 記錄
git tag v1.0:創建 v1.0 標簽
git checkout v1.0:切換到 v1.0 版本狀態
git diff:比較差異(紅色顯示刪除的內容,綠色顯示增加的內容)
git diff <?id2>:比較兩次提交之間的差異
git diff <branch1>..<branch2>:比較兩分支之間的差異
git diff --staged:比較暫存區和版本庫之間的差異
git stash:把當前分支所有沒 commit 得代碼暫存起來
git stash list:查看暫存區記錄
git stash apply:暫存申請還原,繼續上次暫存處
git stash drop:刪除最近一條暫存區記錄
git stash pop:還原上次暫存處并刪除最近一條暫存區記錄(相當于執行 git stash apply + git stash drop)
git stash clear:清空所有暫存區記錄
ssh:查看是否安裝 SSH(一種網絡協議,用于計算機之間加密登陸)
ssh-keygen -t rsa:指定 rsa 算法生成密鑰,接著連續三個回車生成兩個文件 id_rsa 和 id_rsa.pub,id_rsa 是密鑰,id_rsa.pub 是公鑰,兩個文件默認生成目錄:Mac/Linux 系統在:~/.ssh 下,Windows 系統在:/c/Documents and Settings/username/.ssh 下,為隱藏文件
ssh -T git@github.com:測試 SSH key 是否添加成功
git clone git@github.com:github用戶名/倉庫名稱:將遠程 github 倉庫克隆到本地
git push origin master:將本地代碼推到遠程 master 分支,保持代碼同步(push 之前先 pull,避免沖突)
git pull origin master:把遠程 master 分支代碼拉到本地,保持代碼同步(push 之前先 pull,避免沖突)
git remote -v:查看當前項目有哪些遠程倉庫
git config --global user.name "用戶名":設置全局用戶名
git config --global user.email "郵箱":設置全局郵箱
git config --global user.name :查詢全局用戶名
git config --global user.email:查詢全局郵箱
git config user.name "用戶名":設置當前用戶名
git config user.email "郵箱":設置當前郵箱
git config user.name :查詢當前用戶名
git config user.email:查詢當前郵箱
git config --global alias.co commit:給 commit 指令設置全局別名為co(其他指令以此類推)
git config --global alias.psm 'push origin master':給 push origin master 組合指令設置全局別名為 psm(其他組合指令以此類推)
git 設置
git config --global core.editor "vim":設置 editor 使用 vim
git config --global color.ui true:開啟 git 著色
git config --global core.quotepath false:設置顯示中文文件名
團隊合作利器 Git Flow
Git Flow 是一種比較成熟的分支管理流程,比較適合三五個人團隊合作開發項目,是一種多人協作下的分支管理規范。點此查看 Git Flow 安裝使用
工作流程
通過一張圖描述整個工作流程:
各階段名詞解釋
- master:永遠處在即將發布狀態。
- develop:最新開發狀態。
- feature:開發新功能的分支,基于 develop 分支,完成后 merge 回 develop。
- release:準備要發布版本的分支,用來修復 bug,基于 develop,完成后 * * merge 回 develop 和 master。
- hotfix:修復 master 上的問題,等不及 release 版本就必須馬上上線,基于 master,完成后 merge 回 master 和 develop。
相關規范
- git branch feature/A:假設已經有 master 和 develop 兩個分支,需要添加新功能 A,第一步要做的就是基于 develop 新建一個分支 A,規定所有開發的功能都以 feature 為前綴。
- git branch hotfix/B:出現緊急 bug 修復的情況下,立刻切換到 master 分支,然后在此基礎上新建分支 B,代表新建了一個緊急修復分支,修復完成后合并到 develop 和 master,然后發布。
- git branch release/1.0:feature 新功能開發完了,合并回 develop 分支,感覺可以發布到正式環境了,新建一個 release 分支。期間發現 bug 直接修改,直到達到發布標準,最后把該分支合并到 develop 和 master 然后進行發布。
專業名詞解釋
- status:狀態
- cached:貯藏
- stash:暫存
- commit:提交
- checkout:切換
- branch:分支
- diff:差異
- clone:克隆
- push:推
- pull:拉
- origin:原點
- remote:遠程
- global:全局
- conflicts:沖突
吐血推薦
learn-github-from-zero-pdf 是 Android 大神 stormzhang 的良心之作,本篇博客就是閱讀此教程提煉的。希望你看完他的教程能有自己的收獲。
原創不易,請尊重他人的勞動成果,歡迎轉載,但請注明出處。
morninggeng
05/04/2017