虽然这个系列的文章主要关注的是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. 研究下JavaScript中的Rest參数和參数默认值

    研究下JavaScript中的Rest參数和參数默认值 本文将讨论使 JavaScript 函数更有表现力的两个特性:Rest 參数和參数默认值. Rest 參数 通常,我们须要创建一个可变參数的函数 ...

  2. ASP.NET动态网站制作(2)--css(1)

    前言:这节课主要讲关于css的相关内容. 重点:1.css(Cascading Style Sheet)叠层样式表,做网页的外观,是用来控制网页样式并允许将样式信息与网页内容分离的一种标记性语言. 2 ...

  3. 多通道(比方RGB三通道)卷积过程

    今天一个同学问 卷积过程好像是对 一个通道的图像进行卷积, 比方10个卷积核,得到10个feature map, 那么输入图像为RGB三个通道呢,输出就为 30个feature map 吗, 答案肯定 ...

  4. doT.js具体使用介绍

    官网: http://olado.github.iodoT.js具体使用介绍 用法: {{= }} for interpolation {{ }} for evaluation {{~ }} for ...

  5. python 基础 8.1 r 正则对象

                                                                                                        ...

  6. 再看GS接包过程

    再看GS接包过程 bool GameServer::ProcessLoop(packet& rPkt) { if(false == m_spDataLayer->Recv(rPkt)) ...

  7. Grunt是什么,以及它的一些使用方法

    ♥什么是Grunt Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器.grunt是基于node 更多插件请访问:http://www.gruntjs.n ...

  8. Mybatis之基本简介

    一.Mybatis简介 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的XML ...

  9. Elipse clean后无法编译出class文件

    通常之前一直运行正常的项目,在某次修改或重新启动时总是报 ClassNotFoundException,而事实是这个类确实存在,出现这种原因最好看看 build文件下的classes是否为空 或 编译 ...

  10. 九度OJ 1019:简单计算器 (基础题、DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6725 解决:2454 题目描述:     读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. 输入:     ...