git 使用

git

git ssh配置

  • windows下的配置:
    • 下载git bash
    • ssh-keygen -t rsa -C "gitlab邮箱地址:”
    • cd ssh
    • 把rsa.pub 复制内容到gitlab的settings的ssh里面
    • git@gitlab.com:a376230095/aaa.git
  • linux下的配置:
    • ssh-keygen -t rsa -C "gitlab邮箱地址:”
    • cd ssh
    • 把rsa.pub 复制内容到github的settings的ssh里面

 

git前置条件的配置

  • 配置提交用户的名称
    • git config --global user.name “gitlab用户名”
    • git config --global user.email "gitlab邮箱地址”
  • 如果没有git项目
    • git clone git@gitlab.com:a376230095/aaa.git
    • 会生成aaa的git项目,并自动同步到远程仓库
  • 如果是自己新建一个git项目
    • git init 会在当前的目录生成git项目
    • 在gitlab中新建一个空的项目,一定要是空的,获取这个项目的ssh的链接
    • git remote add origin git@gitlab.com:a376230095/aaa.git
    • git push -u origin master 这里就是把git的分支提交到master里面,才算是真正的同步

 

git工作原理

  • 工作区workspace
    • 项目文件所在的文件夹里,统称为工作区。
  • 暂存区stage
    • 用来保存要提交到本地版本库的所有文件,相当于一个缓存区。
  • 版本库repository
    • —个简单的数据库,包含所有用来维护和管理的项目的修订版本和历史的信息。
    • 分为两部分:
      • 本地仓库local
      • 远程仓库remote
  • 不同分区的工作与命令的结合
    • git add会把工作区的文件放到暂存区
    • git commit 会把暂存区的文件放到本地版本库
    • git push 把本地版本库放到远程版本库
    • git pull会把远程仓库放到工作区中
    • git clone/fetch会把远程仓库放到本地仓库
    • git checkout可以把本地仓库的内容放到工作区中

 

开发测试的流程:

  • master作为主分支,一般都是要经过测试通过才拉到master分支上
  • 开发的时候先把项目拉到develop分支上,每一个开发对各自负责的功能,再把分支弄到各自的feature分支上
  • 代码管理者把开发者开发完的分支弄到develop上,等测试把代码的功能测试完成后,就会弄到release分支上
  • 大家一起评估这个release版本是否可以上线,可以就弄到master分支上

 

git clone和git pull的区别

  • clone是本地没有repository时,将远程repository整个下载过来。
  • pull是本地有repository时,将远程repository里新的commit数据(如有的话)下载过来,并且与本地代码merge。相当于git fetch和git merge

 

git命令解析

  • git init 创建一个新的git项目
  • git add 添加文件到暂存区
    • git add . 添加当前路径的所有文件
    • git add -A 添加所有目录的文件
  • git staus 查看工作区和暂存区等的状态
  • git commit -m ‘提交的原因’ 会把暂存区的文件放到本地版本库
  • git log 查看历史的提交记录,但如果当前版本比较久,无法查看后面版本的提交记录
  • git reflog 查看现在,未来,以前的HEAD信息
  • git clone url 克隆仓库,包括.git
    • url格式:用户名@服务器地址:仓库地址
    • git clone git@gitlab.com:a376230095/aaa.git
  • git pull 相当于git fetch和git merge。其意思是先从远程下载git项目里的文件,然后将文件与本地的分支进行merge。
    • git
  • git remote add [remote name] [url] 本地仓库和远程仓库建立联系
    • git remote -v 查看远程分支
    • git remote rm 删除远程分支
    • git remote add origin git@gitlab.com:a376230095/aaa.git
  • git push 推送本地仓库的内容到远程仓库中
    • 首次push的时候git push -u origin master,下次推动直接git push即可
  • git reset [–soft] [–mixed] [–hard] commit的版本 版本回退
    • –mixed:默认项。修改版本库,修改暂存区,保留工作区。会清空暂存区的修改。
    • –soft:修改版本库,保留暂存区,保留工作区。只需要commit即可恢复版本回退前的状态。
    • –hard:修改版本库,修改暂存区,修改工作区。回退最彻底的一种。
    • 例子:
      • git reset --hard HEAD^ 回到上一个版本
      • git reset --hard HEAD^^^ 回到上上上个版本
      • git reset --hard 13d458 回到指定commit的版本
      • git reset --hard HEAD@{4} 回到指定的第4个版本
  • git diff 对比文件或者版本信息
    • git diff a.txt 对比工作区的内容和本地仓库有什么不同
      • 比如当前工作区的a.txt 加了一行tong的代码,就会有个+号
    • git diff “HEAD” “HEAD^” 对比当前版本和上一个版本有什么不同
      • 比如说当前版本比上一个版本多了一个a.txt,就会显示- a.txt
  • git checkout 可以把仓库的文件重置到工作区中,也可以切换分支
    • git checkout 1.txt 把仓库的1.txt文件放到工作区
    • git checkout 分支名 切换当前分支到指定的分支名上
    • git checkout -b 分支名 创建指定分支,同时切换当前分支到分支上,好像比较常用
  • git branch 分支管理,打印当前的分支
    • git branch -r 打印远程仓库的分支
    • git branch -a 打印全部分支
    • git branch 分支名 创建分支,但分支还是没有切换过去
    • git branch -d 分支名 删除分支,如果分支没有merge提交到其他分支,就不给删除
    • git branch -m oldName newName 修改分支名
    • git merge 分支名 将该分支合并到当前分支上
      • 快速合并分支:master和其他分支或者其他和其他分支,在代码上没有冲突,可以快速合并
      • 非快速合并分支:分支之间的代码有冲突,需要人工判断合并之后有没有问题

 

.gitignore的使用

  • 作用:把不需要git管理的文件都放在.gitgnore,确保我们的git都是有用的东西
  • 使用.gitignore:
    • 创建.gitignore文件
    • 把不要的文件放入.gitgnore文件夹中(支持通配符)
    *.iml
    /.iead
    .git
    

 

几种git的场景

    • 当删除文件的时候,还没commit的恢复方法
      1. git rm 文件或者git add可以保存这次修改,然后git commit -m 即可同步到仓库了
      2. git checkout – 文件 ,可以把文件恢复
    • 当文件删除了,也commit,恢复文件的方法
      1. git log去找到文件还在的那个版本
      2. git reset --hard 前六位的commit代码标识,或者git reset --hard HEAD^ 表示回到上一个版本,^^表示回到上上个版本,以此类推
    • 推送远程分支
      1. git checkout -b localbranch 切换创建分支
      2. git branch 查看分支是不是创建并切换好了
      3. git push origin localbranch:localbranch 推送本地分支到远程分支
      4. git push origin :localbranch 删除远程分支
    • 当通过git pull 拉取代码,本子自己提交commit代码,然后没有及时git push,不给git push的方法
      1. git pull origin master 再一次拉取代码
      2. git push -u origin master 再推送一下代码
      3. 这样就相当于远程推送了我们最新的提交,工作区也是最新的状态

 

git文件的四种状态

    • Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

    • Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件

    • Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !

    • Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

posted on 2021-11-14 10:26  张志辉99  阅读(19)  评论(0编辑  收藏  举报