基础入门-Git
从0开始学git
既然要记录整个devops的学习与实践过程,那么git是不得不学的。 记得刚毕业那会,我也会使用git。大学期间做项目。也会使用SVN。
那时候,认识还比较浅显。觉得他们两个都差不多,用来多人协同开发的。每天我只需要,推代码和拉取代码就可以了。还特别害怕又代码冲突。因为不好解决。虽然吭哧吭哧也解决了。回想以前,还真是听菜鸟的。
认识版本控制
什么是版本控制?
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。(百度百科)
版本控制的常用工具:SVN、Git
Git
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。(所以下面使用windows安装的git的时候,通过git bash可以使用shell命令访问我们电脑的所有文件和目录)
SVN
是一个集中式的版本控制系统,通过单一的服务器存储所有文件修订版本的方式。所有客户端连接该服务器,取出文件或者更新的内容文件。
Git与SVN的区别
- Git是分布式的,SVN不是
- Git通过元数据存储文件,Git内容存储通过哈希算法(SHA-1),这样可以确保内容的完整性。SVN是按文件进行存储
- Git没有一个全局的版本号,而SVN有
- 分支概念不同,SVN是版本的另一个目录(比较占资源),Git的分支是指向提交的commitId的指针
说一下SVN集中式与GIT分布式
集中式:指的是存在服务端和客户端。服务端充当*代码库。客户端从服务端中获取代码。
分布式:Git的分布式,没有服务端和客户端之分,所谓的服务端就是安装了Git的服务器。因此就没有服务端和客户端之分。
Git学习
基本概念
-
工作区: 就是我们安装在电脑上,能清晰的看到的目录。目录中能看到具体的文件内容,可以进行编辑、删除等等操作。
-
暂存区: 暂存区,英文就是stage或者index。存在工作区目录下".git"下的index文件中
-
版本库: 工作区目录下".git"目录不属于工作区,而是Git的版本库
安装Git
使用Git之前,需要先安装Git。
Git各平台安装包下载地址: http://git-scm.com/downloads
玩转Git命令
一、Git的相关配置
- 配置全局账户,也就是你这台服务器所有的Git仓库,对此账户都有效
git config --global user.name '账户名称'
git config --global user.email ‘账户Email’
- 配置局部账户,也就是这个账户,只对当前仓库,有效
git config --local user.name '账户名称'
git config --local user.email '账户Email'
注意:一个仓库同时配置了global,则仓库有限使用本地设置。
-
查看相关配置
查看配置是否该生效
git config --global --list
==or
git config --local --list
二、本地基本操作
这部分也是我工作中使用比较多的命令
1. 基本操作
- 查看变更情况
git status
- 查看当前分支属于哪个分支
git branch -v
- 切换到指定分支
git checkout 'branchname'
- 把当前目录以及子目录下所有的变更都添加到暂存区
git add .
- 把仓库内所有的变更都加入到暂存区
git add -A
- 把指定的文件添加到暂存区
git add 文件1 文件2 ...文件n
- 创建正式的commit,也就是把当前的数据从暂存区提交到版本库(记住文件变更需要先提交到暂存区,才能进行版本库的提交)
git commit -m "message"
2. 比较差异
- 比较某文件工作区与暂存区的差异
git diff 某文件
- 比较某文件暂存区与HEAD差异
git diff --cache 某文件
- 比较工作区和暂存区的所有差异
git diff
- 比较暂存区和HEAD的所有差异
git diff --cache
- 用difftool工具比较任意两个commit之间的差异
git difftool commit1 commit2
3. 暂存区和工作区之间的回滚
- 把工作区指定的文件恢复到和暂存区一样
git checkout 文件1 文件2 ... 文件n
- 把暂存区指定文件恢复到和HEAD一样
git reset 文件1 文件2 ... 文件n
- 把暂存区和工作区所有的文件恢复到和HEAD一样
git reset --HEAD
4. 查看哪些文件没有被git管控
git ls-files --others
三、 加塞临时任务
- 把未处理完的变更先保存到stash中
git stash
- 临时任务处理完后继续之前的工作
git stash pop
或者
git stash apply
- 查看所有的stash
git stash list
- 取回某次的stash的变更
git stash pop stash @{数字}
四、 修改个人分支历史
- 修改最后一次commit
git add
git commit --amend
- 修改中间的commit(某一次的)
1. git rebase -i X前面的一个commit的id
2. 在工作区修改文件
3. git add
4. git rebase --contiue
五、 查看变更日志
- 当前分支所有信息
git log
- 当前分支最近的n条commit信息
git log -n
- 用图形显示所有分支的提交历史
git log --all --graph
- 查看某个文件的的提交历史
git log 某文件
如果觉得展示信息太多,可以展示一行
git log --oneline
- 某个文件各行最后修改对应的commit以及作者
git blame 某文件
写在最后:
会持续更新git相关命令,Git命令还是很多的,需要多使用多练习。当然单单会命令还不行。理解原理,对命令的掌握和理解有很大的帮助。也会慢慢更新相关的原理文章。期待自己,也期待读者从本质上读懂git
上一篇: sonarqube代码质量检测平台搭建
推荐阅读
-
Git 的使用
-
微服务Git+Docker+Jenkins+Maven一键CI/CD持续集成部署
-
基础入门-Git
-
码云仓库 jenkins Error performing command: git ls-remote -h
-
C++ 基础语法 快速复习笔记---面对对象编程(2)
-
php基础教程——表单验证(必填、提交后数据保存)
-
git项目从mac上传,windows下载,会因为换行回车符不同出现问题的解决办法
-
php基础学习-详解equire(),include(),require_once()跟include_once()的异同
-
码云使用入门
-
使用jenkins自动化部署docke镜像node项目(jenkins、docker、node、码云、git)