Git工作流总结

git常用工作流小结

git是什么

git是一个用来追踪你的文件增量更改的信息,方便未来查找你的文件变更信息,甚至回滚

Inbox

git文档

基础概念

学习git之前先要了解一下他的基础概念:

状态

  • ▪ 已修改(modified)
    • 如果我们一个文件,add过,就会变成已追踪的文件,如果我们修改了,没有add就会变成modified状态
  • ▪ 已暂存(staged)
    • 把文件add
  • ▪ 已提交(committed)
    • commit
  • 有一个特殊的状态
    • 未追踪(Untracked)
    • why
      • 有一些文件,我们虽然放在git文件夹里面,但是我们不想共享出去 就不用追踪他 (或者加入.gitignore文件中)
  • 命令
    • git status

区域

  • • 工作目录(working directory)
    • 写代码的地方
    • 所有文件都在这里,未追踪的,已追踪的等等
  • • 暂存区域(Stage)
    • 工作目录变更之后:git add 文件名,就把对应的文件放入了暂存区域
    • 我们存储阶段性变更的代码的地方。存的文件类型:是我们希望把他们变成一个版本,或者版本号的文件
    • Git不记录我们所有每个单词的增加和减少,而是记录我们代码的阶段性变更(完成了一个小功能)
  • • Git 仓库
    • 最后的状态
    • 如果我们一个功能开发完了,想把他变成一个版本,就添加到git仓库里面去
    • git commit -m 功能完成说明

注意远程仓库实际上只是我们本地仓库的延伸,或者说一个备份,用好了本地仓库,后续再远程仓库上操作:不用协作的情况下:通过git pushgit pull同步更新即可

工作流基本命令

git init

  • 生成一个.git目录
    • 关于我们这个项目和git有关的信息都会存在对应的.git目录里面

git add .

把当前目录的所有文件从work dir加入stage

git commit

  • 每次提交都会生成一个版本hash值
  • 增量式提交
    • 每更新一次就往上add commit一次
  • 修复式提交
    • 紧急修改一个bug,但是不想新建一个大的版本,所以就使用这个
    • git commit --amend -m 注释
      • 注意这个注释是会修改你上次提交的注释的,最好和你紧急提交到的分支是一样的

git status

工作流说明

image.png

我们要开始跟踪某个项目的时候,先使用git init初始化项目

然后编辑完一些文件,确定好功能已经完成,就使用git add 文件名把文件加入Stage中,后续继续开发,然后完成一点就可以加入Stage,等一个功能开发的差不多的时候,就可以commit到仓库里面去,注意写好注释。

当我们的一些文件不需要提交到仓库里面的时候,就使用git reset 文件名把他从暂存区中取出来。

或者是,我们已经加入Stage中的文件,然后继续编辑文件,文件也变成了已修改(modified) 状态,但是我们发现后续编辑的内容不是我们想要的,我们需要恢复到Stage中的状态,就使用git checkout 文件名

注意resetcheckout从暂存区中取出文件的区别:reset是把文件的区域改变,不影响文件本身。checkout是改变文件的本身,不改变文件的区域。

rm --cached 文件名:就是我们已经把一个文件加入本地仓库Repository,但是我们后来发现这个文件不应该提交上去,所以我们需要从仓库里面删除他,但是work dir里面不应该删除文件。注意后续要commit本次操作,否则不会反映到页面

其他基本操作

撤销重置

  • 从暂存区中撤销到工作区

    • 就是我要提交一个功能,我把多余的功能也一起传上去了,比如我同时做了支付和点赞功能, 但是我这次只想commit支付功能为一个版本,但是不小心把点赞相关的文件也给add进去了,所以就要使用重置
    • // 从暂存区中撤销一个指定文件
      git reset HEAD 文件名称
  • 把暂存区全给撤回

    • Add功能部分次序错了
    • git reset HEAD .
  • 把一个文件恢复到暂存区的状态

    • git checkout 文件名
  • 删除

    • 不追踪某个文件

      • 只删除 git 仓库中的文件==不追踪某个文件  
        git rm --cached 文件  
          
        rm 以后,需要 commit 这次操作,否则 rm 将保留在暂存区  
        git commit -m 修正  
        复制代码
    • 直接彻底在本地和工作区删除对应的文件

      • git rm 文件名
      • 最后如果要反映到仓库,都必须要进行commit操作

查看日志

  • git log :会显示每次commit的详细信息
  • git log --oneline :简洁查看
  • git reflog

分支

用户系统、内容发布系统,一个系统包括很多功能就发布了,我们又需要在原有基础上增加一个支付功能,这个时候就要开启一个新线继续执行,如果可以的话,就直接启动即可

rebase

就是我一个大的版本更新(支付)。会有很多的细小步骤:比如:获取价格,微信支付,支付宝支付,支付密码,支付验证等等功能。我们最后commit、merge到主分支过去都会体现在分支上,但是我们又不想在主分支看到这些零碎的过程,所以我们先使用一个rebase把这些过程合并起来。把这十几个提交合并成一个提交:支付。

横向与纵向解析

image.png

  • 横向就是找对应的儿子,如果想多次找下去,就要用多个^,不能直接一个^大于1的数字^n,n大于1就是在其对应的子元素横向左到右寻找了

合并

  • 基本语法

    • B 合并到 A,需要切换到 A 分支  
      git merge 被合并分支  
        
      查看已经合并的分支  
      git branch --merged  
      查看未合并的分支  
      git branch --no-merged  
      复制代码
  • 冲突合并

    • what
      • 多个分支都对同一个文件进行了commit,然后合并分支的时候就会出现冲突
    • how
      • 查看冲突文件
      • 修改冲突内容
      • 重修,add然后提交

标签

通常情况下我们会把确定的东西,一些固定稳定的版本代码打上标签

在稳定版本上开发:

  • 新建多个分支来开发
  • 比如一个分支来修复bug
  • 一个分支来测试新功能

How good

  • 分支一般用于开发,在对应commit上添加标签就说明对应的版本已经稳定,然后可以发布了
    • 一般用于发布

命令总结

更具体的命令可以去看文档或者菜鸟教程(开始的inbox里面有)

init
status
add
commit
log
reflog
rm
reset
diff
branch
checkout
merge
rebase

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享