Git简介和常用命令
Git简介
Git是一款版本管理软件,可以在任何时间点保存文件,也能够恢复到以前任意时间点保存的文档,Git作用简单举例来说就是,写论文,有很多个版本,将原来的论文保存起来,新建一个副本,如果写错了,可以回退到之前的版本。
git安装
下载地址: https://git-scm.com/downloads
安装过程:傻瓜式安装,安装路径可以修改,但不要有中文
安装完成后,鼠标按住shift右键,会出现两个选项,Git GUI和Git Bash,点击Git Bash Here就可以打开命令行工具:
学习git就是学习git的基本命令
Git的基本操作
配置Git用户信息
配置提交人姓名:git config --global user.name 用户名
配置提交人邮箱: git config --global user.email 邮箱地址
查看git信息:git config --list(底部会显示提交人姓名和邮箱)
git的配置文件路径:C:\Users\用户名\.gitconfig(里面可以修改git信息)
git的工作流程
工作目录-暂存区-Git仓库
工作目录:自己的项目目录
暂存区:存放临时修改的文件,暂存区的数据只有一份,后提交的会覆盖之前提交的文件
git仓库:用来保存编号的项目程序,任何一个文件任何时间都可以保存,同一个文件有多份,都有自己的版本号
Git常用命令
第一步,先创建新的项目,这是项目文件
第二步,鼠标右键打开刚才安装好的open Git Bach here,打开命令行窗口,输入git init,项目文件就会多出一个.git文件
第三步:输入命令git status,可以查看文件状态,红色代表没有被git管理
第四步:将文件添加到暂存区,git add main.cpp,也可以批量添加,git add . 可以将所有文件添加到暂存区,这里需要注意我们不希望将.user文件也上传到git,所以需要在项目目录文件下创建一个文本文档.gitignore,也叫忽略清单在文本内输入*.user,即可,此时再次查看,就不会出现user文件名
输入git add .,这时候看到文件名变绿,new file代表文件已经增加到暂存区
最后一步,将文件上传提交到git仓库,命令是 git commit -m 日志
可以使用git log命令查看日志
修改文件后再次提交
在文件中添加一个按钮,然后再次使用git status查看,发现widget.cpp变红
所以需要再次上传到暂存区,查看状态,再上传到仓库,查看日志。
文件恢复
暂存区--->项目目录
使用暂存区的文件,覆盖当前项目中的文件,当在暂存区进行了一次提交后,之后继续写代码,如果发现写错了,需要恢复成暂存区时的代码
命令:git checkout
我们先将项目中的内容加个注释,然后传到暂存区
使用git add widget将当前版本上传到暂存区,使用git status查看状态,发现还没有被git管理
然后输入git checkout widget.cpp
此时Qt编辑器内会提示文件被修改过了,点击yes to all即可恢复到之前没有注释时的版本
点击后,此时的注释已经消失了,文件恢复到了之前的状态
git仓库----->项目目录(版本穿越)
上面提到的git log可以查看已有版本和版本id号,使用git reset --hard id可以从仓库恢复文件,仓库恢复文件会同时覆盖掉暂存区和项目目录的文件,同时,git log只能看到恢复到的版本号,之后的版本号无法看到
1 先使用 git log看一下之前提交的版本
2 要穿越到哪个版本就复制哪个版本号,此时我们恢复到最初的基础文件,使用git log查看,发现无法查看到之后的版本号了
如果需要穿越到其他版本,无法在命令行找到版本号,可以到文件内查看,之前目录生成的git文件内有一个logs文件夹,里面有一个HEAD文件,打开就可以看到所以的版本号
此时点击yes to all,就恢复到了最开始的状态
分支
分支概念
分支就是为项目创建多个副本,每个副本完成一个独立的工作,分支能够做到多件事情同时进行且互不影响。
上图中有一个master就是主分支,这个括号内表示的就是当前在哪个分支,主分支就是系统默认使用的分支,之前的示例都是在主分支上完成的,主分支会最终保存整个项目的完整代码,所以,开发分支的工作完成后,需要合并回到主分支。
开发分支:即为了完成猴哥功能模块开发而单独建立的副本,开发分支是基于主分支创建的,当然一个开发分支下,还能创建多个开发分支,形参父-子-孙结构
默认分支是在主分支上
分支命令
查看分支,git branch
创建分支:git branch 分支名,再使用git branch查看,发现多出一个users分支
切换分支,git checkout 分支名,会发现括号内变成了users
需要注意的是,当切换分支时,需要把暂存区的文件提交,否则会跟着切换到这条分支上,当再回到主分支,就看不到其他分支里面的文件了。
举例
在项目创建一个新的Users类
通过git status查看
将Users模块提交到users分支。
此时切换到主分支后,查看清空,git checkout master,会弹出这个框
点击close all后,会发现文件中没有user模块,同样再切回到Users分支后又会重新显示出来
合并分支
使用git merge 分支名即可合并分支,需要注意的是,合并分支需要再master主分支上
合并后在master分支下也可以看到User
删除分支
合并后即可删除分支 使用 git branch -d 分支名,此时如果没有合并则不允许删除,使用D可以强制删除分支,再次使用branch命令查看,发现子分支已经被删除了
临时存储分支
当某个分支在开发时,如果这个分支没有提交到仓库,是不允许进行分支切换的,此时可以进行临时存储。
将所有改动临时存储:git stash
将临时存储恢复 :git stash pop
在其他的分支中也能执行恢复改动,但是会把这些文件恢复到当前命令的分支,所以我们在恢复的时候需要注意,我们当时在哪个分支进行的开发