跟着小庆一起学git

作者: shaneZhang 分类: 互联网技术 发布时间: 2014-06-08 21:26

1 创建版本仓库

什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

在某一个目标的文件夹下,我们使用 git init 来初始化一个版本仓库

2  添加需要版本控制的文件

创建好版本仓库之后,那么我们就需要添加需要进行版本控制的文件,当然一般情况下是代码.我们可以通过git add readme.txt来进行添加单个的文件,也可以通过git add * 来批量添加某一个文件夹下的所有子目录和文件

3 进行代码的提交

用命令git commit告诉Git,把文件提交到仓库。 我们一般使用git commit -m ‘添加文件’,用-m参数来添加对本次修改的一个提示描述,当然我们可以随时使用运行git status命令看看结果。

4 一些常用的通用使用命令

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset –hard commit_id。穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

我们使用git rm test.txt来删除控制版本库中的单个文件,此时,如果发现删错了文件,那么git checkout — test.txt就可以恢复到删除之前的文件。git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

git 添加远程仓库,当然限于国内的使用状况,我们一般使用https的远程仓库,比如github和oschina的git.

我们使用git remote add origin https://baidu.com/baidu.git 那么我们本地的版本控制仓库就绑定了一个远程的版本仓库,我们可以自由的像远程push 和pull

当然在这里也提一下,git remote remove origin https://baidu.com/baidu.git 就可以删除绑定本地的远程仓库

通常我们在使用一个远程的仓库时候首先要拉取一下代码,此时用git clone https://baidu.com/baidu.git就可以将远程仓库的整个项目代码拉取到本地的工作区,然后我们在此基础上进行后续的版本控制

关联后到远程仓库后,使用命令git push -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

5分支的作用

分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

但Git的分支是与众不同的,无论创建、切换和删除分支,Git在1秒钟之内就能完成!无论你的版本库是1个文件还是1万个文件。

每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。

一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点

我们使用git checkout -b dev就创建了一个和master平行的dev分支并且切换到dev 分支 ,等同于一下的两行代码,git branch dev标识创建dev分支 ,git checkout dev标识进去dev 分支里面git branch命令可以列出所有的分支,并且在当前的分支前面添加一个*

6 巧用merge

我们使用git checkout master就可以切换到master分支里面,此时如果我们想dev里面的代码合并到master里面,那么我们该怎么办呢git merge dev可以快速的合并dev里面的代码到master里面,当然这只是一种快速合并的方式,如果此时不冲突的话,那么我们可以使用git branch -d dev来删除dev分支了,当然如果合并出现冲突的话,那么我们就需要来解决冲突

7 git tag 管理

命令git tag name用于新建一个标签,默认为HEAD,也可以指定一个commit id;
-a tagname -m “blablabla…”可以指定标签信息;
-s tagname -m “blablabla…”可以用PGP签名标签;
命令git tag可以查看所有标签;
命令git push origin tagname可以推送一个本地标签;
命令git push origin –tags可以推送全部未推送过的本地标签;
命令git tag -d tagname可以删除一个本地标签;
命令git push origin :refs/tags/tagname可以删除一个远程标签。

8解决冲突

git 在合并或者提交的时候,特别是多人同时修改一个文件的时候,难免就会出现冲突,如果出现冲突了,我们应该怎样来解决冲突呢?这个问题楼主也一直在探索中,可以从代码中查看那些代码是冲突的,如果只是双方都添加了代码,那么在冲突的位置把冲突标记去掉就Ok了,如果有删除有添加,那么建议还是用软件对比工具,来查看具体修改了哪些地方,然后修改后再提交。

本页面支持繁体中文友好显示:跟着小庆一起学git

如果觉得我的文章对您有用,请随意打赏。如果有其他问题请联系博主QQ(909491009)或者下方留言!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注