git就是代码库,那么如果你要问什么是代码库?你可以想一下数据库~数据库是放数据的,代码库自然是放代码的。。
~具体为什么要学这玩意儿,因为上手之后确实很好用,我目前的测试代码均用git在管理,而且目前国内很多公司也已经在使用git了,要是在互联网界不会git,那么你可能已经out了~
首先,搭建git环境,我自己是用mac的~所以只能介绍一下mac的,mac么,本来就预装了git…基本不用搭,然后去git库搞一个SSH,就可以在终端敲命令行了,如果你还是要装一下git的环境,那么我推荐用homwbrew装吧,mac环境管理的神器,我的mysql,sqllite,gradle等等都用他装,非常好用,有兴趣可以装一个好好了解一下,用它装git也是非常简单的,直接brew install git,成功后就可以直接使用了
装好了git,你需要一个git库来练手,我推荐github,嗯,就是很有名的github,去申请个账号吧,然后跟着步骤去搞一个SSH
一般来说,先要建立关联,最简单的办法就是,通过终端进入你想要放代码的根目录,然后输入:
git clone ssh链接
ssh链接的代码库就会马上克隆到你终端所在的目录,而且与远程的git代码库建立关联。
如果有人在远程库提交了代码,那么你可能需要同步到本地,怎么做呢?输入:
git pull
这个命令会将远程代码的分支名同步到本地,而且会将当前所处分支的代码同步到和远程一致。ok,可能有人要问什么是分支了,那么现在将一下什么是分支。
如果你是个新手,刚新建了一个崭新的代码库,那么你一定看到过master这个东西,ok,它就是你的master分支。可以尝试输入:
git branch
此时,应该会输出一个master,那么它就是你的master分支了。
我们代码库通常都要面对多个人同时开发多个功能,那么假设大家都在一个分支上工作,如果有一个人提交了不稳定的代码到了这个分支上,那么这份代码发布到测试环境后将会变的极不稳定,如果此时有一个线上的bug要马上修复并且发布,就无法避免的要把这份有问题的代码发布上去,那就会让事情变的更严重,总之,这种事是非常痛苦的。那么如何解决呢?答案是:开分支。
每个分支上的代码是不同的,一般来说,每个新功能都会开出一个独立的分支去开发,比如我要做一个email功能,ok我就会去从最稳定的线上代码A分支开出一个独立的分支去做这件事,当这个功能相对稳定后,我会将代码合并到分支B,有些依赖email分支的功能就可以一起做一些联调之类的事情了,直到没问题后才能合并到稳定分支A。那么这里的分支A一般来说就是master了,分支B一般来说就是dev分支了。下面说一下如何开分支
开分支很简单,比如我现在需要在master上开一个分支出来做一些开发,那么首先切换到master分支上,一般会担心有人合并过代码到远程master分支,所以最好先拉取一下代码,输入:
git pull
git checkout mater
然后如果看到有这样的提示:
Switched to branch 'master'
Your branch is behind 'origin/master' by 19 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
那么说明切换到master成功,但是远程的master有19个提交,此时你需要输入一下git pull来把远程代码拉取到本地,再次输入:
git pull
如果你切换分支看到的是:
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
那么说明你与远程的master分支代码一致,不需要拉取代码。
ok,现在我们来开分支。比如我们现在要开一个叫dev的分支,那么输入:
git checkout -b dev
此时的输出应该是:
Switched to a new branch 'dev'
此时你就切换到dev分支了,可以输入:
git branch
你应该可以看到master和dev两个分支,在dev的前面有个*号,表示当前所处的分支。你可以通过命令来切换分支:
git checkout master
就可以将分支切换到master,可以通过git branch来查看。
此时我们的dev分支只是一个本地分支,在远程仓库看,还没有dev分支,那么要如何将dev分支推送到远程呢?请先将分支切换到dev,然后输入命令:
git push origin dev
然后去远程仓库查看,就可以看到远程也有一个dev分支了。在git中,origin往往代表远程仓库。
现在将分支停留在dev上,然后新建一个文件,或者随意改动一些代码。查看一下当前分支的状态,命令为:
git status
此时会输出当前分支的状态,你可以看到刚才改动的文件列表出现了。我们现在需要讲它提交到dev上
首先,加入这些文件到准备提交区域,命令为:
git add --all
将全部文件加入到备提交状态,然后输入:
git commit -m "提交日志信息,输入本次提交的大致内容即可"
此时提交的内容就已经提交到了本地的dev分支中,然后我们可能需要将它提交到远程dev仓库,输入命令:
git push
此时就会将代码提交到远程的dev分支了。
这时候如果我们将代码切换到master,会发现根本看不到刚才dev做出的修改,这就是分支的好处之一了。如果此时需要将dev分支的代码合并到master,那么请先将分支切换到master,然后输入命令:
git merge dev
就可以将dev的代码合并到master,此时再看刚才dev做的修改,就可以看到咯。
好吧,刚才的合并是有点随意了,把不该合到master的东西也合进来了。悲剧啊,那怎么办?回退~
如何回退呢,需要先查看一下日志:
git log
我们可以看一下提交日志,你会发现每个提交都有一个commit id,比如:
commit b3204f1dc2f7d57042cdd67c1dda2a0f9549c864
这个就是提交号了,找到我们需要回退到的提交号,然后输入:
git reset --hard b3204f1dc2f7d57042cdd67c1dda2a0f9549c864
就会将代码回退到这次提交的状态
常用的就先讲这么多了~剩下的下回分解