Git是什么
Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)
Git的作用
- 分布式版本控制
- 多個(gè)開發(fā)人員協(xié)調(diào)工作
- 有效監(jiān)聽誰做的修改
- 本地及遠(yuǎn)程操作
Git的使用
安裝Git工具后需要先設(shè)置用戶名和密碼
git config --global user.name "Your Name" // 設(shè)置你的名字
git config --global user.email "email@example.com" // 設(shè)置你的郵箱
Git常用命令
git init // 初始化本地git倉庫
git add <file>/. // 添加文件 <file>是指定文件名, .是全部文件,但不包括被.gitgnore忽略的文件
git status // 查看狀態(tài)
git commit -m "備注的內(nèi)容" // 提交
git push origin <name> // 推送到遠(yuǎn)程倉庫 參數(shù):name 分支名字
git pull // 拉取遠(yuǎn)程倉庫的文件
git clone // 克隆遠(yuǎn)程倉庫到本地
git diff // 對比文件的不同
git remote -v // 查看遠(yuǎn)程庫的詳細(xì)信息
git reset --hard // 恢復(fù)版本 參數(shù): HEAD^(恢復(fù)前一版本);HEAD~100(恢復(fù)前100版本);或者是指定版本號
git log // 查看歷史日志 可帶參數(shù): --pretty = oneline (簡單顯示)
git reflog // 查看歷史命令
git branch <name> // 創(chuàng)建名為<name>的分支
git checkout <name> // 切換到分支/主線
git merge <name> // 合并<name>分支到主線
git rm <file> // 刪除版本庫文件
git remote add origin <address> // 連接到遠(yuǎn)程倉庫 參數(shù): address遠(yuǎn)程倉庫地址
SSH密鑰
遠(yuǎn)程庫有兩種方式可以請求,HTTP和SSH
使用SSH的好處在于不用輸入用戶名密碼,而且傳輸速度很快
ssh-keygen -t rsa -C "你創(chuàng)建時(shí)的郵箱" 一直回車
cat ~/.ssh/id_rsa.pub 查看公鑰
獲取到公鑰以后添加到Github/碼云/騰訊云即可使用
Git常用方法
情況一:如果你在提交修改之前發(fā)現(xiàn)編寫的代碼不符合需求,但是大部分代碼已經(jīng)被更改過,撤銷是無法恢復(fù)的,該如何有效的撤銷?
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作區(qū)的修改全部撤銷,這里有兩種情況:
一種是readme.txt自修改后還沒有被放到暫存區(qū),現(xiàn)在,撤銷修改就回到和版本庫一模一樣的狀態(tài);
一種是readme.txt已經(jīng)添加到暫存區(qū)后,又作了修改,現(xiàn)在,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)。

情況二:在執(zhí)行g(shù)it add . 以后發(fā)現(xiàn)代碼有問題,該如何有效的撤銷?
慶幸的是,在commit之前,你發(fā)現(xiàn)了這個(gè)問題。用git status查看一下,修改只是添加到了暫存區(qū),還沒有提交
用命令git reset HEAD <file>可以把暫存區(qū)的修改撤銷掉(unstage),重新放回工作區(qū)
情況三:已經(jīng)提交了不合適的修改到版本庫時(shí),想要撤銷本次提交,參考情況二,退回版本,不過前提是沒有推送到遠(yuǎn)程庫
Git分支的使用
Develop分支(dev分支)
也就是我們常說的生產(chǎn)分支
BUG分支
情況:目前dev分支上的工作未完成,需要立即修改BUG,通過建立新的BUG分支(例如issue-101)來處理和修改
通過git stash將現(xiàn)在的場面存儲(chǔ)起來,然后從需要更改的分支建立新分支(臨時(shí)分支)
可以通過git stash list查看保存
git stash list
stash@{0}: WIP on dev: f52c633 add merge
修改完成以后合并分支,再刪除臨時(shí)分支
git stash list // 查看存儲(chǔ)
git stash apply // 恢復(fù)
git stash drop // 刪除
等同于=> git stash pop
也可以多次stash,恢復(fù)之前先查看要恢復(fù)哪個(gè),在指定
git stash apply stash@{0}
Feature分支
情況:添加一個(gè)新功能時(shí),你肯定不希望因?yàn)橐恍?shí)驗(yàn)性質(zhì)的代碼,把主分支搞亂了,所以,每添加一個(gè)新功能,最好新建一個(gè)feature分支,在上面開發(fā),完成后,合并,最后,刪除該feature分支。
如果要丟棄一個(gè)沒有合并過的分支可以通過
git branch -D <name> // 強(qiáng)行刪除名為<name>的分支
.gitgnore忽略文件
touch .gitgnore // 創(chuàng)建忽略文件(一定要在git終端中使用,不然會(huì)報(bào)錯(cuò))
建議使用notepad++打開.gitgnoer文件,輸入你要忽略的文件,列如xxx.txt(文件) || /node (文件夾)
tag標(biāo)簽
git tag <name> // 創(chuàng)建標(biāo)簽 例如name=v1.0
git tag // 查看標(biāo)簽
創(chuàng)建帶說明的標(biāo)簽
git tag -a v0.1 -m "version 0.1 reseased" 1094adb // 參數(shù): -a 指標(biāo)簽名 -m 值說明文字 1094adb 指標(biāo)簽對應(yīng)的commit Id
如果要推送某個(gè)標(biāo)簽到遠(yuǎn)程,使用命令git push origin <tagname>
git push origin --tags // 一次性推送全部尚未推送到遠(yuǎn)程的本地標(biāo)簽
如果標(biāo)簽已經(jīng)推送到遠(yuǎn)程,要?jiǎng)h除遠(yuǎn)程標(biāo)簽就麻煩一點(diǎn),先從本地刪除:
$ git tag -d v0.9
Deleted tag 'v0.9' (was f52c633)
然后,從遠(yuǎn)程刪除。刪除命令也是push,但是格式如下:
$ git push origin :refs/tags/v0.9
To github.com:michaelliao/learngit.git
- [deleted] v0.9
要看看是否真的從遠(yuǎn)程庫刪除了標(biāo)簽,可以登陸GitHub查看