现在前面的话
从十月份上班之后,手指就特别不灵活,由于工单赶得比较紧,所以每天敲代码,就特别多,由于操作习惯和姿势的问题,导致左右手同时“残废”,左手大拇指,小指,右手大拇指都有强烈的疼痛感。这样一下来,就导致敲键盘困难,然后输入困难,最后的结果是,工作效率下降,产出低......
所以作为一个合格的软件工程师,必须要有敏捷的头脑,还有有强劲的体魄。
废话不多说,进入今天的正题。
由于测试同学在使用git方面出现了或多或少的问题,导致测试不流畅,测试时间延期。为了解决这些看似不大,但是非常关键的问题,如何正确的,切换分支,特意做以下总结和分析,若有不周到地方,请指正。
宣传语
历经两个半月的准备,三次大改版,十七次小改版。le1024终于要和大家见面了。
le1024每天推荐1~3段,有趣、有爱、有故事的视频。
为您工作、学习、生活之余增加一点快乐的感觉。
1、神马是Git
Git是目前世界上最先进的分布式版本控制系统(没有之一)
Git的特点,简单来说:高端大气上档次
版本控制系统是神马东西?
想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把之前的文件“另存为”重命名为一个新的word文件,再接着该,改到一定程度,再另存为一个新文件,这样一直改下去,最后你的Word就变成了下面这个样子:
so, 每个人都从这个阶段走过,改论文的痛苦,谁该谁知道。
那么,Git就是做这件事情的,它会保留你每次修改,并且可以自由前进(重新编辑),后退(查看旧版本)的操作。让这种文档编辑,变得so easy。
2、如何安装Git
1、Ubuntu
sudo apt-get install git-core
或
sudo apt-get install git
2、Mac OS
-
首先确保安装有
Homebrew
, 倘若没有安装,执行下面命令ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
-
使用
Homebrew
安装软件brew install git
Git安装完之后,需要配置
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
这个配置,是机器的区分号,也是每一个代码提交者的代号。
3、Git三棵树
你的本地仓库由 git 维护的三棵“树”组成。
第一个是你的工作目录
,它持有实际文件;
第二个是 暂存区(Index)
,它像个缓存区域,临时保存你的改动;
最后是 HEAD
,它指向你最后一次提交的结果
4、如何切分支
1) 如果 暂存区(Index)
,没有任何修改的情况下,直接
git checkout 目标分支xxxx
2) 如果 暂存区(Index)
,新增加了文件
两个分支 test1102 和 master,如果test1102新增加的文件,在 暂存区,并没有进行commit操作,同上
git checkout 目标分支xxxx
这样不仅可以切换分支,并且还可以把新创建的文件,带到master上,并且还在 暂存区
3) 如果 暂存区(Index)
,不仅有新增加的文件,并且还有新修改的文件,执行上述命令是切不了分支的,你会看到如下的提示:
有如下几种解决方式:
1、暴力、鲁莽型
优点:快速,简洁。 缺点:暂存区
修改文件不会保存。
2、温柔、周到型
温柔型,保存了暂存区
中的所有修改,并且安全把所修改内容带到目标分支。具体操作如下
stash
之前
stash
ing,进行stash
操作时,需要注意保持 stash
堆栈的干净,整洁。
切换到目标分支,然后
stash
pop 出来遇到这种情况,就要谨慎操作。因为有代码冲突,明显标志
both modified
所以先要解决冲突,为了不给开发同学添加额外的负担,我们自己动手。 其实在控制台中已经有充分的提示
git add <file> ... 不推荐
git reset HEAD <file> ... 可以推荐,安全的
我使用 git reset HEAD .
, 最后的结果如下。
git stash作用
:储藏可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。参考这里
优点:保存完整的修改记录。 缺点: 操作麻烦,容易出错。
3、破坏型
git add .
git commit -m "balabala..."
git checkout 目标分支xxxx
强烈不推荐这种,做法。这样做危险系数很大,如果不小心做了push操作,开发很生气,后果很严重!!!
4、诡异型
- lock 文件,切换不了分支
解决办法,找到这个文件,使用 rm -rf xxxx
删掉他即可。
- 内存不足,切换不了分支
解决办法,只能让运维删除一些其他文件。
4、Git 有用的命令
1、git gc
具体参考 git gc
优点:可以使得切换分支,变得快一些。
2、git branch | grep 201408 | xargs git branch -D
参考这里
批量删除分支之前
执行命令之后
删除分支之后,不会影响开发的代码。
5、注意
只要不进行任何 git add ...
和 git push ...
就不会印象开发的分支,不会对他们的代码造成影响。
参考:
http://rogerdudler.github.io/git-guide/index.zh.html
http://www.cnblogs.com/renkangke/archive/2013/05/08/3067462.html
http://scriptogr.am/pison/post/git
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000