git笔记(一)

常用命令行

《git笔记(一)》

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

user.name和user.email是git客户端的两个变量,简而言之就是记录每次本地文件commit的是谁做的,GitHub是通过邮箱来记录贡献的,一般可以用以下命令行进行全局配置,如果你会用不同身份在不同项目上进行提交,则可以不加 -g 进行本地配置

git config -g user.name "name"
git config -g user.email "email@mail.com"

运行了以上命令行后,.git文件夹里的config文件会多一个关于user的配置,即name 和 email

[user]
    name = 你的name
    email = 你的email

二、工作区和版本库

工作区:电脑上看见的目录或文件
版本库:即文件管理区,在这里进行文件版本管理,.git目录为其配置文件(其中有stage暂存区,git为我们创建的第一分支master,指向master的指针HEAD)

1、创建仓库并提到版本库

git init //把这个目录变成git可以管理的仓库
git add hi.txt //添加到工作区
git commit -m //提交到本地版本库(暂存区)

2、版本回退
版本回退可以先查看提交的版本号,然后回退到该版本号指定的版本

  • 查看提交和回退信息:

    git reflog  //查看所有分支的提交和回退信息
    git log //查看所以分支的提交信息,--pretty=oneline(横排显示,只留下版本号和提交注释)
    
  • 版本回退:版本回退的原理其实是重置HEAD指针指向,将HEAD指向制定commit id就可以将文件版本改为该次提交的版本,同理可以用reset命令取消版本回退。
  • 其中-hard撤销工作区,暂存区,本地仓库的内容到指定节点,-soft只撤销本地仓库,工作区和暂存区不变。

    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 版本号 //回退到指定版本号
    
    

3、撤销工作区修改
放弃某文件在工作区的修改,恢复为上一次添加到版本库的版本

git checkout -- 文件名 //撤销该文件名在工作区还没有存入版本库的修改

三、分支操作

分支管理策略:一般在新建的dev分支上干活,分支代码稳定后发布到master主分支上
git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式
1、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 //查看分支合并情况

2、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

3、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//没合并之前强行删除

四、远程仓库

1.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.2、绕开ssh验证

如果我们用的https而不是git开头的远端路径,会出现没有权限的情况,可以用以下命令行绕开ssl验证,然后每次push需要输入用户名密码即可

git config --global http.sslVerify false 

也可以在config文件的url中添加用户名密码。

2、本地仓库和GitHub仓库建立连接

git remote add origin git@github.com:地址.git

3、本地分支与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建立连接且上传

4、本地分支推送到远程仓库分支

git push origin master

5、克隆远程仓库

git clone git@github.com:地址 //在需要克隆库的文件夹下执行

6、如果远程仓库有变化需要先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

注:

  • git pull 如果push不成功,你的队友已经修改代码,需要先pull下来手动消除冲突然后再push
  • master分支是主分支,因此要时刻与远程同步;
  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
  • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
  • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发
  • git checkout -b dev origin/dev创建远程origin的dev分支到本地
    原文作者:yichair
    原文地址: https://segmentfault.com/a/1190000014830491
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞