什么是git
git是一个开源的分布式版本控制系统,是目前世界上最先进,最流行的版本控制系统.
git的特性
- 直接记录快照,而非差异比较
- 近乎所有的操作都是本地执行
git中的三个区域
使用 Git
管理的项目,拥有三个区域,分别是工作区、暂存区、Git
仓库
配置用户信息
git config --global user.name "xiao"
git config --global user.email "xlj940511@163.com"
检查配置信息
//查看所有的全局配置项
git config --list --global
//查看指定的全局配置项
git config user.name
git config user.email
获取帮助信息
# 打开git config 命令的帮助手册
git help config
如果不想查看完整的手册,那么可以用-h选项获得更简明的help输出
# 想要获取 git config 命令的快速参考
git config -h
git 的基本操作
# 初始化仓库
git init
# 检查文件的状态
git status
# 以精简的方式显示文件状态
git status -s
# 跟踪新文件
git add index.html
# 向暂存区中一次性添加多个文件
git add .
# 提交更新
git commit -m "新建了index.html 文件"
# 撤销对文件的修改(危险性极高,慎用)
git checkout -- index.html
# 取消暂存的文件
git reset HEAD 要移出的文件名称
# 跳过使用暂存区域
git commit -a -m '日志信息'
# 从 Git仓库和工作区中同时移除 index.js 文件
git rm -f index.js
# 只从 Git 仓库中移除 index.css,但保留工作区中的 index.css 文件
git rm --cached index.css
# 查看提交历史
git log
# 在一行上展示所有的提交历史
git log --pretty=oneline
# 使用 git reset --hard 命令,根据指定的提交 ID 回退到指定版本
git reset --hard <CommitID>
# 在旧版本中使用 git reflog --pretty=oneline 命令,查看命令操作的历史
git reflog --pretty=oneline
# 再次根据最新的提交 ID,跳转到最新的版本
git reset --hard <CommitID>
忽略文件
一般我们总会有些文件无需纳入 Git
的管理,也不希望它们总出现在未跟踪文件列表。 在这种情况下,我们可以创建一个名为 .gitignore
的配置文件,列出要忽略的文件的匹配模式。
文件 .gitignore
的格式规范如下:
① 以 # 开头的是注释
② 以 / 结尾的是目录
③ 以 / 开头防止递归
④ 以 ! 开头表示取反
⑤ 可以使用 glob 模式进行文件和文件夹的匹配(glob 指简化了的正则表达式)
- 星号 * 匹配零个或多个任意字符
[abc]
匹配任何一个列在方括号中的字符 (此案例匹配一个 a 或匹配一个 b 或匹配一个 c)- 问号 ? 只匹配一个任意字符
- 两个星号 ** 表示匹配任意中间目录(比如 a/**/z 可以匹配 a/z 、 a/b/z 或 a/b/c/z 等)
- 在方括号中使用短划线分隔两个字符, 表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)
.gitignore文件的例子
# 忽略所有的 .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
将远程仓库克隆到本地
git clone 远程仓库的地址
git分支
# 查看分支列表
git branch
# 创建新分支
git branch 分支名称
# 切换分支
git checkout login
# 分支的快速创建和切换
git checkout -b 分支名称
合并分支
# 1. 切换到 master 分支
git checkout master
# 2. 在master 分支上运行 git merge 命令,将 login 分支的代码合班到 master 分支
git merge login
删除分支
git branch -d 分支名称
遇到冲突时的分支合并
如果在两个不同的分支中,对同一个文件进行了不同的修改,Git 就没法干净的合并它们。 此时,我们需要打开这些包含冲突的文件然后手动解决冲突。
# 假设:在把 reg 分支合并到 master 分支期间
git checkout master
git merge reg
# 打开包含冲突的文件,手动解决冲突之后,再执行如下命令
git add .
git commit -m "解决了分支合并冲突的问题"
将本地分支推送到远程仓库
# -u 表示把本地分支和远程分支进行关联,只在第一次推送的时候需要带 -u 参数
git push -u 远程仓库的别名 本地分支名称:远程分支名称
# 实际案例
git push -u origin payment:pay
# 如果希望远程分支的名称和本地分支名称保持一致,可以对命令进行简化
git push -u origin payment
跟踪分支
跟踪分支指的是:从远程仓库中,把远程分支下载到本地仓库中。需要运行的命令如下:
# 示例
git checkout pay
# 从远程仓库中,把对应的远程分支下载到本地仓库,并把下载的本地分支进行重命名
git checkout -b 本地分支名称 远程仓库名称/远程分支名称
# 示例
git checkout -b payment origin/pay
拉取远程分支的最新的代码
# 从远程仓库,拉取当前分支最新的代码,保持当前分支的代码和远程分支代码一致
git pull
删除远程分支
# 删除远程仓库中,制定名称的远程分支
git push 远程仓库名称 --delete 远程分支名称
# 示例
git push origin --delete pay