记录一些“常用”的使用方式
.gitignore
有些时候,你必须把某些文件放到 git 工作目录中,但又不能提交它们,例如打包生成的 dist 文件。在 git 工作区的根目录下创建一个特殊的 .gitignore 文件,然后把要忽略的文件名填进去,git 就会自动忽略这些文件。
这里可以看一下 element 的 .gitignore
node_modules
.DS_Store
npm-debug.log
yarn-debug.log
yarn-error.log
lerna-debug.log
npm-debug.log.*
yarn-debug.log.*
yarn-error.log.*
lerna-debug.log.*
lib
.idea
.vscode
examples/element-ui
examples/pages/en-US
examples/pages/zh-CN
examples/pages/es
examples/pages/fr-FR
fe.element/element-ui
.npmrc
coverage
waiter.config.js
build/bin/algolia-key.js
.envrc
忽略原则
- 忽略操作系统自动生成的文件;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库;
- 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
文件提交不了
如果配置了 .gitignore 之后,发现有某个文件添加不进去,原因是被忽略了。例如你现在要添加 node_modules,那么就会提示已经被忽略,当然可以通过加上 -f 来强制添加。
$ git add node_modules
The following paths are ignored by one of your .gitignore files:
node_modules
Use -f if you really want to add them.
另外还可以通过 git check-ignore 检查被哪条定义的规则忽略了:
$ git check-ignore -v node_modules
.gitignore:2:node_modules/ node_modules
已经提交过的如何忽略
之前在提交代码时,.gitignore 没有填写完整,例如导致 npm run build 生成的 dist 文件被提交了。然后每次重新打包项目,dist 都会更新,将 dist 填写到.gitignore 规则中,但是运行 git status 的时候,依然能看到这些文件。
这时因为 .gitignore 文件只能作用于 Untracked Files,也就是那些从来没有被 git 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。而 dist 已经被我们提交过来,git 已经追踪。这时候再修改 .gitignore 是无效的。
解决方法是:
git rm -r --cached dist
然后更新 .gitignore 忽略掉目标文件,最后再提交即可。
查看 commit 中修改的文件
git log --name-status:每次修改的文件列表、状态(新增编辑等)

git log --name-only:每次修改的文件列表

git log --stat:每次修改的文件列表和文件修改的统计

git show:最近的一次修改的文件具体内容

git show -x: 查看最近几次修改的文件具体内容,例如查看最近两次修改内容git show -2

git show commitid:查看某个 commit id 对应修改的文件具体内容,例如git show 4f5e3f4

git whatchanged:每次修改的文件列表

git whatchanged --stat:每次修改的文件列表和文件修改的统计
