Git 本地库基本教程
3.3.3 新增文件 & 再次查看状态(检测到未追踪的文件)
3.4 添加暂存区 3.4.1 基本语法
git add name(这个name是你要添加的文件或者文件夹的名称)
3.4.2 查看状态(检测到暂存区有新文件)
文件从红色字体变成了绿色字体,说明git已经追踪(知道)了这个文件。
使用“git rm -- 文件名”可以从暂存区删除你要删除的文件。
3.5 提交本地库 3.5.1 基本语法
git -m "日志信息" name(文件名)
3.5.2 查看提交(没有文件需要提交)
3.6 修改文件 3.6.1 基本语法
文件已被修改(相当于新文件),需要从工作区再次add到暂存区,并且需要。
3.7 历史版本(版本穿梭) 3.7.1 查看历史版本
3.7.2 版本穿梭
git reset --hard 版本号(上图中黄色的字符串就是版本号,分为详细版本号和精简版本号)
穿越之后,你的指针就指向你的穿越目标所对应的版本,并修改时从指针所指为基础开始修改。
附:cat 文件名——可以查看文件内容
四.Git分支操作
4.1 什么是分支?
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个人物的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也就是指针的运用)
4.2 分支的好处
同时并行推进多个功能开发,提高开发效率。
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
4.3 分支的操作
命令名称
作用
git 分支名
创建分支
git -v
查看分支
git 分支名
切换分支
git merge 分支名
把指定的分支合并到当前分支上
4.3.1 查看分支 ①基本语法
git -v
②实操案例
4.3.2 创建分支 ①基本语法
git 分支名
②实操案例
(创建一个test分支,图中我的test分支有内容是因为他会把主分支的内容复制了一份)
!git后面括号内有个蓝色的,说明当前分支仍处于分支
4.3.3 切换分支 ①基本语法
git 分支名
②实操案例
(括号内蓝色的分支为test)
4.3.4 修改分支 ①基本语法:vim 文件名
②修改
细节讲解:下 git 后会进入vim界面。 输入小写字母 i ,此时进入编辑模式,可以输入你想输入的内容。按下 esc 键,此时退出编辑模式,输入英文语法下的冒号 : ,再输入 wq 即可保存退出。
③查看本地库状态(git )
第一行on test说明此时不在主分支上,然后修改过后并没有add、、push等行为,显示红色(具体细节往前翻至3.3、3.4、3.5)
add后
后并查看(cat)
4.3.5 合并分支
切换会原主线发现并没有修改内容,仍然是原内容
①基本语法
git merge 分支名
②实操案例
(文件内容已修改,这里test分支是基于原分支上进行修改,因此合并十分顺利,没有产生冲突,具体内容看下一小节)
4.3.6 产生冲突 ①冲突产生的原因
合并分支时,两个分支在同一文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码的内容。
②制造冲突
先修改主线的内容
再修改test支线的代码内容
③产生冲突
(第二行显示冲突;第三行显示自动合并失败)
注意:下一行代码()中提示说明正在合并中
④手动合并
vim打开文件后
(这中间是当前分支的修改内容)
(这中间是产生冲突的分支修改内容)
手动合并很简单啊,只需要把你想要留下的部分留下,不想要的删除,之后再把这些特殊符号删除即可(这里保持代码行数不变)
这里我删除了三条分界线,第一部分的和第二部分的,然后esc,wq退出即可。
4.3.7 解决冲突
由4.3.6手动合并之后,我们还需要两步操作(add、)
①add(添加到暂存区)
②(执行提交)
注意注意!!!
此时使用git 命令时不能带文件名!!!
这里我尝试时加上了文件名,然后给git报错:不知道哪一个分支里面的demo.c
不带文件名之后成功合并,可以看下一行代码()中已经没有,而是
!!!这时候的主线还在上,所以手动合并的结果在上显示,并不会在test中有所修改。
4.3.8 删除分支
注意:当你在你要删除的分支上的时候,git是不允许你去删除分支的!
①基本语法
// 删除本地分支
git branch -d localBranchName// 删除远程分支
git push origin --delete remoteBranchName
②删除本地分支
如果你还在一个分支上,那么 Git 是不允许你删除这个分支的。所以,请记得退出分支:git 。
通过git -d
删除一个分支,比如:git -d fix/。
当一个分支被推送并合并到远程分支后,-d才会本地删除该分支。如果一个分支还没有被推送或者合并,那么可以使用-D强制删除它。
③删除远程分支
error: unable to push to unqualified destination: remoteBranchName The destination refspec neither matches an existing ref on the remote nor begins with refs/, and we are unable to guess a prefix based on the source ref. error: failed to push some refs to 'git@repository_name'
git fetch -p
-p的意思是“精简”。这样,你的分支列表里就不会显示已远程被删除的分支了。
4.4 创建分支和切换分支图解
创建hot-fix(热修)分支【热修是常用分支名称,本人为了偷懒就写了一个test】
将hot-fix分支合并至主线
总结:、hot-fix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。所以创建分支的本质就是多创建一个指针。
HEAD如果指向,那么我们就在分支上;如果指向hot-fix,我们就在hot-fix分支上。(在.git里面找到HEAD文件可以查看当前指针所指向分支)
所以啊,所谓的切换分支,其实就是移动HEAD指针指向不同的地方。(wok!真心累死我了,爆肝完第四章)