请收下这份 Git 扫盲手册

你们好,我是小七

前言

Git是程序员写项目必备的一个工具,工欲善其事必先利其器,显然这把武器对于我来时只是发挥了它最简单的功能,这不,前两天我就在分支上合错代码了,虽然同事没说什么,可是这仍是很不该该犯的错,因而我决定对Git作一个较为详细的学习和总结。git

Git介绍

Git是一个开源的分布式版本控制系统,能够有效、高速的管理从很小到很是大的项目版本管理。它不须要网络的支持,现已成为不少开发人员对项目版本管理的首选,也能够用来管理本身的普通文档版本。程序员

Git的命令不少,在平常开发中使用都只须要用到几个简单的命令便可,因此本文会先从_名词解析_介绍,在介绍Git的_经常使用命令_在项目中的应用。github

名词解析

对于Git能够在官网下载使用,在介绍命令前也来理解几个名词概念服务器

工做区

指的是在电脑里能看到的目录,目录里有你操做的各类文件网络

版本库

在工做区有一个隐藏的文件叫.git,这个就是Git的版本库,版库里包含称为stage的暂存库,还有Git给咱们建立的第一个分支master,以及指向master的指针HEDEssh

远程仓库

githubgitlabgitee这写平台上建立的代码仓库,与本地版本库作关联,就能实现上传版本项目或文档分布式

经常使用命令

Git在工做中经常使用的命令有工具

  • git config
  • git init
  • git clone
  • git status
  • git add
  • git commit
  • git log
  • git reset
  • git push
  • git pull
  • git stash
  • git branch
  • git checkout
  • git merge
  • git fetch
  • git tag

接下来会一一介绍这么命令的用法gitlab

git config

配置我的信息,包括用户名和邮箱
git config --global user.name "my name"
git config --global user.email "my email.com"

这样在代码后提交的提交记录,就会是有本身设置的我的信息,一部分公司也会根据代码提交的信息对代码作审核决定年终考评奖金等性能

ssh-keygen -t rsa -C "my email.com"

建立秘钥,生成的秘钥放在~/.ssh目录下,根据提示所有回车便可,操做完成以后将公钥放在github仓库中,以后操做项目就免密输入了

git init

初始化git仓库
git init

初始化一个Git仓库

git clone

克隆远程仓库
git clone <远程仓库连接>

当前的文件夹里就会把远程仓库的项目下载到本地

git status

查看文件变更状态
git status

能够看到项目中的文件是否提交

git add

把工做区的文件提交到暂存区
git add <文件名>
git add .    // 提交工做区所有文件

是提交文件的第一步

git commit

把工做区的文件提交到git 仓库
git commit -m <提交信息>

提交文件的第二步

git commit --amend -m <新的提交信息>

参数--amend不但能够修改提交信息,若是暂存区有修改的话还能把上一次的提交替换掉

提交信息规范

  • fix:修复了一个 bug
  • feat:新增了一个功能
  • refactor:重构某块代码
  • perf:改进性能
  • docs:文档相关
  • test:测试相关
  • ciCI/CD 相关
  • chore:其余类型

举例:若是新增了一个登录功能提交信息能够为,feat: 添加登录功能

git log

查看版本提交记录
git log  //查看最近三次提交
git log --pretty=oneline  //一行输出提交信息

能够查看到版本的提交信息,包括提交人,日期,提交缘由,提交的惟一编号等

git reset

版本回退
git reset --hard HEAD^

HEAD^回退到上一个版本而且提交内容也会还原到上一个版本,HEAD表明版本,回退到前n个版本可用HEAD~N表示

git push

把git仓库里的文件推送到远程仓库

在提交前能够给远程仓库起一个别名

git remote -v  //查看全部远程仓库别名
git remote add [别名] [远程仓库地址]
git push -u [别名] [分支名]

提交文件最后一步,-u用于第一次推送,能够把本地分支和远程仓库分支作关联。以后提交就不用加-u参数了。

git pull

把远程仓库的最新代码拉取到本地并合并
git pull [别名] [分支名]

能够拉取远程仓库的代码并合并到本地 至关于git fetchgit merge

git fetch

只是拉取远程仓库代码
git fetch [别名] [分支名]

取回更新后,会返回一个FETCH_HEAD ,指的是某个branch在服务器上的最新状态,咱们能够在本地经过git log -p FETCH_HEAD查看刚取回的更新信息

经过这些信息来判断是否产生冲突,以肯定是否将更新merge到当前分支

git merge

将指定分支合代码并到当前分支
git merge <指定分支名>

合并代码时可能会产生冲突,解决便可正常运行

git stash

保存当前修改
git stash

把当前修改版本保存下来,能够切换到其余分支或拉取远程分支也不会有冲突

git stash pop

把保存的版本取出来

git stash list

查看全部保存版本的信息,存储能够直接经过索引的位置来得到stash@{n}.

git branch

对分支进行增删改查的操做
git branch

查看本地分支列表

git branch <分支名>

新建一个分支并命名

git branch -m <旧分支名> <新分支名>

修改本地分支名

git branch -d <分支名>

删除本地分支

分支命名规范

  • master 主分支
  • develop 开发分支
  • feature/xxx 新功能分支
  • bugfix/xxx 修复 bug 分支
  • hotfix/xxx 热修复分支,修复紧急bug
  • release/x.x.x 新版本分支

git checkout

切换分支
git checkout <分支名>

切换到指定分支上

git tag

为项目标记里程碑
git tag <标签名>

可在重要节点为项目代码作一个标记

总结

上述命令只是git的经常使用命令,把这些掌握了,应对平常开发是彻底足够的,遇到一下复杂的状况,Google一下便可,记得要把你遇到的问题和解决的方案都记录下来哦,这样再遇到相似问题就能触类旁通了,把每个踩过的坑都变成你成长的营养

我是小七,一个喜欢读书的的程序媛小姐姐,初入职场还有不少须要学习,喜欢分享本身的生活感悟和小菜鸡的技术总结,感兴趣的能够搜索wx搜索,我说姑娘,关注我,和我一块儿成长吧!
相关文章
相关标签/搜索