初識(shí) git
Git 是一個(gè)免費(fèi)的開(kāi)放源碼的 分布式版本控制系統(tǒng),用于處理從小到大的項(xiàng)目,速度和效率的一切。
Git 易于學(xué)習(xí),具有 閃電般快速的性能,占地面積小。它超越了像 Subversion,CVS,Perforce 和 ClearCase 這樣的 SCM 工具,具有易操作的本地分支,便利的分段區(qū)域和 多個(gè)工作流等功能。
git 命令
git:查看 git 是否安裝成功
git init:創(chuàng)建倉(cāng)庫(kù)
git status:查看當(dāng)前狀態(tài)
git add:添加到暫存區(qū),等待被提交,還沒(méi)真正在倉(cāng)庫(kù)
git rm --cached:移除添加的緩存,與 git add 相對(duì)應(yīng)
git commit -m "描述信息":提交到倉(cāng)庫(kù),并添加描述信息
git log:查看所有產(chǎn)生的 commit 記錄
git branch:查看當(dāng)前分支情況
git branch -r:查看遠(yuǎn)程分支
git branch X:創(chuàng)建 X 分支
git checkout X:切換到 X 分支
git checkout X.XX:撤銷(xiāo)到原來(lái)的 X.XX 文件(只對(duì)沒(méi)有執(zhí)行 git add 文件有效)
git checkout -b X:創(chuàng)建 X 分支,并且自動(dòng)切換到 X 分支
git merge X:將 X 分支合并到主分支,前提是先切換到主分支(暴力合并但條理清晰)
git rebase X:將 X 分支合并到主分支,前提是先切換到主分支(進(jìn)行比較排序合并但條理不清晰)
git branch -d X:刪除 X 分支,前提是已經(jīng)合并到主分支,否則不能刪除
git branch -D X:強(qiáng)行刪除 X 分支,無(wú)論什么情況
git push origin :X:刪除遠(yuǎn)程 X 分支
git checkout X origin/X:將遠(yuǎn)程 X 分支遷到本地并以 X 命名分支(遠(yuǎn)程有 X 分支而本地沒(méi)有的情況下)
git checkout -b X origin/X:將遠(yuǎn)程 X 分支遷到本地并以 X 命名分支并切換到該分支(遠(yuǎn)程有 X 分支而本地沒(méi)有的情況下)
git tag:查看歷史 tag 記錄
git tag v1.0:創(chuàng)建 v1.0 標(biāo)簽
git checkout v1.0:切換到 v1.0 版本狀態(tài)
git diff:比較差異(紅色顯示刪除的內(nèi)容,綠色顯示增加的內(nèi)容)
git diff <?id2>:比較兩次提交之間的差異
git diff <branch1>..<branch2>:比較兩分支之間的差異
git diff --staged:比較暫存區(qū)和版本庫(kù)之間的差異
git stash:把當(dāng)前分支所有沒(méi) commit 得代碼暫存起來(lái)
git stash list:查看暫存區(qū)記錄
git stash apply:暫存申請(qǐng)還原,繼續(xù)上次暫存處
git stash drop:刪除最近一條暫存區(qū)記錄
git stash pop:還原上次暫存處并刪除最近一條暫存區(qū)記錄(相當(dāng)于執(zhí)行 git stash apply + git stash drop)
git stash clear:清空所有暫存區(qū)記錄
ssh:查看是否安裝 SSH(一種網(wǎng)絡(luò)協(xié)議,用于計(jì)算機(jī)之間加密登陸)
ssh-keygen -t rsa:指定 rsa 算法生成密鑰,接著連續(xù)三個(gè)回車(chē)生成兩個(gè)文件 id_rsa 和 id_rsa.pub,id_rsa 是密鑰,id_rsa.pub 是公鑰,兩個(gè)文件默認(rèn)生成目錄:Mac/Linux 系統(tǒng)在:~/.ssh 下,Windows 系統(tǒng)在:/c/Documents and Settings/username/.ssh 下,為隱藏文件
ssh -T git@github.com:測(cè)試 SSH key 是否添加成功
git clone git@github.com:github用戶(hù)名/倉(cāng)庫(kù)名稱(chēng):將遠(yuǎn)程 github 倉(cāng)庫(kù)克隆到本地
git push origin master:將本地代碼推到遠(yuǎn)程 master 分支,保持代碼同步(push 之前先 pull,避免沖突)
git pull origin master:把遠(yuǎn)程 master 分支代碼拉到本地,保持代碼同步(push 之前先 pull,避免沖突)
git remote -v:查看當(dāng)前項(xiàng)目有哪些遠(yuǎn)程倉(cāng)庫(kù)
git config --global user.name "用戶(hù)名":設(shè)置全局用戶(hù)名
git config --global user.email "郵箱":設(shè)置全局郵箱
git config --global user.name :查詢(xún)?nèi)钟脩?hù)名
git config --global user.email:查詢(xún)?nèi)粥]箱
git config user.name "用戶(hù)名":設(shè)置當(dāng)前用戶(hù)名
git config user.email "郵箱":設(shè)置當(dāng)前郵箱
git config user.name :查詢(xún)當(dāng)前用戶(hù)名
git config user.email:查詢(xún)當(dāng)前郵箱
git config --global alias.co commit:給 commit 指令設(shè)置全局別名為co(其他指令以此類(lèi)推)
git config --global alias.psm 'push origin master':給 push origin master 組合指令設(shè)置全局別名為 psm(其他組合指令以此類(lèi)推)
git 設(shè)置
git config --global core.editor "vim":設(shè)置 editor 使用 vim
git config --global color.ui true:開(kāi)啟 git 著色
git config --global core.quotepath false:設(shè)置顯示中文文件名
團(tuán)隊(duì)合作利器 Git Flow
Git Flow 是一種比較成熟的分支管理流程,比較適合三五個(gè)人團(tuán)隊(duì)合作開(kāi)發(fā)項(xiàng)目,是一種多人協(xié)作下的分支管理規(guī)范。點(diǎn)此查看 Git Flow 安裝使用
工作流程
通過(guò)一張圖描述整個(gè)工作流程:

各階段名詞解釋
- master:永遠(yuǎn)處在即將發(fā)布狀態(tài)。
- develop:最新開(kāi)發(fā)狀態(tài)。
- feature:開(kāi)發(fā)新功能的分支,基于 develop 分支,完成后 merge 回 develop。
- release:準(zhǔn)備要發(fā)布版本的分支,用來(lái)修復(fù) bug,基于 develop,完成后 * * merge 回 develop 和 master。
- hotfix:修復(fù) master 上的問(wèn)題,等不及 release 版本就必須馬上上線(xiàn),基于 master,完成后 merge 回 master 和 develop。
相關(guān)規(guī)范
- git branch feature/A:假設(shè)已經(jīng)有 master 和 develop 兩個(gè)分支,需要添加新功能 A,第一步要做的就是基于 develop 新建一個(gè)分支 A,規(guī)定所有開(kāi)發(fā)的功能都以 feature 為前綴。
- git branch hotfix/B:出現(xiàn)緊急 bug 修復(fù)的情況下,立刻切換到 master 分支,然后在此基礎(chǔ)上新建分支 B,代表新建了一個(gè)緊急修復(fù)分支,修復(fù)完成后合并到 develop 和 master,然后發(fā)布。
- git branch release/1.0:feature 新功能開(kāi)發(fā)完了,合并回 develop 分支,感覺(jué)可以發(fā)布到正式環(huán)境了,新建一個(gè) release 分支。期間發(fā)現(xiàn) bug 直接修改,直到達(dá)到發(fā)布標(biāo)準(zhǔn),最后把該分支合并到 develop 和 master 然后進(jìn)行發(fā)布。
專(zhuān)業(yè)名詞解釋
- status:狀態(tài)
- cached:貯藏
- stash:暫存
- commit:提交
- checkout:切換
- branch:分支
- diff:差異
- clone:克隆
- push:推
- pull:拉
- origin:原點(diǎn)
- remote:遠(yuǎn)程
- global:全局
- conflicts:沖突
吐血推薦
learn-github-from-zero-pdf 是 Android 大神 stormzhang 的良心之作,本篇博客就是閱讀此教程提煉的。希望你看完他的教程能有自己的收獲。
原創(chuàng)不易,請(qǐng)尊重他人的勞動(dòng)成果,歡迎轉(zhuǎn)載,但請(qǐng)注明出處。
morninggeng
05/04/2017