Git 使用指南之 Git 自定义
Git 中支持自定义 忽略文件,使得 Git 自动忽略这些文件,不再被 track
。还支持为 Git 中的命令配置简单、易用的 别名,这在频繁使用包含较为复杂参数的命令时极有成效!甚至当你不想使用 Github 或者 Gitee 时,你可以选择自定义 搭建一台 Git 服务器 作为私有仓库使用。
版权说明: 本文思路以及内容主要来自廖雪峰老师的 Git 教程 (强烈推荐膜拜原文),并结合个人使用所作,只作为学习记录使用。如内容有侵权请联系删除,禁止转载!
更多 Git 相关内容,请关注博主 Git 博文系列:
之五 >>> Git 使用指南之 WorkFlow (工作流)
忽略特殊文件
场景描述:日常项目中,很多时候你必须把某些文件放到 Git 工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等…每次 git status
都会显示 Untracked files ...
,有强迫症的看官心里肯定不爽。
解决方法 >>>>
Git 考虑到了大家的感受,通过 Git 工作区的根目录下创建一个特殊的 .gitignore
文件,然后把要忽略的文件名填进去,Git 就会自动忽略这些文件。
GitHub Ignore Repo
不需要你从头去写 .gitignore
文件,GitHub 已经为我们准备了各种工程项目(Pyhont、Java…)的配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:
传送门 —> https://github.com/github/gitignore
Ignore Document Policy
设置忽略文件,要遵循忽略文件的原则:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等:也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如 Java 编译产生的 .class 文件;
- 忽略你自己的带有敏感信息的配置文件,比如存放密码、口令的配置文件;
- 忽略配置文件需要提交。
举个例子 >>>>
假设你在 Windows 下进行 Python 开发,Windows 会自动在有图片的目录下生成隐藏的缩略图文件,如果有自定义目录,目录下就会有 Desktop.ini
文件,因此你需要忽略 Windows 自动生成的垃圾文件:
1 | # Windows: |
然后,继续忽略 Python 编译产生的 .pyc
、.pyo
、dist
等文件或目录:
1 | # Python: |
加上你自己定义的文件,最终得到一个完整的 .gitignore
文件,内容如下:
1 | # Windows: |
最后一步就是把 .gitignore
也提交到 Git,就完成了!!!
当然,检验
.gitignore
的标准是git status
命令是不是说working directory clean
。
Git-Ignore More
.gitignore
配置文件配置不精确导致某些特殊需要文件被忽略 >>>>
有些时候,你想添加一个文件(App.class)到 Git,但发现添加不了,原因是这个文件被 .gitignore
忽略了:
1 | git add App.class |
输出信息提示:如果你确实想添加该文件,可以用 -f
强制添加到 Git:
1 | git add -f App.class |
忽略规则配置文件检查(推荐)
如果由于 .gitignore
配置文件配置不精确导致某些特殊需要文件被忽略,你需要找出来到底哪个规则给过滤掉了,这时可以用 git check-ignore
命令检查:
1 | git check-ignore -v App.class |
Git 告诉我们:.gitignore
的第 3
行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。
事实上,很多时候都是由于个人编写的规则排除了部分文件,如下内容:
1 | 排除所有.开头的隐藏文件: |
发现:.*
这个规则把 .gitignore
排除了,并且 App.class
需要被添加到版本库,但也被 *.class
规则排除了。
虽然可以使用 git add -f
强制添加进去,但不要破坏 .gitignore
规则,这个时候可以添加两条 例外规则:
1 | 排除所有.开头的隐藏文件: |
例外规则:把指定文件排除在
.gitignore
规则外的写法就是! + 文件名
,只需把例外文件添加进去即可。
配置别名
配置别名是针对 Git 中常用的较长,不容易记忆,或者参数太多太长的命令,为其配置精简别名,以简化使用。
配置
配置别名的命令格式如下(注意添加 --global
的影响):
1 | 为 git status 设置全局命令别名:git st |
大多数开发人员配置的别名(以全局配置为例):
1 | git config --global alias.co checkout |
一个优秀的 git log
设置方案:
1 | git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" |
来看看效果:
1 | git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit |
自己动手设置一下,效果显著~~~
删除
有时候,我们想要删除配置好的别名删除怎么办?这时,需要借助配置文件。
我们知道,配置 Git 的时候,加上 --global
是针对当前用户起作用的;如果不加,那只针对当前的仓库起作用。
首先,我们需要知道配置文件放在什么位置?
1 –> 仓库配置文件
仓库的配置文件都放在 .git/config
文件中:
1 | cat .git/config |
别名就在 [alias]
后面,要删除别名,直接把对应的行删掉即可。
2 –> 当前用户的 Git 配置文件
而当前用户的 Git 配置文件放在用户主目录(~)下的一个隐藏文件 .gitconfig
中:
1 | cat .gitconfig |
配置别名也可以直接修改这个文件。
install_url
to use ShareThis. Please set it in _config.yml
.