End

Git TortoiseGit .gitignore 忽略规则 简介

本文地址


目录

Git TortoiseGit .gitignore 忽略规则 简介

Git 是目前世界上最先进的分布式版本控制系统。

相比同类软件,Git 有很多优点,其中很显著的一点,就是版本的分支和合并十分方便。一些传统的版本管理软件,其分支操作实际上是生成一份现有代码的物理拷贝,而 Git 是只生成一个指向当前版本(又称"快照")的指针,因为少了大量文件的拷贝操作,所以分支合并是速度非常快。

Git 的安装

除了安装路径,全部按默认即可:

  • 选择安装路径 --> 使用默认的组件 --> 创建开始菜单文件夹 --> 选择使用 Git 的命令行模式,选择默认Git Bash模式会创建一个快捷命令行
  • 选择换行格式,默认为第一个跨平台样式
  • Finish 安装完成,桌面会生成一个快捷图标,安装成功。

在安装Git的过程中一般都会勾选Git Gui HereGit Bash Here选项:

  • Git Gui Here:是否要在右键菜单添加一个选项,添加后可以在当前文件夹中使用 git shell 的图形用户界面操作
  • Git Bash Here:是否要在右键菜单添加一个选项,添加后可以在当前文件夹使用 git shell 的命令行工具操作

TortoiseGit 的安装

TortoiseGit 下载

TortoiseGit 就是大名鼎鼎的小乌龟,一个图形化的Git操作程序。

其实 TortoiseGit 只是一个程序壳,其必须依赖 Git Core,所以安装 TortoiseGit 前需要先安装 Git。

如果你是一名软件开发人员,那请你一定要用命令行(如使用 Git Bash Here),不要用可视化工具,用可视化工具的速度你会难以忍受的。

--> 选择SSH客户端,可以选择 TortoiseGitPlink(位于TortoiseGit安装目录/bin 下),也可以选择 Git 默认的SSH客户端(位于Git安装目录/bin/ssh.exe,如果配置了 Path,那直接是 ssh.exe)。我们使用默认即可:

--> 选择安装路径及组件 --> 点击Install,开始安装 --> Win 7下会弹出一个确认安装的提示框,确认就可以了 --> 安装完成。

和SVN一样,官网有提供汉化包,注意要和 TortoiseGit 的版本一致才可以。

让 TortoiseGit 记住用户名和密码

TortoiseGit 在提交时总是会提示你输入用户名密码,非常麻烦,解决方案如下。

全局设置

  • 添加一个变量名为HOME值为%USERPROFILE%的用户变量(非必须,可能默认已经有这个变量了)
  • %Home%目录(即当前用户目录,例如C:\Users\白乾涛)下新建一个名为_netrc的文件
  • 在文件中输入 Git 服务器名、用户名、密码,格式如下:
machine github.com    # git 服务器名称
login baiqiantao      # git 帐号
password ********     # git 密码

#【192.168.20.9】【baiqiantao】【http://192.168.20.9/】
#【git.oschina.net】【baiqiantao】【http://git.oschina.net/baiqiantao】
#【code.csdn.net】【baiqiantao】【https://code.csdn.net/baiqiantao】
#【github.com】【baiqiantao】【https://github.com/baiqiantao】

局部设置

如果想只针对某个具体项目进行配置,可以打开项目根目录下隐藏的.git/config文件,将其中url的域名前添加用户名:密码@即可,例如:

url = https://github.com/baiqiantao/blog.git             # 修改前
url = https://用户名:密码@github.com/baiqiantao/blog.git  # 修改后

添加忽略规则的三种方式

From time to time 有时候, there are files you don't want Git to check in to GitHub. There are a few ways to tell Git which files to ignore.

创建本地的 .gitignore 文件

If you create a file in your repository named .gitignore, Git uses it to determine 确定 which files and directories to ignore, before you make a commit.

A .gitignore file should be committed into your repository, in order to share the ignore rules 共享忽略规则 with any other users that clone the repository.

GitHub maintains 维护 an official list of recommended .gitignore files for many popular operating systems, environments, and languages in the github/gitignore public repository.

If you already have a file checked in, and you want to ignore it, Git will not ignore the file if you add a rule later. In those cases, you must untrack 解除 the file first, by running the following command in your terminal:

git rm --cached FILENAME  ## 停止追踪指定文件,但该文件会保留在工作区

创建全局的 .gitignore 文件

You can also create a global .gitignore file, which is a list of rules 规则列表 for ignoring files in every Git repository on your computer. For example, you might create the file at ~/.gitignore_global and add some rules to it.

git config --global core.excludesfile ~/.gitignore_global

The Octocat has a Gist containing some good rules to add to this file.

个人局部的 exclude 文件

explicit [ɪkˈsplɪsɪt] adj. 明确的,清楚的; 直言的; 详述的; 不隐瞒的;
exclude [ɪk'sklu:d] vt. 排斥;排除,不包括;驱除,赶出

If you don't want to create a .gitignore file to share with others, you can create rules that are not committed with the repository. You can use this technique 技术 for locally-generated 本地生成的 files that you don't expect other users to generate, such as files created by your editor.

Use your favorite text editor to open the file called .git/info/exclude within the root of your Git repository. Any rule you add here will not be checked in, and will only ignore files for your local repository.

.gitignore 文件的规则

基本规范:

  • 所有空行或者以注释符号#开头的行都会被 Git 忽略
  • 匹配模式最后跟反斜杠/说明要忽略的是目录
  • 忽略指定模式以外的文件或目录,可以在模式前加上惊叹号!取反
  • 可以使用标准的 glob 模式匹配

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式:

  • 星号*匹配零个或多个任意字符
  • 问号?只匹配一个任意字符
  • 方括号[]匹配任何一个列在方括号中的字符
  • 如果在方括号中使用短划线-分隔两个字符,表示所有在这两个字符范围内的都可以匹配,如[0-9]表示匹配所有 0 到 9 的数字

Git 产生背景、基本功能简介

Git的诞生

很多人都知道,Linus1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。

Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。

不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发SambaAndrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。

Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:

Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

Git迅速成为最流行的分布式版本控制系统,尤其是2008年GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

集中式vs分布式

Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?

先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。

那分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统根本没有中央服务器每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

当然,Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理,把SVN等远远抛在了后面。

CVS作为最早的开源而且免费的集中式版本控制系统,直到现在还有不少人在用。由于CVS自身设计的问题,会造成提交文件不完整,版本库莫名其妙损坏的情况。同样是开源而且免费的SVN修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制系统。

分布式版本控制系统除了Git以及促使Git诞生的BitKeeper外,还有类似Git的MercurialBazaar等。这些分布式版本控制系统各有特点,但最快、最简单也最流行的依然是Git!

2017-11-6

posted @ 2017-11-06 19:46  白乾涛  阅读(3144)  评论(0编辑  收藏  举报