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
注: