Git基本使用
# 常用命令
查看日志
git log
# 分支命令
查看分支
git branch
切换分支
git checkout master
合并分支到master
git add.
git commit -m'dev'
git push -u origin dev
git checkout master
git pull orgin master
git merge dev
git push orgin master
2
3
4
5
6
7
# tag命令
查看所有标签
git tag
添加标签
git tag -a v1.0.0 -m'add 1.0.0'
给tag标签重命名
git tag newtag oldtag
git tag -d oldtag
git push origin :refs/tags/oldtag
git push --tags
2
3
4
修改提交日志
git commit --amend
git push origin master --forece
2
# gitignore
应该忽略哪些文件
被忽略的文件通常是特定于平台的文件或从构建系统自动创建的文件。一些常见的例子包括:运行时文件,例如日志,锁定文件,缓存或临时文件。具有敏感信息的文件,例如密码或API密钥。已编译的代码,例如.class或.o。依赖目录,例如/vendor或/node_modules。构建的输出目录,例如/public,/out或/dist。系统文件,例如.DS_Store或Thumbs.db。IDE或文本编辑器配置文件。
注释
以井号(#)开头的行是注释,将被忽略。空行可以用来提高文件的可读性,并可以对相关的模式行进行分组。
斜杠符
斜杠符号(/)是目录的分隔符。斜杠开头模式相对于.gitignore所在的目录。如果模式以斜杠开头,则仅从仓库的根目录中开始匹配文件和目录。如果模式不是以斜杠开头,则它将匹配任何目录或子目录中的文件和目录。 如果模式以斜杠结尾,则仅匹配目录。当目录被忽略时,其所有文件和子目录也将被忽略。
文件名
最直接的模式是没有任何特殊字符的文件名。例如/access.log仅匹配access.log。而access.log将会匹配当前目录与子目录 access.log,logs/access.log ,var/logs/access.log。当以/斜杠符号结束时则匹配目录。例如build/匹配build目录。
通配符
星号符号匹配零个或多个字符。例如.log模式将匹配error.log,logs/debug.log,build/logs/error.log等所有目录下以.log作为扩展名的文件。
**两个相邻的星号符号匹配任何文件或零个或多个目录。当后跟斜杠(/)时,它仅与目录匹配。例如,logs/将会匹配logs目录中所有文件与目录。/build将匹配所有目录中出现以build命名目录与文件var/build,pub/build。
模式foo/**/bar将匹配foo/bar,foo/a/bar,foo/a/b/c/bar。
?问号匹配单个任意字符。例如模式access?.log将会匹配access0.log,access1.log,accessA.log 。
方括号
[...]方括号匹配方括号中包含的字符。当两个字符之间用连字符-隔开时,表示一个字符范围。该范围包括这两个字符之间的所有字符。范围可以是字母或数字。如果[之后的第一个字符是感叹号(!),则该模式匹配除指定集合中的字符以外的任何字符。
例如模式*.[oa]将匹配文件file.o,file.a。模式*.[!oa]将匹配file.s,file.1但不匹配file.0与file.a。
反模式
以感叹号(!)开头的模式将否定先前模式。此规则的例外是,如果排除了其父目录,则重新包含文件。例如模式 *.log与!error.log这将会匹配所有以.log作为扩展名文件,但不匹配error.log。
.gitignore范例
# 忽略 node_modules 目录
node_modules/
# 忽略Logs
logs
*.log
# 忽略/dist目录,相对.gitignore文件所在目录
/dist
# 忽略.nev文件
.env
# 忽略IDE的配置文件
.idea/
.vscode/
*.sw*
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
个人忽略规则
应在.git/info/exclude文件中配置特定于本地仓库且不应分发到其他仓库的模式。例如,你可以使用此文件忽略个人项目工具中生成的文件。
全局.gitignore
Git还允许你创建全局.gitignore文件,你可以为本地系统上的每个Git仓库定义忽略规则。该文件可以命名为任意名称,并存储在任何位置。保存此文件的最常见位置是主目录。你必须手动创建文件并配置Git使用它。
例如,要将~/.gitignore_global设置为全局Git忽略文件,你可以执行以下操作。首先创建文件:
touch ~/.gitignore_global
将文件添加到Git配置:
git config --global core.excludesfile ~/.gitignore_global
使用文本编辑器打开文件并向其中添加规则。全局规则对于忽略你永远不想提交的特定文件(例如带有敏感信息或已编译的可执行文件的文件)特别有用。
忽略以前提交的文件
你的工作副本中的文件可以被追踪,也可以不被追踪。要忽略先前提交的文件,你需要取消暂存并从索引中删除该文件,然后在.gitignore中添加该文件模式:
git rm --cached filename
--cached选项告诉git不要从工作树中删除文件,而只是从索引中删除它。要递归删除目录,请使用-r选项:
git rm --cached filename
如果要从索引和本地文件系统中删除文件,请忽略--cached选项。以递归方式删除文件时,使用-n选项将执行空运行并显示要删除的文件:
git rm -r -n diredtory
调试.gitignore文件
有时候,确定为什么要忽略特定文件可能会很困难,尤其是当你使用多个.gitignore文件或复杂格式时。这是git check-ignore命令的用处,告诉git显示匹配模式的详细信息。
例如,要检查为什么忽略www/yarn.lock文件,可以运行:
git check-ignore -v www/yarn.lock
输出显示gitignore文件的路径,匹配行的编号和实际模式。
www/.gitignore:31:/yarn.lock www/yarn.lock
该命令还接受多个文件名作为参数,并且文件不必存在于你的工作树中。
git status --ignored