參考資料:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
git-分布式版本控制系統(tǒng)
集中式 vs 分布式:
- 集中式
版本庫(kù)集中存放在中央服務(wù)器上;
- 分布式
每一個(gè)人電腦都是完整的版本庫(kù);
優(yōu)勢(shì):1、不必聯(lián)網(wǎng); 2、豐富的分支管理功能
- tips
pwd顯示當(dāng)前所在路徑
ls -ah顯示當(dāng)前目錄下所有文件(包括隱藏文件)
- utf-8
windows自帶的記事本編輯utf-8時(shí),會(huì)自動(dòng)在頭部添加十六進(jìn)制字符;
建議用notepad++代替,并選擇utf-8 without bom格式;
- git只能跟蹤純文本文件的改動(dòng);
圖片、視頻、microsoft的word是二進(jìn)制文件,只能覆蓋修改,不跟蹤每次改動(dòng)情況;
本地使用
安裝
git config --global user.name "Your Name"
git config --global user.email "email@example.com"版本庫(kù)
working directory
repository:stage,master(HEAD指針)
文件狀態(tài):
untracked本地新增
Changes not staged for commit本地修改
stagedadd之后
- 日志查看:
git log查看歷史版本記錄
(git log --pretty=oneline)
(git log -- src/a.vue)
git log --graph查看分支合并圖 (git graph 最左側(cè)的一列為當(dāng)前分支)
git show commit_id -- src/a.vue查看指定版本及文件的修改
git reflog查看未來(lái)版本記錄
git reset --hard commit_idgit reset -- hard ^HEAD恢復(fù)到指定版本
git status查看文件狀態(tài)
git diff查看修改內(nèi)容(對(duì)比工作區(qū)與版本庫(kù)里的分支)
q退出查看
- 新增或恢復(fù)文件
usegit add <file>...to include in what will be committed
usegit rm --cached <file>..to unstage 新增文件后,由暫存區(qū)恢復(fù)到本地
usegit reset HEAD <file>...to unstage 新增或修改文件后,由暫存區(qū)恢復(fù)到本地
usegit checkout -- <file>...to discard changes in working directory
(用版本庫(kù)替換本地文件,恢復(fù)到最近一次add或commit)
- 刪除文件
rm kkk
誤刪:git checkout -- kkk
刪除版本庫(kù):git rm kkk,git commit
遠(yuǎn)程庫(kù)
- 關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù):
在本地項(xiàng)目根目錄下執(zhí)行
git remote add origin git@github.com:myfenni/learngit.git
git remote rm origin - 推送master分支內(nèi)容到遠(yuǎn)程倉(cāng)庫(kù)
git push -u origin master第一次
git push origin master - 提交本地test分支作為遠(yuǎn)程的master分支
git push origin test:master - 提交本地test分支作為遠(yuǎn)程的test分支
git push origin test:test - 刪除遠(yuǎn)程的分支
剛提交到遠(yuǎn)程的test將被刪除,但是本地還會(huì)保存的
git push origin :test - 克隆
git clone
分支管理
- 創(chuàng)建并切換分支
git checkout -b dev
等同于
git branch dev; git checkout dev - 查看本地分支
git branch - 查看遠(yuǎn)程分支
git remote -v - 合并某分支到當(dāng)前分支
git merge dev
usegit merge --abortto abort the merge 停止合并 - 刪除分支
git branch -d dev
分支切換時(shí)對(duì)本地文件的影響
- 本地僅有develop分支,且修改了abc文件未提交時(shí),新建本地master分支并切換到master,adb文件仍存在并處于未提交狀態(tài)
git branch
//develop
git status
//文件a.b,c待add或commit
git checkout -b master
git status
//文件a.b,c待add或commit
git checkout develop
//文件a.b,c待add或commit
git add .
git commit -m 'add'
git status
//devlop分支處于clean狀態(tài),已有adc的修改
git checkout master
//master分支處于clean狀態(tài),仍無(wú)abc的修改
- 本地位于develop分支,同時(shí)有master分支,且修改了abc文件未提交時(shí),切換到master會(huì)失敗并提示:”先提交本地修改再切換分支“
git branch
//develop(位于),master
git status
//文件adc待add,或commit
git checkout master
//提示,先commit本地修改,才能切換分支
git add .
git commit -m 'add'
git status
//devlop分支處于clean狀態(tài),已有adc的修改
git checkout master
git status
//master分支處于clean狀態(tài),仍無(wú)abc的修改