玩转git版本控制软件
一、git的基本介绍
1、什么是git?
git是个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。说白了就是个版本控制软件
2、git的使用方法
git软件是通过命令来实现管理的,git命令和linux命令类似,可以通过Linux命令方式来管理git
二、git命令基本介绍
1、版本上线需要用到的功能
1、使用pwd和cd命令进入到项目的所在目录(项目根目录)
2、git init
初始化当前项目目录即将当前文件夹初始化为版本库目录,初始化后,会在当前目录自动创建 .git 隐藏文件夹,该文件是Git中最重要的文件夹,因为Git相关文件以及版本都将保存在该文件夹中,有了它就可以记录多文件版本了,通过Git命令可以将所有版本保存在 .git 文件中,两条命令创建一个版本
3、git status
由于之前生成了个.git 隐藏文件夹,可以通过该命令来查看该文件夹的状态,如果项目文件代码被修改就会呈现红色字段,表示那个文件被修改
4、git add .
添加当前项目目录下所有的文件到版本库,这时查看.git文件夹内文件状态就是绿色可执行状态
5、 git commit -m "版本名称"
提交到版本库,并起名版本名称,以便后期回滚
注意:执行git commit 命令时,可能会提示进行用户和邮箱的配置,该配置用于记录当前版本由那个用户提交
git config --local user.name 'xuan'
git config --local user.email 'you@example.com'
6、命令总结
1、Git把管理的文件分为了两个区域四个状态。
2、工作区:当前开发程序所在目录称为工作区,即:工作开发程序都是在该目录,该区域的文件会有状态的变化且状态由git自动检测,如果程序中文件和文件内容做任何操作(增、删、改),文件状态均会被检测到,可以使用 【git status】命令查看。
3、版本库:工作区检测到有文件发生变化,那么意味着较上一个版本之后对程序进行了修改,修改完成之后,可以当做下一版本进行提交,那么就是执行
【git add .】 将所有文件提交到暂存区,然后再执行【git commit -m
'又一个版本名称'】提交到版本库的分支即可,之后可以使用【git log】命令查看版本记录。
4、补充命令
1、git init,初始化,表示即将对当前文件夹进行版本控制。
2、git status,查看Git当前状态,如:哪些文件或文件夹被修改过、哪些文件或文件夹还未提交到版本库等。
3、git add 文件名,将指定文件添加到版本库的暂存状态(*代表当前文件夹内的所有文件,.代表当前文件夹)。
4、git commit -m '提交信息',将暂存区的文件提交到版本库的分支。
5、git log,查看提交记录,即:历史版本记录
三、git事物回滚方法
1、git reset --hard 版本号
通过该命令可以直接回滚到指定的程序版本,但是在此之间的版本信息就会被删除。
2、git reflog
可以通过git reflog
来查看被删除了的版本信息,并且可以通过git reset --hard uuid号的方式来恢复到被删除版本的当前位置
3、git stash
stash用于将工作区发生变化的所有文件获取临时存储在“某个地方”,将工作区还原当前版本未操作前的状态;stash还可以将临时存储在“某个地方”的文件再次拿回到工作区。说白了就是版本1之后的代码ok版本1之前的代码出现bug,就可以将版本1之后的代码先暂存在某个地方,然后恢复到版本1初始状态,修改完bug后再把版本1的程序重新git
add . git commit -m 下最后吧版本1暂存的代码恢复回来
4、git stash pop
该命令是将程序暂存在某地的代码恢复回来继续开发但是当执行
git stash pop 命令时,可能会遇到冲突,因为在紧急修复bug的代码和通过stash存储在“某个地方”的代码会有重合部分,所以执行
git stash pop 时候就会出现冲突,有冲突解决冲突即可。而冲突区域git会显示处理冲突文件,冲突文件内的冲突代码也会显示出来,改就是了
5、git回滚命令总结
git stash 将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态
git stash pop 将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
git stash apply 编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)
git stash list 查看“某个地方”存储的所有记录,因为一个git可能会多次stash
git stash clear 清空“某个地方”,可以一次性清除多个stash
git stash drop 版本号 删除指定版本号的记录
git reset 文件名 将版本分支文件覆盖到版本暂存区文件
四、撤销修改
使用“git checkout -- 文件名”回复至版本库缓存区当前内容,再次查看文件内容,可以发现修改的内容已经被撤销。
注:撤销只能撤销更改后未提交到缓存区的内容。如果已经提交到缓存区或者commit,可以使用版本回复功能。
五、补充命令
1、git config --list 罗列出git的所有配置
2、git init 创建repository
3、git status 检测当前文件状态(如果有文件被修改会显示红色)
4、git diff 检测发生变化的文件具体的变化详情,检测的是工作区的文件和版本库暂存区文件发生的详细变化
5、git diff --stat 检测工作区文件和版本暂存区文件发生变化的笼统信息
5、git ditt --staged 检测版本暂存区文件和版本分支文件的发生变化的详细信息
6、git diff HEAD 检测工作区文件和版本分支文件发生变化的详细信息
7、git diff --stat HEAD 检测工作区文件和版本分支文件发生变化的笼统信息
4、git add . (提交当前文件到版本库暂存区,红色文件变为绿色文件)
5、git commit -m '提交信息',将暂存区的文件提交到版本库的分支
六、补充知识
1、全局配置git-----用户名和邮件以及git显示的颜色(使用git config --global命令实际上是在操作git的配置文件,home目录下的gitconfig文件,也可以对这个文件进行直接修改)
2、忽略以~结尾的文件
3、git status -s 表示简洁的查看当前文件状态 ,文件前面一共两个标志位,第二个标志位表示工作区文件有没发生变化,第一个标志位表示版本暂存区文件有没发生变化
七、get pull从git上拉代码到本地发生冲突时
1、先 git add . 和git commit 将需要git的代码上传到本地版本库
2、git pull
发生冲突了,
3、先用git stash
命令把当前修改过的工作存储到栈里面,此时代码还原到了未修改时的样子
4、再git pull
拉取代码.
5、再git stash pop 或者 git stash apply
把栈里面的代码还原,这时如果再冲突,需要手动解决.
6、可以用git stash list
来看存了哪些版本,代码还原后,可以用git stash clear
来清空栈里面的代码
注释:但是多次git stash,栈里面会有很多未提交的代码
如果想找回第1个,可以用 git stash pop
如果想删除一个stash,git stash drop <id>
删除所有stash,git stash clear
玩转git版本控制软件的更多相关文章
- Git版本控制软件结合GitHub从入门到精通常用命令学习手册(转)
简要参考:http://www.tuicool.com/articles/mEvaq2 http://gitref.org/zh/index.html GIT 学习手册简介 本站为 Git 学习参考手 ...
- 【转】Git版本控制软件从入门到精通学习手册
GIT 学习手册简介 本站为 Git 学习参考手册.目的是为学习与记忆 Git 使用中最重要.最普遍的命令提供快速翻阅. 这些命令以你可能需要的操作类型划分,并且将提供日常使用中需要的一些常用的命令以 ...
- SVN版本控制软件
一.版本控制软件 1.为什么需要版本控制软件 问题:① 团队开发 ② 异地协作 ③ 版本回退 2.解决之道 SCM(Software Configuration Management):软件配置管理 ...
- 手把手教你玩转Git分布式版本控制系统! (转载)
目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 Git诞生历史 ...
- 手把手教你玩转Git分布式版本控制系统!
目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 1 Git诞生历 ...
- SVN 集中式版本控制软件
简介: 目前流行的版本控制软件中,SVN ( 集中式版本控制 ) 算是使用范围更广.且使用时间更早的一款了,现在 git ( 分布式版本控制 ) 更火爆一点. 一.安装svn [root@localh ...
- 2015继续任性——不会Git命令,照样玩转Git
最近事情比较多,一眨眼,已经半个月没有写博客了~不得不感慨光阴似箭啊!当然,2015年有很多让我们期待的事情,比如win10正式版..NET开源.VS2015等等.想想都让人兴奋啊~~ 为了迎接VS2 ...
- git 版本控制系统初学
Git -The stupid content tracker, 傻瓜内容跟踪器,是一个由Linux内核开发者Linus为了更好地管理Linux内核开发而创立的分布式版本控制软件. 1.建立本地git ...
- 【原创】Git版本控制器的基本使用
关于git Git,是一个分布式版本控制软件.最初本是为了更好的管理Linux内核开发而被林纳斯·托瓦兹开发,后来因为项目开发中版本控制的强烈需求,而git也日趋成熟,最终成为了一个独立的版本控制软件 ...
随机推荐
- Atitit.编程语言原理---方法重载的实现与设计 调用方法的原理
Atitit.编程语言原理---方法重载的实现与设计 调用方法的原理 1. 重载包括:普通方法的重载和构造方法的重载 1 1.1. 横向重载”和“纵向重载”1 1.2. 方法签名通过 方法名称,参数 ...
- jquery的post()
jQuery ajax - post() 方法 jQuery Ajax 参考手册 实例 请求 test.php 网页,忽略返回值: $.post("test.php"); TIY ...
- nginx正则说明
nginx正则说明 分类: nginx -- : 11758人阅读 评论() 收藏 举报 nginx正则表达式firefox ^~ 标识符后面跟一个字符串.Nginx将在这个字符串匹配后停止进行正则表 ...
- Java Stream 官方文档翻译
先立个flag https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html
- stm32开发板无法正常写入的问题或者写入后无法正常运行的问题
在调试stm32的程序的时候遇到这样一个问题. 用Keil往stm32里写入程序时出现无法访问内存的错误.情况如下 然后 J-link没有提示异常.偶尔可以下载成功,但是程序无法正确的执行. 经过一番 ...
- HDU 5073 Galaxy 2014 Asia AnShan Regional Contest 规律题
推公式 #include <cstdio> #include <cmath> #include <iomanip> #include <iostream> ...
- 通信协议之广播---recvfrom 放回客户端的ip地址第一次全为0.0.0.0
遇到一个很恶心的问题. while(1) { recvfrom(sockfd, readbuff, UDP_CMD_BUFF_LENGTH - 1, 0, (struct sockaddr *)&am ...
- 关于c中volatile关键字
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了.精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存 ...
- linux各种路径小结
man路径 /etc/manpath.config $MANPATH include路径 $C_INCLUDE_PATH $CPLUS_INCLUDE_PATH 动态链接库的路径 $LD_LIBRAR ...
- hdu 1956(混合图的欧拉回路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1956 思路:先将无向边定向,比如1<->3,可以定它的方向为1->3,1的出度++, ...