分布式
分布式版本控制系統(tǒng)沒有“中央服務(wù)器”,每個人都有一個完整的版本庫猛拴,不必聯(lián)網(wǎng)使用瘟忱,即使個人的版本損壞,從別人哪里copy一份即可手销。
Git常用命令
- 識別用戶
git config --user.name LADYHR
git config --user.email ladyhr@outlook.com
- 創(chuàng)建版本庫
git init
- 顯示隱藏文件夾
ls -ah
- 添加文件
git add readme.txt
- 提交文件到倉庫
git commit -m "wrote a readme file"
- 查看git狀態(tài)
git status
- 查看git變動的地方(工作區(qū)和暫存區(qū)的區(qū)別)
git diff
- 查看歷史記錄
git log
git log --pretty=oneline
- 版本回退
git reset --hard HEAD^
#回退到上個版本
git reset --hard HEAD^^
#回退到上上個版本
git reset --hard HEAD~100
#回退到100個之前的版本 - 查看txt文件內(nèi)容
cat readme.txt
- 查看命令歷史
git reflog
- 查看工作區(qū)和版本庫最新版本的區(qū)別
git diff HEAD -- readme.txt
-查看暫存區(qū)和版本庫的區(qū)別
git diff -- cached
- 撤銷工作區(qū)的修改
git checkout -- readme.txt
- 撤銷暫存區(qū)的修改
git reset HEAD readme.txt
- 刪除文件
rm test.txt
git rm test.txt
Git為什么要用Markdown格式寫readme
因為所有的版本控制系統(tǒng)都只能跟蹤文本文件的改動脚草,比如:TXT、網(wǎng)頁原献、代碼馏慨,而圖片、視頻姑隅、word都為二進制文件写隶,無法跟蹤變動〗惭觯可使用Notepad++編輯文本文件慕趴。
Git的版本回退原理
Git內(nèi)部有一個指向當前版本的指針HEAD,版本回退只是改變了指針的位置鄙陡,順便更新工作區(qū)的文件冕房。
Git添加遠程庫
- 在使用的某臺電腦上添加SSH key
- Git bash
ssh-keygen -t rsa -C ladyhr@outlook.com
- 復制id_rsa.pub文件的內(nèi)容,登錄GitHub添加SSH key
- 測試鏈接是否正常
ssh -T git@github.com
- GitHub上建立新的倉庫LearnGit趁矾,并把本地倉庫與之關(guān)聯(lián)
在本地倉庫下運行命令:
git remote add origin git@github.com:LADYHR/LearnGit.git
- 推送本地庫到遠程
第一次:git push -u origin master
之后:git push origin master
從遠程庫克隆
- GitHub上創(chuàng)建倉庫
- 先
cd LADYHR
git clone git@github.com:LADYHR/GitSkills.git
GitHub的地址也可以用https://github.com/LADYHR/GitSkills.git
創(chuàng)建合并分支
- 創(chuàng)建分支
git branch dev
- 切換分支
git checkout dev
- 創(chuàng)建并切換分支
git chekout -b dev
- 查看現(xiàn)有分支
git branch
...add耙册、commit... - 合并某分支到當前分支
git merge dev
- 不使用Fast Foward進行合并(可在歷史信息中看到曾經(jīng)做過分支合并)
git merge --no-ff -m "merge with no-ff" dev
- 刪除合并過的分支
git branch -d dev
- 刪除未經(jīng)合并的分支
git branch -D dev2
解決沖突
當兩個分支有沖突時需要手動改正,重新add毫捣、commit完成合并详拙。
查看分支合并情況git log --graph --pretty=oneline --abbrev-commit
修復bug
通過創(chuàng)建新的bug分支來修復bug,然后合并并刪除分支蔓同。當手頭工作沒有完成時通過
git stash
命令來對工作現(xiàn)場進行存儲饶辙,修復bug之后再通過
git stash pop
命令還原工作現(xiàn)場繼續(xù)完成工作。
多人協(xié)作
只有主分支master和共同開發(fā)的分支dev需要與遠程同步斑粱,其他弃揽,例如:bug分支、feature分支都不需要與遠程同步。
- 查看遠程庫信息
git remote -v
- 在本地創(chuàng)建和遠程分支對應的分支
git checkout -b dev origin/dev
- 創(chuàng)建本地分支和遠程分支的鏈接關(guān)系
git branch --set-upstream dev origin/dev
- 推送本地分支到遠程分支
git push origin master/dev
- 抓取遠程分支到本地進行合并矿微,若有沖突需要先處理
git pull
標簽
- 創(chuàng)建標簽
git tag v1.0
默認為HEAD痕慢,可以指定commit idgit tag v0.9 <commit id>
- 指定標簽信息
git tag -a v0.8 -m "version 0.8 released"
- 推送本地標簽到遠程
git push origin v1.0
或推送所有標簽git push origin --tags
- 刪除標簽
git tag -d v1.0
- 刪除遠程標簽
先刪除本地標簽,再git push origin :refs/tags/v0.9
使用GitHub
- Fork任意開源倉庫
- clone到本地進行修改
- 將修改后的文件push到GitHub
- 推送pull request對官方庫貢獻代碼