在上一篇日志中,记录了关于GIT的一些基本的操作,这些操作基本能够满足日常开发之用。看到了吧,GIT使用起来也就这几个命令就够了。当然,GIT还有一些强悍的,而又得小心对待的命令。
在这一节中,将会看到GIT的一些比较凶猛的命令,一般是 support 或者integrator用的比较多,而一般的开发人员不需要,也最好限制使用这样的命令。
1. 后悔莫及 (Git reset & revert)
当developer修改了N多个文件之后,突然发现做错了,或者根本不需要这样的功能,那么这个时候Reset就能帮我们排忧解难。GIT reset 有3种不同的使用方式,对应着不同的效果。前面一片日志 提到 GIT的三驾马车: working folder, index 以及 local repository。Reset的3种不同的使用方式跟GIT这三驾马车紧密关联
2. 另立门户 (Git branch & checkout)
在Clearcase里面,每一个release都需要创建新的stream,也就是说 developer都需要去重新再克隆一整套代码下来,费时间又费空间。GIT里面就木有这回事啦! 一个release只需要有一条branch就可以啦,而branch也就是一个指针而已,指定当前的branch指向哪个commit。当team pc上面已经有新的branch之后,我们可以用下面的命令去创建一个 跟踪 remote branch的local branch : "git branch R2.0 origin/R2.0".
很多情况下,developer是需要多个迭代同时开发的, 老的版本可能就是fix bug,而新版的就可能是新功能的开发。这个时候就需要经常在不同branch之间切换,命令 "git checkout R2.0" 可以把我们带到 branch R2.0 下面。但这里需要特别注意,在切换branch之前,如果有代码修改,一定要commit,至少加到index。否则,这些修改的文件将会在 没有任何征兆的情况下 “意外”地被带到新版本里面去。比如R1.0里面修改了文件A,但没有commit,也没有add index,就之间checkout R2.0,这个时候文件A的改动会自动出现在R2.0. 这可不是我们想要的!!!
3.桃园结义 (Git merge)
上面说到了大家经常会同时开发多个迭代的代码,那么当旧迭代的代码开发完成后,我们需要将这些个改动同步到新的迭代里面去。手工拷贝肯定是一个“龌龊”的行为的。 这时就用到了GIT merge。这个命令可以将一个branch里面的代码自动merge 到第二个branch里面去。比如当前工作的branch是R2.0, 而在R1.2的时候有一些改动还没有同步过来,这时就可以 "git merge R1.2",这样 GIT就懂得将 R1.2 的代码改动 也在R2.0 执行一次。当然,如果R1.2修改的文件在R2.0也有修改,并且改的是同一行,那么这时就需要自己手工去选择要的是哪一版本的代码.这里需要稍微注意一下的就是 要清楚地知道 要将谁的代码merge到谁里面去
4. 清理门户 (Git cleanup)
前面说过 GIT reset hard是不会删掉新增加的文件的,而当新增的文件很多的时候,而我们又真的不想要这些的时候,我们可以出动GIT 清道夫 cleanup。这个命令会将working folder下面所有没有记录在案的文件一一删掉,还我们一片净土~~~可以使用下面的命令进行出动清道夫 “git cleanup -x ”
前面这几篇日志就基本将GIT的常用以及稍微复杂一点的命令都记录下来了,足矣日常开发以及support,甚至troubleshooting。
在接下来的日志里面,将会记录GIT跟其他工具的一些整合以及使用...