1.关于版本控制系统

(1)本地版本控制系统

(2)集中化的版本控制系统

(3)分布式版本控制系统

2.Git的三种状态

对于任何一个文件,在 Git 内都只有三种状态:
已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。由此我们看到 Git 管理项目时,文件流转的三个工作区域:Git 的本地数据目录,工作目录以及暂存区域。

每个项目都有一个 git 目录,它是 Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。这些文件实际上都是从 git 目录中的压缩对象数据库中提取出来的,接下来就可以在工作目录中对这些文件进行编辑。所谓的暂存区域只不过是个简单的文件,一般都放在 git 目中。有时候人们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。

3.初次运行 Git 前的配置

Git 提供了一个叫做 git config 的工具(译注:实际是 git-config 命令,只不过可以通过 git 加一个名字来呼叫此命令。),专门用来配置或读取相应的工作环境变量。而正是由这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:
(1) /etc/gitconfig文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
(2)~/.gitconfig文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
(3)当前项目的 git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以.git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。
 

3.1.用户信息

第一个要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录:
  1. git config --global user.name "John Doe"
  2. git config --global user.email johndoe@example.com

3.2.配置文本编辑器

Git 需要你输入一些额外消息的时候,会自动调用一个外部文本编辑器给你用。默认会使用操作系统指定的默认编辑器
  1. git config --global core.editor vim

3.3.配置差异分析工具

Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。
  1. git config --global merge.tool vimdiff

3.4.配置commit template

如果把此项指定为你系统上的一个文件,当你提交的时候, Git 会默认使用该文件定义的内容。 例如:你创建了一个模板文件$HOME/.gitmessage.txt,它看起来像这样:
  1. subject line
  2.  
  3. what happened
  4.  
  5. [ticket: X]

设置commit.template,当运行git commit时, Git 会在你的编辑器中显示以上的内容,设置commit.template如下:

  1. git config --global commit.template $HOME/.gitmessage.txt
  2. git commit

然后当你提交时,在编辑器中显示的提交信息如下:

  1. subject line
  2.  
  3. what happened
  4.  
  5. [ticket: X]
  6.  
  7. # Please enter the commit message for your changes. Lines starting
  8. # with '#' will be ignored, and an empty message aborts the commit.
  9. # On branch master
  10. # Changes to be committed:
  11. # (use "git reset HEAD <file>..." to unstage)
  12. #
  13. # modified: lib/test.rb
  14. # ~ ~
  15. ".git/COMMIT_EDITMSG" 14L, 297C

3.5.配置CR/LF格式化

格式化与空白是许多开发人员在协作时,特别是在跨平台情况下,遇到的令人头疼的细小问题。由于编辑器的不同或者Windows程序员在跨平台项目中的文件行尾加入了回车换行符,一些细微的空格变化会不经意地进入大家合作的工作或提交的补丁中。
Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF:
  1. git config --global core.autocrlf true

Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:

  1. git config --global core.autocrlf input
这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。
如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中:
  1. git config --global core.autocrlf false

3.6.查看配置信息

要检查已有的配置信息,可以使用 git config --list 命令:
  1. git config --list

Git实用技巧的更多相关文章

  1. git 实用技巧

    一.git 常用操作 1.1 // 该方法会显示某次提交的所有更改 git log --pretty=oneline 文件名 git show 356f6def9d3fb7f3b9032ff5aa4b ...

  2. Git 实用技巧:git stash

    我们经常会遇到这样的情况: 正在dev分支开发新功能,做到一半时有人过来反馈一个bug,让马上解决,但是新功能做到了一半你又不想提交,这时就可以使用git stash命令先把当前进度保存起来.然后切换 ...

  3. Buildroot构建指南--快速上手与实用技巧

    Buildroot官方全英文使用手册的链接是https://buildroot.org/downloads/manual/manual.html,需要知道每一个细节的朋友,可以仔细查阅,这篇文章只是我 ...

  4. Hbuilder实用技巧(转)

    Hbuilder实用技巧 原创 2016年05月19日 10:25:42 标签: hbuilder 操作 16551 1. Q:怎么实现代码追踪? A:在编辑代码时经常会出现需要跳转到引用文件或者变量 ...

  5. Buildroot构建指南--快速上手与实用技巧【转】

    本文转载自:http://blog.csdn.net/zhou_chenz/article/details/52335634 Buildroot官方全英文使用手册的链接是https://buildro ...

  6. Notepad++ 实用技巧

    Notepad++是一款开源的文本编辑器,功能强大.很适合用于编辑.注释代码.它支持绝大部分主流的编程语言. 本文主要列举了本人在实际使用中遇到的一些技巧. 快捷键 自定义快捷键 首先,需要知道的是: ...

  7. javascript实用技巧、javascript高级技巧

    字号+作者:H5之家 来源:H5之家 2016-10-31 11:00 我要评论( ) 三零网提供网络编程. JavaScript 的技术文章javascript实用技巧.javascript高级技巧 ...

  8. iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式

    iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式 说明: 1)该文简短介绍在iOS开发中遍历字典.数组和集合的几种常见方式. 2)该文对应的代码可以在下面的地址获得:https:// ...

  9. iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示

    iOS开发实用技巧—在手机浏览器头部弹出app应用下载提示 本文介绍其简单使用: 第一步:在本地建立一个访问的服务端.  打开本地终端,在本地新建一个文件夹,在该文件夹中存放测试的html页面.   ...

随机推荐

  1. Codeforces Round #368 (Div. 2) A , B , C

    A. Brain's Photos time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  2. Java中各种集合特点总结

    1:集合:    (1) Collection(单列集合)         List(有序,可重复)             ArrayList                 底层数据结构是数组,查 ...

  3. 10.0.4_CentOS_120g

    对应 VMware Workstation 版本为:“10.0.4 build-2249910”

  4. 2D游戏摄像机跟随不出界

    做2D游戏的时候碰上摄像机要跟随人物时要防止摄像机看到界面外的黑幕,直接上代码. using System.Collections; using System.Collections.Generic; ...

  5. JS内存知识点汇总

    废话片: 讲到内存可以联想到很多,内存分配管理,内存回收机制,内存泄露等等,今天我们就来答题的总结一下. 正文片: 1.内存分配管理 2.内存回收机制 3.内存泄露 一.内存分配管理 首先让我们看看内 ...

  6. 慕课网python分布式爬虫打造搜索引擎视频中爬取伯乐网文章

    代码:https://github.com/longbigbeard/scrapy_demo

  7. 逻辑斯蒂(logistic)回归深入理解、阐述与实现

    第一节中说了,logistic 回归和线性回归的区别是:线性回归是根据样本X各个维度的Xi的线性叠加(线性叠加的权重系数wi就是模型的参数)来得到预测值的Y,然后最小化所有的样本预测值Y与真实值y'的 ...

  8. RecycleView出现折叠效果--第三方开源--SectionedExpandableGridRecyclerView

    下载地址:https://github.com/ddwhan0123/SectionedExpandableGridRecyclerView/archive/master.zip 具体见源码

  9. xsl教程学习笔记

    一 . Hello world 尝试: Hello.xml: <?xml version="1.0" encoding="UTF-8"?> < ...

  10. [转]C++ 智能指针详解

    转自:http://blog.csdn.net/xt_xiaotian/article/details/5714477 C++ 智能指针详解 一.简介 由于 C++ 语言没有自动内存回收机制,程序员每 ...