GIT进阶

一、创建版本库

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

瞬即GIT建好了一空仓库。然后添加文件到仓库,1.使用git add,可多次使用,2.接着用git commit完成。

二、GIT工作区和暂存区理解

工作区:就是电脑建立仓库所在的目录。

版本库:工作区的隐藏目录.gif,GIT的版本库里存了很多东西。

暂存区:版本库目录下的为stage(或者index)文件。

GIT为自动创建第一个分支master,以及指向master的指针HEAD。

git-repo

在创建版本库时,命令git add就是将工作区的修改提交至暂存区;命令git commit就是将暂存区的所有修改提交到分支中。

三、git 修改 管理/撤销/删除

git add 就是将工作区修改提交至暂存区。

git commit 就是暂存区提交至版本库分支。

可以用“git diff {HEAD(版本库中的一个指针分支)} -- readme.txt”命令可以查看工作区和版本库里面最新版本的区别。

git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

git reset HEAD readme.txt 把暂存区的修改撤销掉返回工作区。

git reset 可用于版本回退,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,

所以写成HEAD~100。

从旧版本回到新版本:git reset --hard “commit id”(版本id),用git reflog查找id.


四、冲突解决


五、分支管理

1、主分支

首先,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布,默认叫做Maste

r。它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发。

2、开发分支

主分支只用来分布重大版本,日常开发应该在另一条分支上完成。我们把开发用的分支,叫做Develop。这个分支可以用来

成代码的最新隔夜版本(nightly)。如果想正式对外发布,就在Master分支上,对Develop分支进行"合并"(merge)。


使用--no-ff参数则是会执行正常合并,


还可以创建临时分支、功能分支、预发布分支、修补bug分支。

六、标签管理

在Git中打标签非常简单,首先,切换到需要打标签的分支上:

$ git branch
* dev
  master
$ git checkout master
Switched to branch 'master'

然后,敲命令git tag name就可以打一个新标签,默认标签是打在最新提交的commit上的,或者针对commit号标签tag。

$ git tag v1.0

$ git tag v0.9 6224937

可以用命令git tag查看所有标签;还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

$ git tag -a v0.1 -m "version 0.1 released" 3628164

如果标签打错了,也可以删除:

$ git tag -d v0.1
Deleted tag 'v0.1' (was e078af9)

因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

如果要推送某个标签到远程,使用命令git push origin tagname:

$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:michaelliao/learngit.git
 * [new tag]         v1.0 -> v1.0

或者,一次性推送全部尚未推送到远程的本地标签:

$ git push origin --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 554 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:michaelliao/learngit.git
 * [new tag]         v0.2 -> v0.2
 * [new tag]         v0.9 -> v0.9

如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:

$ git tag -d v0.9
Deleted tag 'v0.9' (was 6224937)

然后,从远程删除。删除命令也是push,但是格式如下:

$ git push origin :refs/tags/v0.9
To git@github.com:michaelliao/learngit.git
 - [deleted]         v0.9
  • 命令git push origin tagname可以推送一个本地标签;

  • 命令git push origin --tags可以推送全部未推送过的本地标签;

  • 命令git tag -d tagname可以删除一个本地标签;

  • 命令git push origin :refs/tags/tagname可以删除一个远程标签。













  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值