1、Git 是一個分布式版本控制系統(tǒng),保存的是一系列文件快照。文件流轉(zhuǎn)的三個工作區(qū)域:Git的工作目錄,暫存區(qū)域以及本地倉庫。文件的三個狀態(tài): 已修改,已暫存,已提交
實際操作:
在已有ssh情況下,新建倉庫和配置
ssh-keygin -t rsa -C "郵箱"
在github上新建倉庫,關聯(lián)到遠程倉庫
mkdir test
cd test
git init
//添加遠程庫
git remote add origin 倉庫地址
//origin就是遠程庫的名字,這個是git 默認的叫法,也可以改成別的。但是origin這個名字一看就知道是遠程庫
git touch README.md
git add .
git commit -m "提交readme.md"
git pull origin master
git push origin master
提交到暫存區(qū)
add 作用:用于跟蹤未跟蹤的文件;暫存文件;
提交到當前分支
commit作用:提交更新
丟棄工作區(qū)的修改文件
git checkout -- filename
撤銷暫存區(qū)的修改文件
git reset HEAD fielname
回退上次版本
git reset --hard HEAD ^
回退到某一個版本
git reset --hard HEAD 版本號
注:Git中,用HEAD表示當前版本,HEAD^上一個版本
基本的Git工作流程如下:
1、對工作目錄中修改某些文件。
2、對修改后的文件進行快照,然后保存到暫存區(qū)域。
3、提交更新,將保存的暫存區(qū)域文件永久轉(zhuǎn)存到Git目錄中。
分支
commit(提交)對象:包含指向暫存內(nèi)容快照的指針;包含本次提交作者的相關信息等;包含零個或者多個指向該對象的父對象指針;
tree對象:包含工作目錄樹內(nèi)容及包含其中各個文件對應的blob對象索引。
blob對象:包含文件快照內(nèi)容。
HEAD指針: 指向當前所在分支,其實是當前分支的別名。
分支的合并: merge
1.第一種情況

git checkout develop
git checkout -b hotfix
git add -A
git comit -m "xxx"
git checkout develop
git merge hotfix
請注意,合并時出現(xiàn)了“Fast forward”的提示
因為此時master分支的提交對象是將要并入hotfix分支的直接上游,git只是將指針右移。這樣的過程叫做“快進”。
2.第二種情況

請注意,這次的合并是從更早的地方開始分叉的。所以git會以兩個分支末端以及他們共同的祖先進行一次簡單的三方合并計算生成一個文件快照,并創(chuàng)建一個指向它的提交對象。
值得一提的是 Git 可以自己裁決哪個共同祖先才是最佳合并基礎。
遇到?jīng)_突,解決沖突,重新提交。
長期分支:
特性分支:一個特性分支是指一個短期的,用來實現(xiàn)單一特性或與其相關工作的分支
遠程分支:對遠程倉庫中的分支的索引。它們是一些無法移動的本地分支;只有在 Git 進行網(wǎng)絡交互時才會更新。
跟蹤分支:從遠程分支 checkout 出來的本地分支
分支的衍合
把C3里面的補丁在C4的基礎上打一遍。

git co experiment
git rebase master

此時master分支落后了,需要快進合并一次
git co master
git merge experiment
git fetch 和git pull
git fetch origin 來同步遠程服務器上的數(shù)據(jù)到本地。從origin找到服務器,然后從上面獲取你沒尚未更新的數(shù)據(jù),更新到本地,然后移動origin/master到最新位置
git pull 會獲取所有遠程索引,并把它們的數(shù)據(jù)都合并到本地分支中來。
配置別名
git config --global alais.co checkout