git笔记(一)

经常使用命令行

主要命令行

1、设置git客户端的名字邮箱

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

2、工做区和版本库

工做区:电脑上看见的目录或文件
版本库:即文件管理区,在这里进行文件版本管理,.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(横排显示,只留下版本号和提交注释)
  • 版本回退:版本回退的原理实际上是重置HEAD指针指向,将HEAD指向制定commit id就能够将文件版本改成该次提交的版本,同理能够用reset命令取消版本回退。
  • 其中-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 -- 文件名 //撤销该文件名在工做区尚未存入版本库的修改

3、分支操做

分支管理策略:通常在新建的dev分支上干活,分支代码稳定后发布到master主分支上
git通常使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,如今咱们来使用带参数 –no-ff来禁用”Fast forward”模式
一、demo:建立一个dev分支并merge到master的步骤:命令行

  • 建立并切换到分支dev:git checkout -b dev
  • 修改readme.txt内容。
  • 将修改的内容添加到暂存区:git add .git commit -m "提交注释"
  • 切换回主分支(master):git checkout master
  • 合并dev分支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分支

  • git checkout -b feature-new
  • git add hi.txt
  • git commit -m "add feature new"
  • git checkout master
  • git merge --no-ff -m "merged feature-new" feature-new
  • git branch -d feature-new
  • git branch -D feature-new//没合并以前强行删除

4、远程仓库

1.一、SSH验证

不少时候须要将本地仓库传输到远程仓库,常常会须要ssh验证,因此咱们先要建立ssh证书以得到上传到github的权限,即先本地建立证书,将私钥存在本地,公钥存在github上,便可以在传输时验证身份证实本地是被容许传输数据到远端的。

  • 建立ssh证书公钥私钥:
ssh-keygen -t rsa -C "邮箱地址"

运行后,能在C:\Users\.ssh中找到公钥和私钥,公钥存在github,私钥保存在本地

  • GitHub建立ssh keys:

登陆github,打开” settings”中的SSH Keys页面,而后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴id_rsa.pub文件的内容

  • 测试你的ssh-key
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

5、多人协做

从远程仓库克隆时,实际上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

注:

  • git pull 若是push不成功,你的队友已经修改代码,须要先pull下来手动消除冲忽然后再push
  • master分支是主分支,所以要时刻与远程同步;
  • dev分支是开发分支,团队全部成员都须要在上面工做,因此也须要与远程同步;
  • bug分支只用于在本地修复bug,就不必推到远程了,除非老板要看看你每周到底修复了几个bug;
  • feature分支是否推到远程,取决于你是否和你的小伙伴合做在上面开发
  • git checkout -b dev origin/dev建立远程origin的dev分支到本地
相关文章
相关标签/搜索