《Got Git》学习笔记(一)

最近想对自己的代码和文档进行归档整理,需要一个版本控制系统来进行 处理。自然而然的想到了目前流行的GitHub。

GitHub,是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。

使用GitHub会涉及很多Git的概念和操作,因此还需要对Git有一定程度的了解。虽然之前使用过ClearCase,但两者之间还是有很大的区别,因此在网上找了有关的资料进行学习。这本《Got Git》(中文名为《Git权威指南》,作者蒋鑫,由机械工业出版社华章公司出版)是我找到的最好的一本中文教程,但是由于我现在非常讨厌举着一本大部头来看书,实在太不方便,而且也找不到官方的电子版,只好可耻的下载了盗版电子书。真心希望以后能推出电子版,我一定会入手一本,呵呵。这个系列的文章是我在学习《Got Git》的过程中对书中的一些理解、总结和摘抄,不会对Git做详细的介绍,也不对Git使用的每一个步骤做说明,只作为学习过程记录之用,因此会出现些许不连贯,遇此情况各位只能自行脑补,甚为抱歉。若这系列文章存在版权问题,请联系我,我会立刻删除。若大家想要更深入的学习Git,十分推荐大家购买这本《Got Git》,里边深入分析了各个版本控制系统的优劣,全面细致地介绍了Git的使用,是一本很好的Git教材。

Table of Contents

  • 1 Git简介
  • 2 Git安装
  • 3 Git初始化
    • 3.1 创建版本库
    • 3.2 配置config文件
      • 3.2.1 系统级配置
      • 3.2.2 全局级配置
      • 3.2.3 版本库级配置
    • 3.3 第一次提交
    • 3.4 备份工作区

1 Git简介

Git是一种分布式的版本控制系统,它与传统的版本控制系统CVS、SVN的区别就在于“分布式”上。传统的版本控制系统多为集中式系统,就像我工作上使用的ClearCase。集中式的版本控制系统只有一个工作空间,为主空间,在ClearCase中就是项目的主分支。想要修改文件必须对文件进行检出(checkout),修改之后再检入(checkin),之后系统管理员把我个人分支上修改的文件合入主分支,整个修改过程才能完成。集中式的工作方式存在很多问题,其中一个就是依赖网络。代码修改人员必须能与版本控制服务器连接,才能对文件进行版本控制。例如我回到家里工作,不能连接到公司的版本控制服务器,这种情况下我就无法对文件进行检入和检出,也就没有办法跟踪文件的历史记录,因此也就谈不上版本控制了。分布式的版本控制系统很好的解决了这个问题,在分布式的系统中,每一个代码修改人员本地上都有一个项目的版本库,可以不依赖网络对该版本库进行修改,并且有该版本库的完全权限。本地的版本库会记录你的每一次修改提交,可以跟踪版本库的历史信息,实现了完全本地化的版本控制。当你能连接上主版本库服务器时,你可以把本地的版本库推送到服务器上,实现版本库的同步。Git等分布式的版本控制系统与SVN等集中式版本控制系统还存在很多的差异,想要了解更多的差别请阅读《Got Git》。

2 Git安装

我使用的操作系统为ubuntu 12.04 LTS,因此只介绍这个系统上的安装方式,其他方式请参考书中内容。

  • 最简单的方法,^_^
$ sudo apt-get install git
  • 可查看git的版本验证是否安装成功
$ git --version
git version 1.7.9.5

3 Git初始化

涉及创建版本库,设置git的配置文件,进行第一次提交等操作。

3.1 创建版本库

创建版本库:

  • 创建一个工作目录,并初始化
$ cd /my/git/workspace
$ mkdir demo
$ cd demo
$ git init
  • git 1.6.5或更新的版本支持直接初始化并创建目录
$ cd /my/git/workspace
$ git init demo
$ cd demo

此时在demo工作区根目录下有一个名为.git的隐藏文件夹,该文件夹就是该工作区的版本库

$ ls -aF
./ ../ .git/

3.2 配置config文件

有三个层次的配置

  • 系统级配置
  • 全局级配置
  • 版本库级配置

3.2.1 系统级配置

对/etc/gitconfig文件进行配置,该级别的配置可以被所有用户使用, 因此最好不要配置一些涉及用户信息的配置。该配置作用于系统中的所有 版本库。

  • 以下配置注册了一些命令的别名:
$ sudo git config --system alias.st status
$ sudo git config --system alias.ci "commit -s"
$ sudo git config --system alias.co checkout
$ sudo git config --system alias.br branch
  • 打开/etc/gitconfig文件进行编辑
$ git config -e --system

3.2.2 全局级配置

对用户目录下的.gitconfig文件进行配置,一般用户相关信息可以在 这个文件内配置,该配置只作用于该用户目录下的版本库。 在使用版本库前要在全局配置中设置用户名和邮件地址。

  • 配置当前用户的姓名和邮件地址
$ git config --global user.name  "your_name"
$ git config --global user.email "your_email@example.com"
  • 在Git命令输出中开启颜色显示
$ git config --global color.ui true
  • 打开~/.gitconfig文件进行编辑
$ git config -e --global

3.2.3 版本库级配置

对版本库中的config(.git/config)文件进行配置。

$ git config x.y.s others
  • 打开工作区下的.git/config文件进行编辑
$ git config -e

3.3 第一次提交

此时工作区中还没有文件,我们必须创建一个文件并把它加入到工作区,然后才能对 修改进行提交。

  • 创建一个文件
$ echo "HelloWorld!" > welcome.txt
  • 把文件加入到工作区
$ git add welcome.txt
  • 提交对工作区的修改
$ git commit -c "initialized."

-c参数表示双引号中为此次提交的说明,git强制要求每次提交都必须附有提交说明。

  • 若要对未对修改的工作区执行提交,需要加上参数–allow-empty
$ git commit --allow-empty -m "no modified."
  • 显示工作区的日志,附加–stat参数可以看到每次提交的文件变更统计
$ git log --pretty=fuller
$ git log --stat --pretty=fuller

3.4 备份工作区

使用克隆命令获取demo工作区的一个副本,并命名为另一个工作区

$ cd /my/git/workspace
$ git clone demo demo-step-1

Author: mayuanchao <fredmyc@gmail.com>

Date: 2013-04-14 22:38:57 CST

HTML generated by org-mode 6.33x in emacs 23

转载于:https://www.cnblogs.com/machuw/archive/2013/04/14/3021171.html

《Got Git》学习笔记(一)相关推荐

  1. 【web编程技术学习笔记】因特网与万维网简介

    目录 Client客户端 Server服务器端 TCP/IP五层协议 IP 查看IP地址的的两种方法 TCP URL 样式一 样式二 DNS URL&DNS HTTP 与因特网有关的组织 IE ...

  2. 程序员编程技术学习笔记

    程序员编程技术学习笔记     看july的博客也有好久了,一直没能好好整理一下自己的学习笔记,开了博客之后更加愿意好好整理一番了.其中不免有些内容在july那里可以找到原文,但是更多的加入了我个人的 ...

  3. JAVA 网络编程技术学习笔记

    目录 一.网络编程基本概念(了解) 1.1 计算机网络 1.2 网络通信协议 1.2.1什么是网络通信协议 1.2.2 OSI七层协议模型 1.2.3网络协议的分层 1.3数据的封装和解封 1.4 I ...

  4. 《ASP.NET MVC4 WEB编程》学习笔记------Web API 续

    目录 ASP.NET WEB API的出现缘由 ASP.NET WEB API的强大功能 ASP.NET WEB API的出现缘由 随着UI AJAX 请求适量的增加,ASP.NET MVC基于Jso ...

  5. java网络编程技术学习笔记(b站【狂神说Java】网络编程实战讲解)

    b站视频链接:[狂神说Java]网络编程实战讲解 文章目录 网络编程 1.1.概述 1.2.网络通信的要素 1.3.IP 1.4.端口 1.5.通信协议 1.6.TCP 文件发送 1.7.UDP 1. ...

  6. SpringBoot整合第三方技术学习笔记(自用)

    SpringBoot整合第三方技术学习笔记 搬运黑马视频配套笔记 KF-4.数据层解决方案 KF-4-1.SQL 回忆一下之前做SSMP整合的时候数据层解决方案涉及到了哪些技术?MySQL数据库与My ...

  7. java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)

    原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...

  8. ssm 转发请求_千呼万唤!阿里内部终于把这份SSM框架技术学习笔记分享出来了...

    SSM SSM(Spring+SpringMVC+MyBatis)框架集由Spring.MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容).常作为数据源较简单的web项 ...

  9. 【C#编程基础学习笔记】6---变量的命名

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...

  10. 【C#编程基础学习笔记】4---Convert类型转换

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...

最新文章

  1. FPGA:下一代机器人感知处理器
  2. Py之PyTables:PyTables的简介、安装、使用方法详细攻略
  3. 请先设置tkk_物联卡apn设置机型大全!!物联卡连不上4G、网速慢?推荐你看这片文...
  4. linux 服务器之查看磁盘使用情况
  5. 如何改变请求的host以及referer抓取做了host以及referer限制的接口数据
  6. InterlliJ Debug启动:method breakpoints may dramatically show down debugging
  7. ajax提交手机号到php,ajax怎样申请手机号到数据库验证并且返回数据的状态值
  8. HDFS中的集中缓存管理详解
  9. mysql建表注意事项,关键字和保留字不能作为表名
  10. IDEA代码格式化会快捷键Ctrl+Alt+L失效
  11. 渲染算法学习(七)-- Real-Time Ray Tracing
  12. 将西瓜书中的表格数字化与可视化
  13. window系统node彻底卸载
  14. 如何解决海外邮件发不出去
  15. mac办公软件里值得推荐给大家的好软件
  16. ssm在线考试系统设计与实现(论文+程序设计+数据库文件)下载
  17. Not registered via @EnableConfigurationProperties or marked as Spring component
  18. 记录阿里云服务器mysql被黑
  19. html5教程单摆,单摆实验的基本原理和实验方法
  20. Python实现将多个Excel表格数据一键合并到一个表格,轻松提升办公效率!

热门文章

  1. java文件名要和什么一致,Java的类名与文件名必须一致
  2. 非侵入式监控php,非侵入式监控PHP应用性能监控分析
  3. linux查看python环境变量_Linux中的Python环境变量
  4. 8.QML Qt Quick Controls 2中常用的界面形式——堆叠式界面(StackView)
  5. 记录一下HALCON调用相机自带驱动加速采集速率
  6. 双网口相机平台搭建C++(大恒水星)
  7. 周长相等的正方形面积一定相等_习题创编——周长相等的长方形面积(20200108)...
  8. 创建MYSQL的储存过程
  9. 《OpenStack 实战》内容概览与作者采访
  10. 2016百度星资格赛1002 大数相加