user.name和user.email是git客戶端的兩個變量,簡而言之就是記錄每次本地文件commit的是誰作的,GitHub是經過郵箱來記錄貢獻的,通常能夠用如下命令行進行全局配置,若是你會用不一樣身份在不一樣項目上進行提交,則能夠不加 -g
進行本地配置git
git config -g user.name "name" git config -g user.email "email@mail.com"
運行了以上命令行後,.git文件夾裏的config文件會多一個關於user的配置,即name 和 emailgithub
[user] name = 你的name email = 你的email
工做區:電腦上看見的目錄或文件
版本庫:即文件管理區,在這裏進行文件版本管理,.git目錄爲其配置文件(其中有stage暫存區,git爲咱們建立的第一分支master,指向master的指針HEAD)app
一、建立倉庫並提到版本庫ssh
git init //把這個目錄變成git能夠管理的倉庫 git add hi.txt //添加到工做區 git commit -m //提交到本地版本庫(暫存區)
二、版本回退
版本回退能夠先查看提交的版本號,而後回退到該版本號指定的版本測試
查看提交和回退信息:fetch
git reflog //查看全部分支的提交和回退信息 git log //查看因此分支的提交信息,--pretty=oneline(橫排顯示,只留下版本號和提交註釋)
其中-hard撤銷工做區,暫存區,本地倉庫的內容到指定節點,-soft只撤銷本地倉庫,工做區和暫存區不變。url
git reset –hard HEAD^ //回退上一個版本 git reset –hard HEAD^^ //回退上上個版本 git reset –hard HEAD~100 //回退前一百個版本 git reset -hard 版本號 //回退到指定版本號 git reset –soft HEAD^ //回退上一個版本 git reset –soft HEAD^^ //回退上上個版本 git reset –soft HEAD~100 //回退前一百個版本 git reset -soft 版本號 //回退到指定版本號
三、撤銷工做區修改
放棄某文件在工做區的修改,恢復爲上一次添加到版本庫的版本spa
git checkout -- 文件名 //撤銷該文件名在工做區尚未存入版本庫的修改
分支管理策略:通常在新建的dev分支上幹活,分支代碼穩定後發佈到master主分支上
git通常使用」Fast forward」模式,在這種模式下,刪除分支後,會丟掉分支信息,如今咱們來使用帶參數 –no-ff
來禁用」Fast forward」模式
一、demo:建立一個dev分支並merge到master的步驟:命令行
git checkout -b dev
git add .
和git commit -m "提交註釋"
git checkout master
。git merge --no-ff -m "註釋" dev
經常使用命令行:指針
git checkout -b dev //建立+切換分支dev git checkout dev //切換分支 git branch dev //建立分支 git branch -d dev //刪除分支 git branch //查看分支,會列出全部的分支,當前分支前面會添加一個星號 git merge dev //將dev分支合併到當前分支 git merge --no-ff -m "合併註釋" 分支名 git log //查看分支合併狀況
二、demo:建立一個修復bug的分支
git stash 把當前工做現場「儲藏」起來
git checkout master 切換到須要修復bug的分支
git checkout -b issue-101 建立臨時分支,修復bug101,提交
git add readme.txt
git commit -m "fix bug 101"
git checkout master返回分支,合併bug修復分支,刪除bug修復分支
git merge --no-ff -m "merged bug fix 101" issue-101
git branch -d issue-101
git checkout dev返回工做的分支
git status 工做區是乾淨的
git stash list 查看隱藏的列表
恢復隱藏內容:
git stash apply 恢復
git stash drop 刪除
git stash pop 恢復並刪除
git stash apply stash@{0} 屢次隱藏,恢復指定stash
三、demo:建立一個添加新功能的feature分支
每添加一個新功能,最好新建一個feature分支,在上面開發,完成後,合併,最後,刪除該feature分支
1.一、SSH驗證
不少時候須要將本地倉庫傳輸到遠程倉庫,常常會須要ssh驗證,因此咱們先要建立ssh證書以得到上傳到github的權限,即先本地建立證書,將私鑰存在本地,公鑰存在github上,便可以在傳輸時驗證身份證實本地是被容許傳輸數據到遠端的。
ssh-keygen -t rsa -C "郵箱地址"
運行後,能在C:\Users\.ssh
中找到公鑰和私鑰,公鑰存在github,私鑰保存在本地
登陸github,打開」 settings」中的SSH Keys頁面,而後點擊「Add SSH Key」,填上任意title,在Key文本框裏黏貼id_rsa.pub文件的內容
ssh -T git@github.com //測試你的ssh-key
1.二、繞開ssh驗證
若是咱們用的https而不是git開頭的遠端路徑,會出現沒有權限的狀況,能夠用如下命令行繞開ssl驗證,而後每次push須要輸入用戶名密碼便可
git config --global http.sslVerify false
也能夠在config文件的url中添加用戶名密碼。
二、本地倉庫和GitHub倉庫創建鏈接
git remote add origin git@github.com:地址.git
三、本地分支與GitHub倉庫的分支創建鏈接
推送master分支時,加上了 –u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在之後的推送或者拉取時就能夠簡化命令:git push origin master
git branch --set-upstream dev origin/dev //本地dev與遠程倉庫dev創建鏈接 git push -u origin master //本地master和遠端master創建鏈接且上傳
四、本地分支推送到遠程倉庫分支
git push origin master
五、克隆遠程倉庫
git clone git@github.com:地址 //在須要克隆庫的文件夾下執行
六、若是遠程倉庫有變化須要先pull
git pull <遠程主機名> <遠程分支名>:<本地分支名> git pull origin master:brantest //將遠程主機origin的master分支拉取過來,與本地的brantest分支合併。 git pull origin master //其中冒號後面的能夠省略,表示將遠程origin主機的master分支拉取過來和本地的當前分支進行合併 git fetch origin master:brantest //其上命令行等同於用fetch和merge git merge brantest
從遠程倉庫克隆時,實際上Git自動把本地的master分支和遠程的master分支對應起來了,而且,遠程倉庫的默認名稱是origin
經常使用命令行:
git remote add origin git@github.com:地址.git \\添加遠程庫 git remote \\查看遠程庫信息 git remote -v \\顯示更詳細的信息,顯示了能夠抓取和推送的origin的地址 git push origin master(分支名)\\本地分支master推送到對應的遠程分支上去 git push origin dev
注: