Git学习笔记(一)基础篇

Git是一款强大的分布式开发版本控制工具,支持本地和远程操作,可以非常方便地对不同开发版本进行控制管理。

我第一次接触Git是在一个网络公司实习的时候,mentor给了我一个教程[1]来学习基本功能。这个教程有操作部分,边做边学上手就挺快的。入门的朋友可以作为参考。我自己也是初学者,所以打算写这个Git学习笔记系列,巩固自己所学的同时,也在分享一些经验给大家。万事开头难,入门贵在由浅入深,循序渐进。尽管网上关于Git的资料铺天盖地,大都是深的浅的扎一堆,不适合入门学习。因此我在这里将会采取分层的方式,从基础到进阶到高级,有梯度地向大家介绍Git。

0.定义

本系列将分三个层次介绍Git,分别是(1)基础、(2)进阶、(3)高级。在后面的文章里,分别以L1L2L3表示这三个层次范畴的内容。另外,文章中如无特别说明,半角符号符合一般正则表达式规则,全角标点符号属于行文标点,全角括号"(" ")"表示概念或注释。

0.1基本概念

版本控制系统(Version Control System/VCS,L1)

Git是一个VCS。VCS管理着一个文件仓库(repository,L1),这个仓库保存了文件修改的历史版本(version,L1),并且可以让你将文件恢复到历史中的任意版本,因此中文称呼repository为版本库。在Git中,每个版本记录着某个时间节点上文件的快照(snapshot,L2)。你可以在不同的版本间切换。

分布式版本控制系统(distributed version control system,L1)

Git的一大特征即是它是一个分布式VCS。分布式VCS允许对版本库进行完整的拷贝操作,称为克隆(clone),这样就生成了另一份版本库,拥有和原版本库完全相同的历史。由此可见分布式VCS不必需要一个中央服务器来存储数据,充当中央节点。但一般来说,总有一个版本库充当着中央节点(取决于需要),存储在中央服务器中,被称为远程版本库(remote repository)。而其他克隆的版本库,分布式地存储着,通过一些操作与远程版本库保持同步,称为本地版本库(local repository)。这就是分布式的意义。
当用户得到一份本地版本库,就可以在它上面进行版本控制的操作了,包括提交修改、回退版本等等。

在一个版本库中,版本历史是串联在一条时间线上的,如果你把每一个历史版本看成一个节点,与它毗邻的版本分别为相连的前驱节点和后继节点,那么整个版本库可以看做一个“树(术语,属于<数据结构>)”。“树”的每一个“叶子”节点到“根”节点之间的通路,被称为一个分支(branch,L1)。实际上更广义的分支被定义为处在这条通路上的任意一个节点。用户可以创建不同的分支,在创建的时间节点前两个分支拥有相同的版本历史,在创建后,仅会在当前分支上增加版本历史。

0.2 基本术语

Branches,分支。选择一个分支在Git中称为checkout a branch。
Commit,提交。每次commit,将会提交代码到版本库,生成一个commit object。也就是“树”概念的一个节点。
HEAD,一种符号引用,指向当前所处branch。也就是checkout一个branch之后,有一个叫做HEAD的符号引用,指向这个branch。
Repository,版本库。
Revision,版本。表示一个version。Git通过commit object来实现一个revision。并通过一个160位SHA-1码来标识。
Staging area,待提交区。修改的文件一旦放入了staging area,就可以通过commit提交到版本库了。
Tags,标签,给一个revision取的别名。
URL,版本库地址。
Working tree,包含了版本库的文件集合。

§基础篇

1. Git流程

1.1创建Create

将已经存在的文件初始化,建立版本库

git init

将已经存在的文件加入到版本库

git add

克隆已经存在的版本库

git clone URL

1.2查看Show

查看状态(最常用命令)

git status

查看log

git log

查看文件变化

git diff

查看当前branch

git branch

1.3回退Revert

回退到某一个version,并以此在版本历史上产生一次新的commit。$id为此version唯一标识SHA1码

git revert HEAD/$id

将版本历史回退到某一个version,--hard选项表示彻底回退,删除之后的commit

git reset --hard

checkout一个version

git checkout $id

1.4 分支Branch

checkout一个分支

git checkout $branch_id

合并(merge)一个分支,缺省为合并到HEAD)

git merge $branch_id (to HEAD)

创建一个分支,基于$basec创建一个名为$new的分支,并切换到$new分支

git checkout –b $new $base

创建一个分支,缺省为基于HEAD创建

git branch $new_on_HEAD

1.5 更新Update

从远程版本库(最初被克隆的版本库,默认名为origin)中获取最新改动,改动不在本地提交成一次commit

git fetch

从远程版本库(最初被克隆的版本库,默认名为origin)中获取最新改动,改动在本地提交成一次commit

git pull

1.6 发布Publish

提交改动到本地版本库

git commit

提交本地版本库到远程版本库

git push

给HEAD打标签

git tag


参考资料:

[1] http://www.vogella.com/articles/Git/article.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值