本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
git
git简介
Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。
特点:项目越大越复杂,协同开发者越多,越能体现出 Git 的高性能和高可用性!
git配置用户信息
安装完 Git 之后,要做的第一件事就是设置自己的用户名和邮件地址。因为通过 Git 对项目进行版本管理的时候,Git 需要使用这些基本信息,来记录是谁对项目进行了操作:
window+R打开cmd,然后可以输入
git config --global user.name"用户名"
git config --global user:email"邮箱"
查看所有配置项:git config --list --global
git中文件的三种状态
-
已修改(modified)
表示修改了文件,但还没将修改的结果放到暂存区
-
已暂存 (staged)
表示对已修改文件的当前版本做了标记,使之包含在下次提交的列表中
-
已提交(committed)
表示文件已经安全地保存在本地的 Git 仓库中
文件状态
工作区的文件被修改了,但还没有放到暂存区,就是已修改状态。
如果文件已修改并放入暂存区,就属于已暂存状态。
如果 Git 仓库中保存着特定版本的文件,就属于已提交状态。
git的工作流程
- 在工作区中修改文件
- 将你想要下次提交的更改进行暂存
- 提交更新,找到暂存区的文件,将快照永久性存储到 Git 仓库
git的基本操作
获取git仓库
-
将尚未进行版本控制的本地目录转换为 Git 仓库
在项目目录,鼠标右键 Git Bash Here打开git的命令行
输入git指令 : git init 这样就将当前项目转化为git仓库了
-
从其它服务器克隆一个已存在的 Git 仓库
输入指令 git clone url(项目服务器地址)
工作区文件的四种状态
在工作区中,多了一种状态是未跟踪(Untracked) ,未跟踪是不被git管理的文件,被管理也就是被跟踪的文件就是上述git的三种状态:1.未修改2.已修改3.已暂存
常用git命令
git仓库初始化(在当前目录创建git仓库) :git init
检查文件状态 : git status
跟踪新文件: git add 文件名 (被跟踪的文件将处于暂存状态)
使用git add . 可以一次性将所有的新增和修改过的文件加入暂存区
提交更新: git commit -m "更新信息" 将暂存状态的文件提交到git仓库,提示信息是对本次提交内 容做出补充
忽略文件
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 在这种情况下,我们可以创建一个名为 .gitignore 的配置文件,列出要忽略的文件的匹配模式。
文件 .gitignore 的格式规范如下:
- 以 # 开头的是注释
- 以 / 结尾的是目录
- 以 / 开头防止递归
- 以 ! 开头表示取反
- 可以使用 glob 模式进行文件和文件夹的匹配(glob 指简化了的正则表达式)
所谓的 glob 模式是指简化了的正则表达式:
① **星号 *** 匹配零个或多个任意字符
② [abc] 匹配任何一个列在方括号中的字符 (此案例匹配一个 a 或匹配一个 b 或匹配一 个 c)
③ 问号 ? 只匹配一个任意字符
④ 在方括号中使用短划线分隔两个字符, 表示所有在这两个字符范围内的都可以匹配 (比如 [0-9] 表示匹配所有 0 到 9 的数字)
⑤ 两个星号 **** 表示匹配任意中间目录(比如 a//z 可以匹配 a/z 、 a/b/z 或 a/b/c/z 等)
本地分支操作
分支
分支就是当前项目的一个副本,开发人员可以在不同的分支开发不同的模块
主分支master
在初始化本地 Git 仓库的时候,Git 默认已经帮我们创建了一个名字叫做 master 的分支。通常我们把这个 master 分支叫做主分支
master 主分支的作用是:用来保存和记录整个项目已完成的功能代码
当分支功能都开发并且测试完毕后,最终都需要合并在master上
分支操作
查看当前git仓库中所有分支 git branch
创建新分支 git branch 分支名
切换分支 git checkout 分支名
创建新分支并且切换到该分支上 git checkout -b 分支名
在当前合并另一个分支 git marge 被合并的分支名 (被合并的分支的代码会被复制到当前分支上)
合并冲突l合并分支冲突情况很多,实际工作应该避免。如下为冲突情况之一:
- 同时创建两个分支
- 两个分支分别提交
- 两个分支修改同一个文件代码
- 任何一个分支合并给另一个分支,即出现合并冲突
出现合并冲突后应和另一个分支的开发者沟通决定如何处理