虽然这个系列的文章主要关注的是Github,然而首先了解下Git的基本概念和名词也是非常有帮助的。

工作目录(Working Directory)

工作目录是你个人计算机上的一个目录。在该目录下,每一个开发人员都有一套完整代码文件和相关文件的拷贝。在这个工作目录下的代码文件,Git就能自动进行版本控制。

Git文件

在工作目录中,您可能会发现一些额外的文件, .gitattributes和 .gitignore,这些用于告知Git如何处理文件夹中的文件。.gitattributes会告诉 Git 如何处理各种文件的比较操作。.gitignore指示 Git(基于扩展名) 的某些文件不应由 Git 处理。这些额外的文件会在后面的章节中进行更多的介绍。

图1 初始Git工作目录

当你创建一个 Git 仓库时,Git 会将这些文件( .gitattributes和 .gitignore)的默认版本添加到你的工作目录。你可以在现有的文件目录上创建一个 Git 仓库或是创建一个完全新的Git 仓库和工作目录。你还可以克隆现有的Git 仓库。一份克隆是一个完整的副本 (包括历史记录) 的Git 库。无论你怎么创建,现在都有了一个可以进行工作的Git库了。

克隆操作(Clone)

克隆是一个Git库的完整副本。例如,您可能会克隆了一份Git库,修复了一些 bug,然后向Git库提交代码。当然你需要对Git库具有写权限。

叉子操作(Fork)

叉子操作是从Git主库拷贝到你个人账户下的Git库,这样就不能直接对Git主库进行直接更新,而是先更新个人的副本,然后再提交一个拉请求(pull request),请求更改Git主库。这种功能经常用于开放源码项目,那里许多合作者帮助作者处理问题,但作者决定何时将它们包括在主分支。

拉请求(Pull Request)

拉请求是向Git库作者请求把你对叉来的Git库的更改合并到Git主库中。这个操作通常是由代码库合作者协助处理问题时使用。

分支(Branches)

一个分支是一套完整的库文件。Git 默认情况下将创建一个主分支。你可以创建更多的分支,在不会影响主分支的情况下,尝试更多的思路。

常见的分支可能包括︰

  • 功能分支(Feature branch)︰ 一支致力于向代码库中添加新功能
  • 发布分支(Release branch)︰ 用于计划下一个版本
  • 主分支(Master branch)︰ 所有代码最终获取都合并到主分支
  • 开发分支(Dev branch)︰ 活跃的开发分支,在代码正在工作

当然如何创建分支由你决定。然而如果很多合作者来参与项目,分支结构会令开发工作更加顺畅,并且不影响到主分支的构建,

被跟踪文件(Tracked files)

被跟踪文件是 Git 管理的工作目录 (存储库) 中的文件。当你添加新文件或使更新现有文件时,Git都会跟踪这些文件变化。在某个时间点,你将通过命令将这些文件提交到Git库中。

提交(Commit)

提交操作是把对被跟踪文件的变更添加到Git库的过程。你需要填写总结和说明,然后将文件添加到Git库中。Git 将维护所有对存储库提交的历史记录。

提交说明(Commit message)

提交说明是针对当前要提交的一组文件的总结和描述。

合并(Merging)

合并是将代码从一个分支融合到另一个分支的过程。当在一个分支中完成了对代码的修改和完善,通常会希望回代码合并主分支。Git 提供显示代码更改的鉴别工具,协助合并过程。

变更集(Change Sets)

Git 可以让您查看当前分支下所有的文件改变。你可以查看所做的更改,并决定哪个文件更改您想提交到分支。
例如,您可能已完成的工作是五个变更文件中的两个,需要单独提交这两个文件。你提交了这两个文件,Git会记录这个历史操作,并继续跟踪其他文件的变动。这使您可以创建逻辑变更集,而不是简单地基于日期的更改。

提交记录(Commit history)

Git 记录所有已提交的更改的日志,以便你可以检查之前的所有的变更。如果你克隆一个Git库,也会同时也拷贝了提交记录。

总结

基本的 Git 流程是创建一个Git库,做些更改和添加操作,然后,以变更集方式进行提交。Git 将报告被跟踪文件的更改,让你来决定如何组织提交。一旦完成了一些提交,你就可以查看Git的提交记录检查项目状态。

第一章 Git 一览的更多相关文章

  1. 第一章 git指令与设置

    相关指令: 1.从远程的master分支上创建新的分支,此时新分支内容与master分支内容相同: git checkout master; git branch newbranch; git che ...

  2. 运维自动化 第一章 git

    一.git简单操作 4个地方: 工作区: 当前编辑的区域 缓存区: add 之后的区域 本地仓库: commit之后的区域 远程仓库 :远程的区域 简单操作: git init 初始化操作 比如我选定 ...

  3. 《LINUX内核设计与实现》读书笔记之第一章和第二章

    一.第一章 1. Unix内核的特点简洁:仅提供系统调用并有一个非常明确的设计目的抽象:几乎所有东西都被当做文件可移植性:使用C语言编写,使得其在各种硬件体系架构面前都具备令人惊异的移植能力进程:创建 ...

  4. .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来,首先,请允许我长吸一口气!真没想到一份来自28岁老程序员 ...

  5. net core体系-web应用程序-4asp.net core2.0 项目实战(CMS)-第一章 入门篇-开篇及总体规划

    .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划   原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来 ...

  6. 第一章 Android系统的编译和移植实例

    第一章 Android系统的编译和移植实例 这一章节主要介绍了Android系统的编译和移植技术,作为建立在Linux内核的基础上的Android操作系统,它的编译和移植不论在过程还是技术方面都和嵌入 ...

  7. Linux内核分析 读书笔记 (第一章、第二章)

    第一章 Linux内核简介 1.1 Unix的历史 Unix很简洁,仅仅提供几百个系统调用并且有一个非常明确的设计目的. 在Unix中,所有东西都被当做文件,这种抽象使对数据和对设备的操作是通过一套相 ...

  8. Linux内核设计与实现 第一章 第二章

    第一章 Linux内核简介 Unix特点: (1)     Unix很简洁,仅仅提供几个几百个系统调用并且有一个非常明确的设计目的 (2)     在Unix中,所有的东西都被当作文件对待,通过一套相 ...

  9. 20165233 Java第一章学习总结

    20165233 2017-2018-2 <Java程序设计>第一周学习总结 教材学习内容总结 第一章 Java特点:语法简单.面向对象.与平台无关.动态. 字节码不能被任何平台直接识别. ...

随机推荐

  1. Python中urllib2总结

    使用Python访问网页主要有三种方式: urllib, urllib2, httpliburllib比较简单,功能相对也比较弱,httplib简单强大,但好像不支持session1. 最简单的页面访 ...

  2. python 基础 8.1 r 正则对象

                                                                                                        ...

  3. 网卡配置bond

    在实际的生产环境中,服务器都需要配置bond环境的,以提高安全性及均衡能力.我公司网卡配置的是mode=1 类型,mode=1 是主备模式,当其中一块网卡不能工作时,另一块网卡立即代替.以下是mode ...

  4. Jquery和JS的区别

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. spring boot 项目搭建时,各个依赖的作用

    项目搭建页面 https://start.spring.io/ 各个依赖的作用 List of dependencies for Spring Boot 2.1.5.RELEASE Core DevT ...

  6. java常量池概念 (转)

    在class文件中,“常量池”是最复杂也最值得关注的内容. Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int.long等等)和对象型(如Stri ...

  7. php总结6——自定义函数、引用传值

    6.1 自定义函数 function 函数名称(参数[=默认值],参数[=默认值]...){ 函数体 [return val]; } 1) 无参数无返回 2) 有参数无返回 3) 有参数有返回 函数中 ...

  8. php总结4——数组的定义及函数、冒泡排序

    4.1 数组的定义 数组:变量存储的有序序列. 索引数组:下标为数字的数组.  $数组名称(下标)    下标从0开始的数字. 直接定义: $arr[0]=123; $arr[1]="chi ...

  9. AsyncHttpClien访问网络案例分析

    Android数据存储的四种方式分别是:SharedPreferences存储.File文件存储.Network网络存储和sqlite数据库存储,网络存储需要使用AsyncHttpClient发送请求 ...

  10. CALL FUNCTION 'BAPI_GOODSMVT_CREATE'-(物料凭证创建)

    *&---------------------------------------------------------------------* *& Report  YTST_RAI ...