Git是我们日常开发的必备工具,是团队协作的利器。Git使用广泛,而之所以如此流行,主要和它的一些突出的优点分不开。
我们在使用Git时,无论是从远程仓库clone代码,还是把本地的代码推到远程的新仓库,都是完成的克隆一份代码。相当于是复制了一份代码到别的地方,也就是备份。
而且Git是去中心化的,这个去中心化简单理解就是每一份代码都是可以独立编辑使用的,不会因为某一个机器上的代码丢失了,而导致所有人都丢失代码或无法工作。
在 Git 中的绝大多数操作都只需要访问本地文件和资源。
举个极端的例子,假设公司的开发团队的代码都托管在GitLab上,如果有一天,GitLab突然挂了不能用了,会出现什么情况?实际上对我们开发影响不大,因为我们每个人的电脑上都有一份代码,代码并没有丢失,大家还是可以继续开发。
有影响的是团队协作,大家没法同步代码了,也就是把大家开发的代码合并在一起看效果。而这个也很容易处理,因为我们可以自己搭一个Git服务器,这个也是比较简单就能实现的。
Git存储了跟踪文件的每次提交的快照,我们每次提交一次(commit),Git就保存了一次。以后我们可以随时回到某一次提交(Commit)。使用git log
命令可以查看当前分支的所有提交记录。
这里也引出了一个Git使用习惯,就是即时提交(Commit)。只有即时提交了,后续如果发现代码有bug,才能回滚到最理想的位置。当然也不是随便写几行就提交一下,那也是蛮累的。主要是一些必要的节点,比如完成一个小模块小功能等。
Git使用起来也比较简单,既可以用命令行也可以用第三方的工具,比如Android Studio自带的Git插件,Mac下的Sourcetree等。但是尽管像Sourcetree已经做得很人性化很简化了,在实际使用过程中我们还是难免碰到一些奇怪的问题,有时候是软件使用不熟悉,特别是使用一些相对高级一点的功能,比如回滚,合并冲突等。
我之前也是很依赖Sourcetree,一来是因为如果用命令行,需要记住很多的命令;二来是因为Sourcetree这样的软件相对来说比较直观,心里更踏实一些。
直到有一次,用Android Studio的Git插件推送的时候,推错分支了!然后为了回滚,在Sourcetree上忙了好一阵还是没有抹掉“犯罪证据”!后来还是同事帮忙弄的,很是尴尬!
这次教训让我慢慢开始切换到用Git命令行为主,Sourcetree为辅的路子上来。现在基本没有Git的问题困扰了。
正是基于以上的几点,我准备把自己最近学习到的一些Git知识总结记录下来,会分为几篇文章,希望自己以后碰到Git问题能快速的找到原因并解决,也希望对大家有所帮助。