以TortoiseGit在windows上的使用为例,主要进阶使用有:分支,标签和忽略特殊文件
分支与合并分支
什么是分支?
一只猫处于叠加态的猫让世界变成了两个宇宙,而在git中,我们本来的宇宙是master,可以看见右键提交时,我们是提交给master的。假设在这分支中,猫是活的。
而当我们想要猫是死的时候,我们就需要一个新的分支,这个分支可以叫DeadCat,在这个分支中,创建起始它与master是一模一样的,但我们在这条分支上的所有修改,增减都不会影响到master,他们是平行的。
分支就是一个让开发者不用复制就能复制的功能(有点拗口)
我们为什么要使用分支?
假设这样一个场景,你正在开发一个项目,你想到了一个绝妙的主意,准备给该项目加一个能遥控饮水机冷热交替出水的功能,这时候你的上司——麦克,过来找你,让你停下手头的工作,马上给这个项目加一个能遥控座椅飞起来的功能,因为客户就想要能遥控座椅飞起来。
那么你要怎么办?停下手头的饮水机功能,保存,复制这一个版本库,迁移到另一个工作区,再把版本追溯回没有饮水机的版本,开始做遥控座椅飞起来的功能?
显然你不用这么麻烦。
直接右键创建新的分支,切换过去,追溯,OK。而且当你花了十五分钟把飞天座椅功能完成后,还可以右键一秒切回饮水机,继续你绝妙的创意。
分支功能在SVN中也是存在的,但我去查找了SVN中的分支使用教程后发现,他们最短的也要下拉五六个屏幕,配上十几幅图,几千字才能解释完如何使用分支功能,git中的分支使用则简单的多,并且SVN中分支切换的速度与git完全不能比,
我们要如何使用分支?
以饮水机和飞天座椅的故事来模拟git的分支使用:
小明从远程仓库上克隆了项目,准备用两天的时间给该项目增加一个遥控饮水机冷热交替出水的功能,他做的很快,已经写了几千行代码了
这时它的上司麦克突然来找他说:“小明,我们的客户需要一个能遥控座椅飞起来的功能,你最迟明天给我。”
小明很无奈,但客户就是上帝,于是他只能放下饮水机的工作,保存,然后提交给本地。
然后小明右键选择创建分支
给分支起个名字叫FlySeat
完美,这时小明又一次右键,选择了Git Branch的FlySeat,0.5秒不到的时间,小明就从master的宇宙来到了FlySeat的宇宙。
此时的小明并没有犹豫,直接在选中文件右键追溯,文件就回到了最开始的版本,小明开始紧张的工作。
十五分钟后,小明完成了飞天座椅的功能,推送给了麦克。他舒了口气,起身接了杯水,抿了一口后突然皱了皱眉头,因为这不是他想要的不冷不热的37.5°温水,而是23.5°的冷水。他强忍着寒冷喝完了这杯水,又想起来了他未完成的饮水机功能,于是他坐回了电脑前,右键Git Branch切换回master。
熟悉的画面又回来了,小明决定加班到晚上两点完成这个功能。
凌晨两点,小明完成饮水机的功能,他喝着37.5°的温水,突然又有了一个绝妙的主意。他想把飞行座椅和饮水机两个功能合并,然后把饮水机绑在座椅上,就能做成飞天饮水机,只要按下一个按钮,就可以让饮水机飞过来冷热交替出37.5°的温水。简直完美!
说干就干,两个功能并没有冲突的地方,小明直接右键选择合并
然后选择FlySeat
合并,之后整个项目就变成下面这样了
飞行饮水机就完成了,小明非常满意,右键“切换/检出”,点击分支名后的,选中了FlySeat分支后右键,删除了该分支,让心情更加清爽
标签
标签的作用就是打个记号,比如一版项目完成,打个标签,二版项目完成,打个标签.等到提交多了以后,你想在日志里找到想要退回的版本时,就会发现标签的好处了
所以完成一个重大功能或一个版本时打个标签标记是一个良好的习惯,当然不打也可以,只要你不怕麻烦。
那么如何打标签呢?右键啊。
忽略特殊文件
在开发过程中,有时会产生一些bak文件,当我们提交时,不会想把这些文件也提交上去,那么要如何忽略这些文件呢?
选中你想忽略的文件,右键,然后如下图操作,你可以选择只忽略这一个文件,也可以选择忽略所有后缀名跟这个文件相同的文件
这样就没人知道明天的彩票中奖号码是多少了