Git版本控制爬坑日记(二)
先上Git工作流程图
管理暂存区的文件
暂存区的文件,也就是相当于是小推车里面的文件,
- 当我们第一次将文件放到暂存区里,可能会有放早了的情况,我们可以使用
git rm --cached a.html
的方式将文件从暂存区里面取出。 - 当我们是第二次提交,也就是说仓库里其实已经有了这个文件了,我们从暂存区里取出的代码就要使用
git reset HEAD a.html
的方式取出 - 如果我们要回退前一个版本,可以使用
git checkout -- a,.html
的方式,就会回退当上一个版本
其实这些操作在我们查看状态的时候都会有提示代码的,如下:
alias命令别名提高工作效率
在现实开发中,像git add
,git status
,git commit
,git log
等等这些git操作我们要使用非常非常多次,如果我们想要提高效率,就可以设置一些别名来进行操作,使用的就是alias命令,在git的config配置文件下进行配置如:
- 设置全局命令:
git config --global alias.s status
这个的意思就是s代替的status,所以我们只要输入git s
效果和git status
的效果是一样的 - 如果只想某个项目里面设置这种alias快捷指令,只需要cd到那个项目里,单独修改那个项目的config配置文件即可,如:
git config alias.l log
- 也可以通过编译器打开这个文件夹,手动进行输入
分支的理解
如上图,git默认是有一个master主分支,分支的出现也能够让我们的团队能够并行开发,大大提高开发的效率我们项目完成之后上线的也是主分支里面的内容,一些其他的新开发的功能我们会选择新建一个分支来进行开发,这样做的一个好处是能够让master也就是最终发布的项目的分支保持干净的状态,也能够更加体现协同开发,代码的耦合地也大大的降低了。
其他分支完成了功能或者修复了Bug之后只需要将完成的代码合并到主分支即可。
分支branch的基本操作
在我们设置分支之前,必须是先提交一次代码,因为只有提交了一次之后仓库才会默认的有一个master主分支,只有在有主分支的情况下才可以创建其他的分支
- 使用
git branch 分支名
创建一个分支,git checkout 分支名
切换分支,在切换了分支之后写的代码如果没有合并到master分支就切回master分支的时候是看不到的,可以理解为回到master分支的那个时间节点的时候分支还没有创建。 - 我们可以使用
git checkout -b 分支名
快捷的创建一个分支,并切换到该分支。
分支操作使用的非常的频繁,一定要理解,多看前面的那个图,在分支的代码完成之后一定要记得合并到master主分支。
分支的其他操作(合并分支、删除分支)
前面一个知识点说了,分支在没有合并到主分支的时候,主分支是看不到其他分支上修改或者新创建的文件的。所以我们就需要合并分支,当分支功能已经合并,分支也就没有存在的必要了,这时候就可以删除掉分支
- 合并分支,首先是要切换到master主分支(这个不能忘),然后使用
git merge 分支名
就可以实现合并分支,合并分支的速度非常快,本质上其实就是将最后一次提交的指针指向master即可,所以非常的快 - 删除分支,使用
git branch -d 分支名
实现删除一个分支,这里的-d 就可以理解成是delete的意思。
正确的处理分支冲突
分支冲突基本是只要使用了分支不出意外一般都会发生冲突,因为是多个分支操作了同一个文件,在最终合并的时候系统不知道要按照哪个来进行合并,这个就是分支冲突
所以在发生冲突的时候我们要先进入冲突的文件,对冲突的文件进行操作一下,就可以解决冲突了
如果两个都想要保留 只要删除那些箭头和等号即可,如果只想要某个,删除掉另外部分即可,他很明确的标出了两个分支都这个文件的修改 用了等号隔开。
–merged --no-merged以及强制删除分支
前面学习了查看分支我们可以使用git branch
,下面学习通过一些特殊的指令查看已合并的分支和未合并的分支
git branch --merged
查看已经合并的分支,注意:新创建的赶紧分支也是属于这个已合并的分支,因为新分支的内容和主分支是完全一致的,一旦新分支文件发生改变,就不属于已合并的分支了。git branch --no-merged
查看当前未合并的分支。
查看这些已合并未合并的意义是为了能够让我们更好的删除分支,理论上,分支只要合并了,就没有存在的必要了,我们就可以使用git branch -d 分支名
进行删除了,但是这个指令只能够删除那些已合并的分支,未合并的分支需要使用git branch -D 分支名
来进行删除
git branch -D 分支名
是一个非常危险的一个操作,所以使用的时候一定要谨慎谨慎再谨慎,否则会造成前功尽弃的可能。
标准的分支操作工作流
如上图,在现实的开发过程中,会有非常非常多的分支,因为Git管理分支是通过指针的方式,所以创建或者合并分支的速度是非常非常快的。
真正到时候到每一个程序员手上的工作可能是如图的UI,JS这种在很细的分支上,程序员将这些分支拷到电脑里,进行开发,开发完成再推送到分支上。
如果整个功能模块开发完成,测试了也没有什么问题了,就一层一层的合并上去,最终放到master分支上。
所以master分支上的代码是相对来说稳定的,这个就好比于小米手机又稳定版和开发板,开发板功能比较多,比较新,稳定版相对稳定,少了一些功能。
stash临时存储区的操作
当我们在做某个功能模块时,可能项目经理一个电话告诉我们登陆模块或者某个其他功能模块有Bug需要马上修复,这时候我们就得切换分支,但是当我们提交了一个代码之后,并且add .了,也就是说小推车上还有文件,这时候没有完成也不能修改,系统也不让切换分支,这时候我们就可以使用git stash
来讲将当前的小推车以及一些其他东西存放到这个临时存储区。这时候就可以切换分支了
在另外功能完后之后再回到之前的分支,使用git stash list
查看已有的暂存记录,使用git stash apply
默认会恢复最近一次保存到暂存区里的状态,我们也可以使用git stash drop 记录名
来删除记录.
如果觉得比较麻烦,其实还可以使用git stash pop
默认恢复最近一个暂存的状态,并且删除掉这个暂存的记录。
总结
以上的内容就是今天搬砖学习的知识,git的知识其实并不会很难,也是蛮容易上手的,和其他的知识不同的是git只要我们开始做项目,几乎是每天都会用到,所以其实上手了以后是不容易忘记了。 哎~~ 学习之路真的漫长,加油吧~