Git版本控制工具

版本控制(Version control),是维护工程蓝图的标准作法,能追踪工程蓝图从诞生⼀直到定案的过程。此外,版本控制也是⼀种软件工程技巧,借此能在软件开发的过程中,确保由不同人所编辑的同⼀程序文件都得到同步透过文档控制,能记录任何工程项目内各个模块的改动历程,并为每次改动编上序号⼀种简单的版本控制形式。简言之,你的修改只要提到到版本控制系统,基本都可以找回,版本控制系统就像⼀台时光机器,可以让你回到任何⼀个时间点。
版本控制系统在当今的软件开发中,被认为是理所当然的配备⼯具之⼀,根据类别可以分成:
  • 本地版本控制系统
  • 集中式版本控制系统
  • 分布式版本控制系统
Git 是目前世界上最先进的分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有事务
特性:易于学习,占用内存小,具有闪电般快速的性能
使用  Git Gitlab 搭建版本控制环境是现在互联网公司最流行的版本控制方式
当我们通过 git init 创建或者 git clone ⼀个项目的时候,项目目录会隐藏⼀个 .git 子目录,其作用是用来跟踪管理版本库的 Git 中所有数据,在存储前都计算校验和,然后以校验和来引用,所以在我们修改或者删除⽂件的时候, git 能够知道 Git 用以计算校验和的机制叫做 SHA-1 散列(hash,哈希), 这是⼀个由 40 个⼗六进制字符(0-9 和 a-f)组成字符串,基于 Git 中⽂件的内容或目录结构计算出来。 当我们修改⽂件的时候, git 就会修改文件的状态,可以通过 git status  进行查询,状态情况如下:
  • 已修改(modified):表示修改了⽂件,但还没保存到数据库中。
  • 已暂存(staged):表示对⼀个已修改⽂件的当前版本做了标记,使之包含在下次提交的快照中。
  • 已提交(committed):表示数据已经安全的保存在本地数据库中。
文件状态对应的不同状态的文件在 Git 中处于不同的⼯作区域,主要分成了四部分:
  • ⼯作区:相当于本地写代码的区域,如 git clone ⼀个项⽬到本地,相当于本地克隆了远程仓库项目的⼀个副本
  • 暂存区:暂存区是⼀个文件,保存了下次将提交的文件列表信息,⼀般在 Git 仓库目录中
  • 本地仓库:提交更新,找到暂存区域的⽂件,将快照永久性存储到 Git 本地仓库
  • 远程仓库:远程的仓库,如 github

配置  

Git 自 带⼀个 git config 的⼯具来帮助设置控制 Git 外观和行为的配置变量,在我们安装完 git 之后,第⼀件事就是设置你的用户名和邮件地址后续每⼀个提交都会使用这些信息,它们会写⼊到你的每⼀次提交中,不可更改,设置提交代码时的用户信息命令如下:
  • git config [--global] user.name "[name]"
  • git config [--global] user.email "[email address]"

日常基本操作

 在日常工作中,代码常用的基本操作如下:

  • git init 初始化仓库,默认为 master 分支
  • git add . 提交全部文件修改到缓存区
  • git add <具体某个⽂件路径+全名> 提交某些文件到缓存区
  • git diff 查看当前代码 add后,会 add 哪些内容
  • git diff --staged查看现在 commit 提交后,会提交哪些内容
  • git status 查看当前分支状态
  • git pull <远程仓库名> <远程分⽀名> 拉取远程仓库的分支与本地当前分支合并
  • git pull <远程仓库名> <远程分⽀名>:<本地分⽀名> 拉取远程仓库的分支与本地某个分支合并
  • git commit -m "<注释>" 提交代码到本地仓库,并写提交注释
  • git commit -v 提交时显示所有diff信息
  • git commit --amend [file1] [file2] 重做上⼀次commit,并包括指定文件的新变化
关于提交信息的格式,可以遵循以下的规则:
  • feat: 新特性,添加功能
  • fix: 修改 bug
  • refactor: 代码重构
  • docs: 文档修改
  • style: 代码格式修改, 注意不是 css 修改
  • test: 测试用例修改
  • chore: 其他修改, 比如构建流程, 依赖管理

 分⽀操作

  • git branch 查看本地所有分支
  • git branch -r 查看远程所有分支
  • git branch -a 查看本地和远程所有分支
  • git merge <分⽀名> 合并分支
  • git merge --abort 合并分支出现冲突时,取消合并,一切回到合并前的状态
  • git branch <新分支名> 基于当前分支,新建⼀个分支
  • git checkout --orphan <新分支名> 新建⼀个空分支(会保留之前分支的所有⽂件)
  • git branch -D <分支名> 删除本地某个分支
  • git push <远程库名> :<分支名> 删除远程某个分支
  • git branch <新分支名称> <提交ID> 从提交历史恢复某个删掉的某个分支
  • git branch -m <原分支名> <新分支名> 分支更名
  • git checkout <分支名> 切换到本地某个分支
  • git checkout <远程库名>/<分支名> 切换到线上某个分支
  • git checkout -b <新分支名> 把基于当前分支新建分支,并切换为这个分支

远程同步 

远程操作常见的命令:
  • git fetch [remote] 下载远程仓库的所有变动
  • git remote -v 显示所有远程仓库
  • git pull [remote] [branch] 拉取远程仓库的分支与本地当前分支合并
  • git fetch 获取线上最新版信息记录,不合并
  • git push [remote] [branch] 上传本地指定分支到远程仓库
  • git push [remote] --force 强支推送当前分支到远程仓库,即使有冲突
  • git push [remote] --all 推送所有分支到远程仓库

撤销

git checkout [file] 恢复暂存区的指定文件到工作区
  • git checkout [commit] [file] 恢复某个commit的指定⽂件到暂存区和⼯作区
  • git checkout . 恢复暂存区的所有⽂件到⼯作区
  • git reset [commit] 重置当前分⽀的指针为指定commit,同时重置暂存区,但⼯作区不变
  • git reset --hard 重置暂存区与⼯作区,与上⼀次commit保持⼀致
  • git reset [file] 重置暂存区的指定⽂件,与上⼀次commit保持⼀致,但⼯作区不变
  • git revert [commit] 后者的所有变化都将被前者抵消,并且应⽤到当前分⽀
reset :真实硬性回滚,目标版本后面的提交记录全部丢失
revert :同样回滚,这个回滚操作相当于⼀个提价,目标版本后面的提交记录

 存储操作

你正在进行项目中某⼀部分的工作,里面的东西处于⼀个比较杂乱的状态,而你想转到其他分支上进行⼀些⼯作,但又不想提交这些杂乱的代码,这时候可以将代码进行存储

  • git stash 暂时将未提交的变化移除
  • git stash pop 取出储藏中最后存入的⼯作状态进行恢复,会删除储藏
  • git stash list 查看所有储藏中的⼯作
  • git stash apply <储藏的名称> 取出储藏中对应的⼯作状态进行恢复,不会删除储藏
  • git stash clear 清空所有储藏中的工作
  • git stash drop <储藏的名称> 删除对应的某个储藏

复杂内容下一章节更新! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格子衫大背头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值