这是我大三学习git所整理的,如果有不足之处,希望各位大佬多多指教
一、git基本介绍
git关键词:分布式版本控制
1.1、什么是版本控制?
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术,简单说就是用于管理多人协同开发项目的技术。其特点如下:
- 实现跨区域多人协同开发
- 追踪和记载一个或者多个文件的历史记录
- 组织和保护你的源代码和文档
- 统计工作量
- 并行开发、提高开发效率
- 跟踪记录整个软件的开发过程
- 减轻开发人员的负担,节省时间,同时降低人为错误
1.2、什么是分布式?
分布式是指所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
二、git起步
2.1、安装
打开Git官网下载安装程序,然后按照默认选项安装即可。当我们鼠标右键出现如下图所示证明安装成功。
2.2、初始化个人信息
鼠标右键打开Git bash herre
命令行管理,并输入以下:
- 初始化姓名:
git config ---global user.name '你的名字'
- 初始化邮箱:
git config --global user.email '你的邮箱'
- 查看个人信息:
git config --list --global
ps: config——配置 global——全局
注意:当我们想要对其配置某个仓库的个人信息,我们只要打开仓库所在的命令行管理,然后按照上面步骤把--global
换成--local
进行配置,否则默认使用全局配置的个人信息,另外我们配置某个仓库的个人信息时,这个仓库必须完成git项目的初始化
2.3、初始化git项目
2.3.1、在已有项目的基础上初始化git项目
打开项目所在的文件夹,右击选中Git bash herre
命令行管理,并输入git init
2.3.2、使用git新建一个项目
选中想要新建项目所在的位置,右击选中Git bash herre
命令行管理,并输入git init '项目名'
2.3.3、查看git项目是否初始化成功
查看git项目是否初始化成功的标准:是否有git文件夹
但是当我们直接打开项目所在文件夹的时候,我们是看不到git的文件夹(被隐藏了)的,所以我们要使用git命令行的管理来查看,是否有git文件夹,查看如下
三、git常用命令
3.1、Git 的M,T,D,A,U简写标准标志
- A: 增加的文件(没有被添加到本地仓库中,但是被添加到暂存区的文件)
- C: 文件的一个新拷贝
- D: 删除的一个文件
- M: 文件的内容或者mode被修改了
- R: 文件名被修改了
- T: 文件的类型被修改了
- U: 文件没有被合并(你需要完成合并才能进行提交)
- X: 未知状态。(很可能是遇到git的bug了,你可以向git提交bug report)
3.2、创建文件
1、我们可以直接打开项目所在文件夹,建立文件
2、也可以通过命令行来创建文件,输入touch '项目名'
3.3、git status 查看上次提交之后是否有对文件进行再次修改
git status -s
加上-s 参数来获得简短的输出结果
注意:文件名前??
代表没有提交到git管理仓库上面
3.4、git查看历史(提交到本地仓库的历史)
3.4.1、git log (不包括被撤销的记录)
git log
常见参数如下:
--all
::查看所有分支的历史版本--oneline
:简洁的方式查看历史版本--graph
:以图形的方式查看-数字
:显示多少条历史记录
3.4.2、git reflog 查看所有历史(包括被撤销的记录)
3.4.3、 gitk 图形的方式查看历史版本
四、git分区管理
4.1、分区介绍
git有三大分区:工作区、暂存区和版本库(本地仓库),具体如下
- 工作区(WORKING DIRECTORY): 直接编辑文件的地方,肉眼可见直接操作
- 暂存区(STAGIN AREA):数据(快照)暂时存放的地方
- 版本库(GIT DIRECTORT(RESPOSITORY)):存放已经提交的数据,push 的时候,就是把这个区的数据 push 到远程git仓库了
4.2、分区提交管理
4.2.1、工作区->暂存区
git add'文件名'
把工作区的文件提交到暂存区
git add '文件名'
提交某个文件git add .
提交所有文件
4.2.2、暂存区->本地仓库
git commit
将暂存区添加到本地仓库中
常用的git commit参数命令如下:
git commit [file1] [file2] ... -m [message]
:提交暂存区的[files]
到仓库区(可选),-m[message]
是一些备注信息git commit -am [message]
:提交所有包括工作区的文件到仓库区
4.3、分区撤销管理
4.3.1、暂存区->工作区
git restore 文件名
将我们提交到暂存区中的修改撤销到工作区
注意:文件一定是暂存区内的文件
-
git restore '文件名'
将暂存区的文件回退,会撤销文件的更改 -
git restore --staged '文件名'
将暂存区的文件撤出到工作区,但不会撤销文件的更改
4.3.2、本地仓库->工作区
git reset --hard
本地仓库历史版本回退(改变工作区到回退的历史版本时的内容)
git reset --hard Head~数字
:1代表回退上一个版本,2代表回退上上版本,以此类推git reset --hard head~^
:一个^
代表回退上一个版本,^^
代表回退上上版本,以此类推
ps:hard里面存放的是所有分支,Head代表的是当前分支所在文件
补充1:改到历史版本撤销之前的历史版本
git reset 任意版本的id号
回到所带版本id
git reflog
查看所有版本
补充2:没有本地仓库->暂存区的撤销
五、git的分支管理
5.1、创建分支、查看分支、切换分支基础
git branch '分之名'
创建分支git branch -v
查看分支git checkout '分之名'
切换分支git checkout -b '分之名'
切换并创建分支
5.2、多分支协调管理
5.2.1、前期准备
5.2.1.1、项目以及分支准备
准备好一个git项目,可以是从github上面拉取的,也可以是自己建立的。
我这的项目内容如下,内容已经全部提交到本地仓库里面了。
此外,我还创建了一个test分支
5.2.1.2、vim知识点补充
vim插入模式详情i/I/a/A/o/O:
- a 在光标所在的字符后面插入
- A 在光标所在的行尾插入
- i 在光标所在的字符前进行插入
- I 在光标所在的行首插入
- o 在光标下插入新行
- O 在光标上插入新行
5.2.2、分支合并(快速合并)
要想合并分支,我们输入git merge 合并分支名
即可进行快速合并了。
补充:解决分支快速合并冲突问题:Automatic merge failed; fix conflicts and then commit the result.
问题:
Auto-merging demo2.txt
CONFLICT (content): Merge conflict in demo2.txt
Automatic merge failed; fix conflicts and then commit the result.
You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you merge.
自动合并demo2.txt
冲突(内容):在demo2.txt中合并冲突
自动合并失败;修复冲突,然后提交结果。
解决办法步骤如下:
1、找到我们发生冲突的文件
2、观察冲突的代码部分并进行修改(先分析你们俩个的代码是实现相同功能而写的重复的代码还是各自实现的不同的功能的代码。如果是重复代码:两个二选一删除一个,然后再把这些冲突标示符删除即可;如果不是重复代码,两个都需要保留,只把冲突符号(红色部分)删除即可)
3、重新提交到本地仓库,并合并分支
git add .
提交到暂存区git commit -m '说明'
提交到本地仓库git merge 合并分支名
快速合并分支