

文章目录
-
- 忽略特殊文件:`.gitignore`
- [给命令配置别名:`git config alias`](#给命令配置别名:
git config alias
) - 总结
在掌握了本地和远程的基本操作之后,我们来学习一些 Git 的 配置 技巧,让使用更加顺畅和个性化。
除了最开始设置用户名和邮箱,Git 还有很多可以配置的地方。其中两个非常实用的配置是忽略特殊文件和给命令设置别名。
忽略特殊文件:.gitignore
问题: 在实际项目开发中,你的项目目录里会产生一些文件,它们不应该被 Git 跟踪,更不应该被提交到远程仓库。比如:
- 编译生成的文件: 比如 Java 的
.class
文件,Python 的__pycache__
目录,C++ 的.o
文件或可执行文件。 - 日志文件: 程序运行生成的
.log
文件。 - 临时文件或备份文件: 编辑器产生的临时保存文件,比如
.swp
文件。 - IDE (集成开发环境) 生成的文件: 比如
.idea/
目录,.vscode/
目录,.project
文件等,这些文件通常包含本地 IDE 配置,不适合共享。 - 包含敏感信息的文件: 比如数据库连接密码、API 密钥等配置文件,它们通常不应该上传到公共或团队仓库。
如果 Git 每次都提示这些文件的变化,或者不小心把它们提交了,会非常麻烦。
解决方案: 在你的 Git 工作区 的根目录 下,创建一个名为 .gitignore
的特殊文件。在这个文件里,你可以列出或指定 Git 应该忽略的文件和目录的规则。Git 在检查工作区状态或准备提交时,会自动跳过这些文件。
创建 .gitignore
文件:
- 手动创建: 在你的项目根目录手动创建一个
.gitignore
文件,用文本编辑器打开并编辑。 - 平台生成: 像 Gitee、GitHub 等代码托管平台在创建新仓库时,通常会提供生成
.gitignore
文件的选项,并可以选择针对特定编程语言或框架的模板,这样可以省去很多手动编写的麻烦。

在 Gitee 创建新仓库页面,勾选初始化仓库,然后选择合适的 .gitignore
模板(比如 Python, Node.js, C++ 等)。
无论哪种方式,最终你都会在项目根目录得到一个 .gitignore
文件。
.gitignore
** 文件内容规则:**
.gitignore
文件中,每一行就是一个忽略规则。
- 空行或以
#
开头的行会被 Git 忽略,作为注释使用。 - 直接写文件名:忽略指定文件。
- 写目录名以
/
结尾:忽略指定目录及其中的所有文件和子目录。 - 写文件名以
*
通配符:忽略匹配模式的文件。 - 写
!
开头:表示不忽略(例外规则)。
示例 .gitignore
文件内容:
假设我们想忽略所有以 .so
和 .ini
结尾的文件,以及一个叫做 my_secret_config.ini
的特定文件,内容可以这样写:
plain
# 这是一个注释
# 忽略所有以 .so 结尾的文件
*.so
# 忽略所有以 .ini 结尾的文件
*.ini
# 但我有一个特定的 .ini 文件,我不想忽略它(这不是上面的例子,只是演示例外)
# !/path/to/my_specific.ini
# 另外,忽略整个 build 目录
build/
# 忽略特定的文件
my_secret_config.ini
(参照提供的示例内容)
plain
# 省略选择模本的内容...
# My configurations:
*.ini
*.so
这个示例 .gitignore
文件会告诉 Git 忽略项目中所有以 .ini
和 .so
结尾的文件。
提交 .gitignore
文件:
.gitignore
文件本身也应该被纳入版本控制!这样,所有协作的开发者都会使用相同的忽略规则。所以,创建或修改 .gitignore
文件后,记得 add
、commit
并 push
它。
bash
# 在工作区创建或修改 .gitignore 文件
zz@139-159-150-152:~/git_teaching$ vim .gitignore
# 添加 .gitignore 文件到暂存区
zz@139-159-150-152:~/git_teaching$ git add . # 或者 git add .gitignore
# 提交 .gitignore 文件到本地版本库
zz@139-159-150-152:~/git_teaching$ git commit -m"Add .gitignore file"
[master 97811ab] Add .gitignore file # 生成新提交
1 file changed, 3 insertions(+) # .gitignore 文件被添加了 3 行
create mode 100644 .gitignore
# 推送到远程仓库
zz@139-159-150-152:~/git_teaching$ git push origin master
... # 推送过程输出
To gitee.com:...
60e6b0a..97811ab master -> master
现在,你的 .gitignore
文件已经被添加到远程仓库,所有拉取最新代码的人都会获得这个忽略规则。
验证 .gitignore
是否生效:
我们在工作区创建一些应该被忽略的文件,然后检查 git status
。
bash
# 创建两个应该被忽略的文件
zz@139-159-150-152:~/git_teaching$ touch a.so b.ini
# 查看 Git 状态
zz@139-159-150-152:~/git_teaching$ git status
On branch master
Your branch is up to date with 'origin/master'. # 分支是同步的
nothing to commit, working tree clean # 工作区是干净的
Git 并没有把 a.so
和 b.ini
列为未跟踪的文件(Untracked files)。这证明 .gitignore
规则已经生效了! Git 自动忽略了这些文件。
强制添加被忽略的文件 ( git add -f
):
有时,你可能确实需要将一个通常被忽略的文件强制添加到 Git。比如你生成了一个临时的构建输出文件,想让其他开发者看看。
bash
# 假设 a.so 被忽略,但你这次想强制添加它
$ git add -f a.so
这个命令会忽略 .gitignore
规则,强制将 a.so
添加到暂存区。但请谨慎使用,确保你知道自己在做什么。
检查忽略规则是否生效或找出原因 ( git check-ignore
):
如果你不确定某个文件为什么被忽略(或者为什么没有被忽略),或者想知道是哪条规则导致了忽略,可以使用 git check-ignore
命令。
bash
# 检查 a.so 文件是否被忽略,以及是哪条规则忽略的
zz@139-159-150-152:~/git_teaching$ git check-ignore -v a.so
.gitignore:3:*.so a.so # Git 告诉你:在 .gitignore 文件的第 3 行,*.so 规则忽略了 a.so
-v
参数(verbose)让 Git 详细地告诉你匹配的规则以及它在哪一行。这对于调试 .gitignore
文件非常有用。
.gitignore
** 例外规则 (!
):**
前面提到,可以使用 !
前缀来创建例外规则,让某个文件不被之前的忽略规则忽略。
例如,如果你写了一个规则忽略所有以点开头的隐藏文件:
plain
# 排除所有.开头的隐藏文件:
.*
但是这个规则也会把 .gitignore
文件本身忽略掉!虽然可以用 -f
强制添加,但更好的做法是添加一个例外规则:
plain
# 排除所有.开头的隐藏文件:
.*
# 但不排除 .gitignore 文件本身
!.gitignore
这样,除了 .gitignore
文件,其他以点开头的隐藏文件都会被忽略。
掌握 .gitignore
文件,可以让你更好地管理项目文件,避免将不必要或敏感的文件提交到仓库中,保持仓库的干净和安全。
给命令配置别名:git config alias
问题: 有些 Git 命令比较长,或者一些常用操作需要组合多个命令(比如查看简洁图形日志)。每次都完整地输入这些命令会比较麻烦。Git 允许你给这些命令设置简短的"别名"(alias)。
命令: git config [--global] alias.[你想要的别名] '[原始 Git 命令]'
--global
参数:将这个别名应用到你这台电脑上所有 的 Git 仓库。这是最常用的方式。如果不加--global
,则只对当前所在的 Git 仓库生效。[你想要的别名]
:你为原始命令设置的短名称。'[原始 Git 命令]'
:被别名代替的那个 Git 命令。如果原始命令包含空格或多个部分,需要用引号''
括起来。
操作演示:
- 给
git status
设置别名st
:
bash
# 设置全局别名 st 为 status
$ git config --global alias.st status
设置完成后,在任何 Git 仓库里,输入 git st
就等同于输入 git status
。
bash
zz@139-159-150-152:~/git_teaching$ git st # 输入 git st
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean # 效果和 git status 一样
- 给
git log -1
设置别名last
:git log -1
用于查看最近一次的提交。
bash
# 设置全局别名 last 为 'log -1'
$ git config --global alias.last 'log -1'
bash
zz@139-159-150-152:~/git_teaching$ git last # 输入 git last
commit 97811abd1d43774aeb54fee32bf4fc76b2b08170 (HEAD -> master, origin/master, origin/HEAD)
Author: zz91 <[email protected]>
Date: Fri May 12 17:27:06 2023 +0800
Add .gitignore file # 显示最近一次提交的信息
这也很方便。
你还可以为更复杂的命令设置别名,比如:
git config --global alias.lg "log --graph --pretty=oneline --abbrev-commit"
:将我们常用的简洁图形日志命令设置为git lg
。git config --global alias.unstage 'reset HEAD --'
:将撤销暂存(git reset HEAD --
)设置为git unstage
。
虽然别名能简化操作,但正如你提到的,作为新手,在刚开始学习时,建议多敲完整的命令,这有助于你熟悉 Git 命令的原始用法和参数。等你对常用命令非常熟悉之后,再根据自己的使用习惯设置别名,可以提高效率。
总结
这一章我们学习了两个重要的 Git 配置项:
- 使用
.gitignore
** 文件**来指定 Git 应该忽略的文件和目录,保持仓库的干净和安全。 - 使用
git config alias.[别名] '[命令]'
来为常用的 Git 命令设置别名,简化输入。