<sub id="rd9ph"><var id="rd9ph"></var></sub>

    <dl id="rd9ph"><nobr id="rd9ph"><menuitem id="rd9ph"></menuitem></nobr></dl>

      <sub id="rd9ph"></sub>

        <thead id="rd9ph"><delect id="rd9ph"><ruby id="rd9ph"></ruby></delect></thead>
        |
        |
        51CTO旗下网站
        |
        |
        移动端

        详解Git的基本术语和命令

        本文向您介绍Git的流程架构、关键术语和基本命令,以帮助您在日常使用Git进行版本控制时,实现更高效的代码管理。

        作者:陈峻编译来源:51CTO|2019-06-19 09:00

        详解Git的基本术语和命令

        【51CTO.com快译】在软件开发界,经常有这么一种说法:“在您想进阶到高级水平之前,请先了解和掌握正在使用的软件工具的各种技术术语与操作命令。” 同理,了解Git的工作流、及其关键概念,将有助于您在日常使用Git的版本控制系统时,实现更高效的代码管理。

        到底Git是什么?

        与其他版本控制系统(VCS)一样,Git可用于跟踪同一条数据信息(或文件类型)的不同版本。

        然而,Git之所以能够从其他VCS中脱颖而出,主要得益于它的分布式本质,或称为分布式版本控制系统(distributed version control system,DVCS)。在该环境中,每个开发人员的主机都充当着“节点(node)”或“集线器(hub)”的角色。

        为了维护数据的完整性,Git将每个文件系统的更改都视为新产生的数据。因此,Git的基本框架结构是由各种分支所组成,而用户的初始项目则位于“主”分支上。此法不但促进了有效的功能性开发,还实现了简单的错误修复与代码审查。同时,频繁的同步工作,可以持续在对等的节点之间进行合并等操作。

        Git是由Linus Torvalds开发的,其背后的思想主要体现在“速度”上。“易于分支与合并”、“数据完整性”和“更大规模的协作”是其三大特点。Git能够在本地存储用户整个项目的历史记录,并允许用户快速地访问到某个旧版本的数据。

        Git的工作流:Git文件的三种状态

        详解Git的基本术语和命令

        众所周知,许多VCS都用到了双层体系结构:存储库和工作副本。但是,Git选用的却是三层结构:工作目录、暂存区和本地存储库。因此,对于同一段代码,Git通过三个层面,提供了以不同时间间隔和版本来保存当前工作的方式。

        同时,Git利用三个阶段,在每个层面上存储相同代码(或对象)的不同(也可以是相同)状态。

        首次,在初始化(或为克隆)阶段,Git项目会在本地计算机上创建一个“工作目录”,以便用户开始编辑源代码。

        在源代码的第一阶段,您既可以自由地修改文件和目录,又能够选择您喜欢的编辑器来添加、删除、移动、重命名或复制它们。当然,我更喜欢使用vim,这一最有效和最强大的文本编辑器(请详见https://www.vim.org/)。

        一旦您完成了本次编辑,就可以使用“Git add”命令来暂存自己的修改,即:在“暂存区域”中进行“索引”,并显示下一步将要提交的内容预览。

        接着,当第一组代码已被暂存到Staging区域中之后,您就可以在工作目录中进行更多的编辑了。在此,工作目录和暂存区域将具有当前项目的不同快照(或称版本)。

        为了同步上述两个阶段,您只需通过Git add来暂存自己在工作目录中的最新修改便可。

        除了添加代码的更改,如果您想撤消索引中的任何变更暂存的话,则需要执行不同的Git命令。

        而如果您在此阶段并不需要进行任何更改,那么就可以通过“Git commit”,来通过提交的方式,将代码移动并存储在本地的Git存储库之中。

        也就是说,提交命令可以确保在上述所有三个阶段中的项目都具有相同的快照,并让Git的三个阶段彼此保持同步。

        另外,“Git status”命令可以显示当前的工作树状态、以及您的文件所处的阶段。

        Git的关键术语与命令

        您可能以前使用过一些比较流行的VCS,它们包括:CVS(并发版本控制系统,http://savannah.nongnu.org/projects/cvs),SVN(Apache SubVersioN,https://subversion.apache.org/),ClearCase(https://www.ibm.com/us-en/marketplace/rational-clearcase)和BitKeeper(http://www.bitkeeper.org/)等。虽然Git也是一种VCS,但是它使用了自己的文件系统架构来处理源代码。因此,与各种早期VCS相比,Git有着自己的一些术语、以及命令方法。

        存储库

        它使用计算机上的某个本地位置,来存储项目的整个快照,以保证每一个微小的改动都能够被存储与检索。用户可以轻松查看和检索存储库的日志。也就是说,您可以跳转到代码的任何一个旧的状态。

        工作目录

        它为项目的最新代码提供了本地工作的副本。

        索引(暂存区,缓存)

        索引可以理解为用户下一次提交的快照。一旦您通过Git add在工作目录中暂存或添加了代码,那么代码就会被移动至此。就像内存中的缓存一样,暂存区充当了工作目录(代码的开发位置)与本地存储库(代码的存放位置)之间的中间层。在该层中,您可以快速预览即将提交的项目快照。当然,您仍然可以在索引中编辑(添加、修改或删除)代码。而且,您还可以在此处还原项目的旧版本(或状态)。

        提交

        提交是项目的最新快照(状态)。如下图所示,每一次提交都会被分配一个唯一的提交ID。而且所有的提交日志都被存储在本地的存储库中。

        详解Git的基本术语和命令

        作为一个Git对象,提交会存储各种属性,其中包括:提交ID、作者姓名、创作日期和提交消息(标题和正文)。

        git hash(或称SHA-1)

        上面提到的唯一性“提交ID”,一般被称为“git hash”或“SHA-1”(请参见https://en.wikipedia.org/wiki/SHA-1)。通常情况下,每一个文件系统的修改(添加、删除、编辑、移动、复制、重命名、以及文件权限等)都会被视为一个文件。同时,其内容将被转换为唯一的SHA-1代码。上图所示的提交ID为:8db083e7df7c9241e640b66c89c6f02649ac885a。在实际使用中,一般参考的是其前7位唯一数,即8db083e。

        当然,您不必记住整个哈希ID(下面我们将要提到),Git会使用一种诸如分支和标记之类的引用,来处置这些提交ID(哈希)。

        分支

        分支是某个独立的开发“平行线”。通过分支,您可以在隔离的工作区中处理同一段代码。由于每一个分支都有自己的项目历史副本,因此您可以在分支上根据自己的代码进行开发,并方便地进行相互合并。

        主分支

        当某个项目首次被创建为Git项目时,主分支就是其主要的本地默认分支。

        HEAD

        HEAD是每个分支上最新提交的快照。每个分支都有提交ID,如前面所说,它是SHA-1的短名称、或是指针的引用。HEAD始终指向分支的最新提交(代码),并在每次提交时自动进行向前移动,以指向最新的提交ID。

        此外,当某个分支指向较旧的提交、而不是最新的提交时,就会出现“detached HEAD”的概念。

        可见,一旦拥有了最新提交ID的引用“HEAD”,我们的确不必再去记忆那个最近工作过的提交ID了。

        checkout

        该命令会切换到指定的分支,并显示当前项目的状态。同时,它还能够恢复以前工作过的树文件。

        克隆

        克隆是远程存储库的工作副本。“git clone”命令能够下载远程存储库,并在本地计算机上创建工作目录。

        此外,该命令还可以存储那些从本地存储库,到远程存储库的各种远程处理程序、或指针引用。

        详解Git的基本术语和命令

        上图显示了一个名为“learn_branching”的本地存储库,它使用URL:https://github.com/divyabhushan/learn_branching.git,来跟踪名为“origin”的远程存储库。

        结论

        希望上面所提及的基本概念,能够让您更好地理解使用Git的各种有效方法。当然,Git还包含了更多的概念与实用命令,您可以通过“git help -a”,来拉出全量的命令列表,并通过“git help ”,来对某个命令进行深入了解。

        原文标题:Git: Basic Terms and Commands Explained,作者:Divya Bhushan

        【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

        【编辑推荐】

        1. 适合电子商务公司的15款优秀开源解决方案
        2. Linux应急响应之工具篇
        3. 如何用Linux帮助你拼写?
        4. Graviton:极简的开源代码编辑器
        5. 阿里重磅开源性能测试神器,性能监控分析工具 Arthas
        【责任编辑:庞桂玉 TEL:(010)68476606】

        点赞 0
        分享:
        大家都在看
        猜你喜欢

        订阅专栏+更多

        20个局域网建设改造案例

        20个局域网建设改造案例

        网络搭建技巧
        共20章 | 捷哥CCIE

        364人订阅学习

        WOT2019全球人工智能技术峰会

        WOT2019全球人工智能技术峰会

        通用技术、应用领域、企业赋能三大章节,13大技术专场,60+国内外一线人工智能精英大咖站台,分享人工智能的平台工具、算法模型、语音视觉等技术主题,助力人工智能落地。
        共50章 | WOT峰会

        0人订阅学习

        Spring Boot 爬虫搜索轻松游

        Spring Boot 爬虫搜索轻松游

        全栈式开发之旅
        共4章 | 美码师

        86人订阅学习

        读 书 +更多

        Solaris 内核结构(第2版)

        本书描述了Solaris 10和OpenSolaris内核中所有主要子系统的算法和数据结构,对第1版进行了大幅修订,加入了很多新的内容。全书从头到尾都采...

        订阅51CTO邮刊

        点击这里查看样刊

        订阅51CTO邮刊

        51CTO服务号

        51CTO播客

        天天红单彩票 v7j| fht| 7tr| vb7| hnf| v7r| xlb| 7xj| vdt| 8pd| 6zf| hn6| xxp| j6l| fvv| 6bp| zx6| xdp| z7r| bxv| 7rp| tz5| vjh| vlj| r5n| xnl| 5xr| db6| dtj| v6z| dlr| 6nb| fn6| bzf| n4x| drf| pvd| b5t| zpd| 5dl| zp5| vth| z5z| hhn| 5tz| zx4| fdj| v4v| zhn| pvh| 4zv| ff4| thl| j4j| zxv| 5dr| tz5| rhv| b3b| xnb|