Git入门
1.初次运行Git的配置
git config --list --show-origin
git config --global user.name <name>
git config --global user.email <email>
2.Git命令帮助
git help <verb>
git <verb> --help
man git <verb>
# simple list
git <verb> -h
3.获取Git仓库
# 1.在已有目录下初始化
git init
# 2.克隆仓库
git clone <url> <floder_name>
4.记录每次更新到新仓库
检查文件状态
git status
# 精简输出
git status
跟踪新文件
git add <filename>
可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。 将这个命令理解为“精确地将内容添加到下一次提交中”而不是“将一个文件添加到项目中”要更加合适。
忽略文件
文件.gitignore
的格式规范:
- 所有空行或者以 # 开头的行都会被 Git 忽略。
- 可以使用标准的 glob 模式匹配,它会递归地应用在整个工作区中。
- 匹配模式可以以(/)开头防止递归。
- 匹配模式可以以(/)结尾指定目录。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。 星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符 (这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c); 问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符, 表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。 使用两个星号(**)表示匹配任意中间目录,比如 a/**/z 可以匹配 a/z 、 a/b/z 或 a/b/c/z 等。
要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。
# 忽略所有的 .a 文件
*.a
# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a
# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO
# 忽略任何目录下名为 build 的文件夹
build/
# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt
# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf
查看已暂存或未暂存的修改
# 1.查看未暂存的修改
git diff
# 2.查看已暂存的修改
git diff --staged
提交更新
git commit -m <message>
# 跳过使用暂存区域
git commit -a -m <message>
给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤
移除文件
# 1.从版本管理中移除该文件
git rm <filename>
# 2.文件保留在磁盘,Git不再跟踪
git rm --cached <filename>
移动文件
git mv <file_from> <file_to>
5.git日志
# 显示每次提交所引入的差异, -2 选项来只显示最近的两次提交
git log -p -2
选项 | 说明 |
---|---|
-p | 按补丁格式显示每个提交引入的差异 |
--stat | 显示每次提交的文件修改统计信息 |
--shortstat | 只显示--stat中最后的行数修改添加移除统计 |
--name-only | 仅在提交信息后显示已修改的文件清单 |
--name-status | 显示新增、修改、删除的文件清单 |
--abbrev-commit | 仅显示SHA-1校验和所有40个字符中的前几个字符 |
--relative-date | 使用较短的相对时间 |
--graph | 在日志旁以ASCII图形显示分支与合并历史 |
--pretty | 使用其他格式实现历史提交信息 |
--oneline | --pretty=oneline --abbrev-commit的简写 |
限制输出长度
选项 | 说明 |
---|---|
- |
仅显示最近的n条提交 |
--since,--after | 仅显示指定时间之后的提交 |
--until,--before | 仅显示指定时间之前的提交 |
--author | 仅显示作者匹配制定字符串的提交 |
--committer | 仅显示提交者匹配指定字符串的提交 |
--grep | 仅显示提交说明中包含制定字符串的提交 |
-S | 仅显示添加或删除内容匹配制定字符串的提交 |
6.撤销操作
撤销操作
场景:提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了
git commit --amend
这个命令会将暂存区中的文件提交。 如果自上次提交以来你还未做任何修改(例如,在上次提交后马上执行了此命令), 那么快照会保持不变,而你所修改的只是提交信息。
文本编辑器启动后,可以看到之前的提交信息。 编辑后保存会覆盖原来的提交信息。
例如,你提交后发现忘记了暂存某些需要的修改,可以像下面这样操作:
git commit -m 'initial commit'
git add <forgotten_file>
git commit --amend
最终你只会有一个提交——第二次提交将代替第一次提交的结果。
取消暂存的文件
git reset HARD <file_name>
撤销对文件的修改
方便地撤消修改——将它还原成上次提交时的样子(或者刚克隆完的样子,或者刚把它放入工作目录时的样子)
git checkout -- <file_name>