簡(jiǎn)介
Git是一個(gè)分布式版本控制系統(tǒng)迫淹。它可以很方便的記錄你的每一次變動(dòng)冀值,而不需要每次都備份伟端,還能讓你和他人很方便的協(xié)同開發(fā)。(分布式版本控制系統(tǒng)沒有“中央服務(wù)器”夹厌,版本庫分布在每個(gè)人的電腦里豹爹。)
創(chuàng)建版本庫
- 定位到項(xiàng)目所在的目錄
- 通過
git init
命令把這個(gè)目錄變成Git可以管理的倉庫(即版本庫)
表現(xiàn)形式:在當(dāng)前目錄下隱藏著.git
目錄
文件添加到版本庫(當(dāng)文件有修改時(shí))步驟
- 文件從工作區(qū)添加到暫存區(qū)
用命令git add
告訴Git,把有文件將要提交到倉庫
注意矛纹,可反復(fù)多次使用臂聋,添加多個(gè)文件
git add 文件名
: 把對(duì)該文件的修改添加到暫存區(qū)
git add .
: 把工作區(qū)的所有變化添加到暫存區(qū) - 文件從暫存區(qū)提交到版本庫
用命令git commit
告訴Git,把文件提交到倉庫
git commit -m "此次提交描述"
工作區(qū)或南、暫存區(qū)孩等、版本庫
工作區(qū)(Working Directory): 工作目錄
暫存區(qū)(stage,index): 版本庫里的一個(gè)臨時(shí)存儲(chǔ)的地方(即.git目錄下的index文件)采够。只有在暫存區(qū)的文件才能提交到版本庫肄方。
版本庫(Repository): 保存各種版本(用時(shí)間線的方式)
修改恢復(fù)
- 文件還在工作區(qū),未上傳到暫存區(qū)
$ git checkout -- 文件名
- 文件已添加到暫存區(qū)蹬癌,未提交到版本庫
- 先從暫存區(qū)打回到工作區(qū)
git reset HEAD 文件名
- 再恢復(fù)工作區(qū)
$ git checkout -- 文件名
- 文件已經(jīng)提交到版本庫(可能有多個(gè)版本)
git reset --hard 版本號(hào)
git reset --hard HEAD[~|~~|~前幾個(gè)版本]
查看文件的修改內(nèi)容
git diff
: 工作區(qū)的文件和版本庫的文件作比較权她,列出具體的修改內(nèi)容
查看整個(gè)修改過程狀態(tài)
git status
:查看倉庫的狀態(tài)(修改在工作區(qū),暫存區(qū)還是已經(jīng)提交到版本庫)
查看歷史記錄
git log
:列出之前提交的版本庫歷史記錄(十分詳細(xì))
git log 參數(shù)
:簡(jiǎn)略地列出歷史版本庫
例如:git log --pretty=oneline
: 每條log只顯示一行
刪除文件
- 工作區(qū)刪除文件后冀瓦,把該修改添加到暫存區(qū)
git rm 文件名
- 從暫存區(qū)提交到版本庫
git commit -m "此次提交說明"
如何和GitHub賬號(hào)關(guān)聯(lián)(已有GitHub賬號(hào))
- 創(chuàng)建SSH Key
ssh-keygen -t rsa -C "郵件地址"
- 把SSH Key的公鑰添加到GitHub的Account settings中
添加遠(yuǎn)程庫(已有GitHub遠(yuǎn)程倉庫)
- 現(xiàn)有本地版本庫伴奥,和GitHub遠(yuǎn)程倉庫關(guān)聯(lián)
- 關(guān)聯(lián)遠(yuǎn)程倉庫
git remote add origin git@github.com: GitHub賬戶名/遠(yuǎn)程倉庫名稱.git
遠(yuǎn)程庫的名字就是origin,這是Git默認(rèn)的叫法 - 把本地庫的所有內(nèi)容推送到遠(yuǎn)程庫上
第一次時(shí)git push -u origin master
Git不但會(huì)把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支翼闽,還會(huì)把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來
之后git push origin master
- 先創(chuàng)建遠(yuǎn)程庫拾徙,然后,從遠(yuǎn)程庫克隆感局。(推薦尼啡。這樣就不用手動(dòng)關(guān)聯(lián),已自動(dòng)關(guān)聯(lián))
git clone git@github.com: GitHub賬戶名/遠(yuǎn)程倉庫名稱.git
分支管理
- 查看分支
git branch
- 創(chuàng)建分支
git branch 分支名稱
- 切換到某分支
git checkout 分支名稱
- 創(chuàng)建并切換到該分支
git checkout -b 分支名稱
- 合并分支
先切換到合并后還存在的分支询微,然后輸入merge 分支名稱
- 刪除分支
git branch -d 分支名稱
推送本地修改到遠(yuǎn)程版本庫
git push origin 分支名稱
從遠(yuǎn)程版本庫取回最新版本
- 取回最新版本崖瞭,對(duì)你本地的開發(fā)代碼沒有影響。
git fetch
- 取回遠(yuǎn)程主機(jī)某個(gè)分支的更新撑毛,再與本地的指定分支合并书聚。
git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名>
解決沖突
遇到的場(chǎng)景:當(dāng)另一個(gè)用戶已推送到遠(yuǎn)程版本庫,遠(yuǎn)程版本庫已更新藻雌,當(dāng)你推送修改時(shí)雌续,就會(huì)報(bào)錯(cuò),因?yàn)檫h(yuǎn)程分支比你的本地更新胯杭。
解決方法:
-
git pull
試圖合并 - 如果合并有沖突驯杜,則解決沖突(把沖突的文件修改為正確),并在本地提交
- 沒有沖突或者解決掉沖突后做个,再用
git push origin 分支名稱
推送到遠(yuǎn)程版本庫
標(biāo)簽管理
用于保存里程碑似的版本
- 創(chuàng)建標(biāo)簽
git tag v編號(hào)
如git tag v1.0
- 創(chuàng)建帶有說明的標(biāo)簽
git tag -a v編號(hào) -m "說明" 版本號(hào)
- 推送標(biāo)簽到遠(yuǎn)程
git push origin v編號(hào)
- 推送所有標(biāo)簽到遠(yuǎn)程
git push origin --tags
- 刪除標(biāo)簽
- 標(biāo)簽還未推送到遠(yuǎn)程
git tag -d v編號(hào)
2.標(biāo)簽已經(jīng)推送到遠(yuǎn)程
- 從本地刪除:
git tag -d v編號(hào)
- 從遠(yuǎn)程刪除:
git push origin :refs/tags/v編號(hào)
配置別名
簡(jiǎn)化命令鸽心,用自己熟悉的命令名代替原命令名
git config --global alias.自定義命令名 原命令名