1漱挚、Git 是一個(gè)分布式版本控制系統(tǒng)翔烁,保存的是一系列文件快照。文件流轉(zhuǎn)的三個(gè)工作區(qū)域:Git的工作目錄旨涝,暫存區(qū)域以及本地倉(cāng)庫(kù)蹬屹。文件的三個(gè)狀態(tài): 已修改,已暫存白华,已提交
實(shí)際操作:
在已有ssh情況下慨默,新建倉(cāng)庫(kù)和配置
ssh-keygin -t rsa -C "郵箱"
在github上新建倉(cāng)庫(kù),關(guān)聯(lián)到遠(yuǎn)程倉(cāng)庫(kù)
mkdir test
cd test
git init
//添加遠(yuǎn)程庫(kù)
git remote add origin 倉(cāng)庫(kù)地址
//origin就是遠(yuǎn)程庫(kù)的名字弧腥,這個(gè)是git 默認(rèn)的叫法厦取,也可以改成別的。但是origin這個(gè)名字一看就知道是遠(yuǎn)程庫(kù)
git touch README.md
git add .
git commit -m "提交readme.md"
git pull origin master
git push origin master
提交到暫存區(qū)
add 作用:用于跟蹤未跟蹤的文件管搪;暫存文件;
提交到當(dāng)前分支
commit作用:提交更新
丟棄工作區(qū)的修改文件
git checkout -- filename
撤銷暫存區(qū)的修改文件
git reset HEAD fielname
回退上次版本
git reset --hard HEAD ^
回退到某一個(gè)版本
git reset --hard HEAD 版本號(hào)
注:Git中虾攻,用HEAD表示當(dāng)前版本,HEAD^上一個(gè)版本
基本的Git工作流程如下:
1更鲁、對(duì)工作目錄中修改某些文件霎箍。
2、對(duì)修改后的文件進(jìn)行快照澡为,然后保存到暫存區(qū)域漂坏。
3、提交更新,將保存的暫存區(qū)域文件永久轉(zhuǎn)存到Git目錄中顶别。
分支
commit(提交)對(duì)象:包含指向暫存內(nèi)容快照的指針谷徙;包含本次提交作者的相關(guān)信息等;包含零個(gè)或者多個(gè)指向該對(duì)象的父對(duì)象指針筋夏;
tree對(duì)象:包含工作目錄樹內(nèi)容及包含其中各個(gè)文件對(duì)應(yīng)的blob對(duì)象索引蒂胞。
blob對(duì)象:包含文件快照內(nèi)容。
HEAD指針: 指向當(dāng)前所在分支条篷,其實(shí)是當(dāng)前分支的別名骗随。
分支的合并: merge
1.第一種情況
git checkout develop
git checkout -b hotfix
git add -A
git comit -m "xxx"
git checkout develop
git merge hotfix
請(qǐng)注意,合并時(shí)出現(xiàn)了“Fast forward”的提示
因?yàn)榇藭r(shí)master分支的提交對(duì)象是將要并入hotfix分支的直接上游赴叹,git只是將指針右移鸿染。這樣的過(guò)程叫做“快進(jìn)”。
2.第二種情況
請(qǐng)注意乞巧,這次的合并是從更早的地方開始分叉的涨椒。所以git會(huì)以兩個(gè)分支末端以及他們共同的祖先進(jìn)行一次簡(jiǎn)單的三方合并計(jì)算生成一個(gè)文件快照,并創(chuàng)建一個(gè)指向它的提交對(duì)象绽媒。
值得一提的是 Git 可以自己裁決哪個(gè)共同祖先才是最佳合并基礎(chǔ)蚕冬。
遇到?jīng)_突,解決沖突是辕,重新提交囤热。
長(zhǎng)期分支:
特性分支:一個(gè)特性分支是指一個(gè)短期的,用來(lái)實(shí)現(xiàn)單一特性或與其相關(guān)工作的分支
遠(yuǎn)程分支:對(duì)遠(yuǎn)程倉(cāng)庫(kù)中的分支的索引获三。它們是一些無(wú)法移動(dòng)的本地分支旁蔼;只有在 Git 進(jìn)行網(wǎng)絡(luò)交互時(shí)才會(huì)更新。
跟蹤分支:從遠(yuǎn)程分支 checkout 出來(lái)的本地分支
分支的衍合
把C3里面的補(bǔ)丁在C4的基礎(chǔ)上打一遍疙教。
git co experiment
git rebase master
此時(shí)master分支落后了棺聊,需要快進(jìn)合并一次
git co master
git merge experiment
git fetch 和git pull
git fetch origin 來(lái)同步遠(yuǎn)程服務(wù)器上的數(shù)據(jù)到本地。從origin找到服務(wù)器贞谓,然后從上面獲取你沒尚未更新的數(shù)據(jù)限佩,更新到本地,然后移動(dòng)origin/master到最新位置
git pull 會(huì)獲取所有遠(yuǎn)程索引裸弦,并把它們的數(shù)據(jù)都合并到本地分支中來(lái)祟同。
配置別名
git config --global alais.co checkout