Git简介
1.git是干什么的
git是免费开源的版本控制系统,它被设计用来快速高效的管理项目开发的源码
2.那什么是版本控制?
版本控制就是管理代码不同版本、记录修改历史、支持多人协作、可以随时回退的代码管理方式
3.为什么我们需要版本控制系统?
那是因为我们项目的开发实际上是不断迭代的过程。
4.因为我们提交的代码他可能会出现一系列问题比如:
(1) bug
(2) 用户需求变化
(3) 代码过时,需要优化
5.因此,我们需要不断的对代码进行编正和修改,这就又会带来很多问题。
(1) 开发中代码会存在多个版本,如何将代码在多个版本间切换?
(2) 代码上线后,如何在不影响开发工作的情况下对代码进行维护
(3) 开发时,某段代码被多人修改时,如何处理代码的冲突问题
(4) 存储效率,远程仓库的问题等
6.git有什么用呢
(1) 通过git可以跟踪代码的状态
(2) 修改代码后,对代码进行存储
(3) 还可以在需要时,将已经修改过的代码恢复到之前存储的状态
(4) git管理代码时,可以创建代码分支(branch)
什么是代码分支
代码分支相当于一段独立的代码记录,我们可以对分支上的代码进行任意修改,而这个修改之后影响当前分支,不会对其他分支产生影响。同时,可以对分支进行合并,合并后一个分支的修改可以在另一分支上生效。
7.git安装
非常简单,只有两步。找到官网,无脑next
8.检查
终端,git -v
9.git使用
1.配置
(1) name配置: git config --global user.name "名字"
这段代码意思是:配置全局的user的name属性
(2) email配置:git config --global user.email "电子邮件"
为什么要进行配置
多个程序员维护一段代码,我们对代码进行修改,需要把代码提交到git仓库就出现了个问题?这个代码是谁提的,为了进行区分,name和email就是我们提交代码的一个标识,在学习阶段无所谓写什么,如果是团队协作那这个就需要填写正确的信息
2.git管理(git status查看当前仓库的状态)
我们怎么看一个文件是否在git下管理
(1)打开该文件目录下的终端
(2)在终端输入git status
如果出现 not a git repository (or any of the parent directories): .git 说明现在的目录没有被git所管理
我们怎么让这个项目归git管理呢
对项目初始化: git init
当出现:Initialized empty Git repository in xxx 说明初始化成功
此时文件夹下会出现.git文件,可能操作系统默认隐藏 .开头的文件 用 command + shift +. (Mac) 可以显示,或者去编辑器里面可以看到
如果我们不希望项目被git管理时,只需要删除.git就行了
3.文件状态
项目被git所管理后,git文件有两种状态,未跟踪和已跟踪。未跟踪的文件没有被git所管理,已跟踪的文件已被git所管理。已跟踪的文件又有三种状态,未修改、修改和暂存
(1)未跟踪
刚刚添加到项目中的文件处于未跟踪状态。当你使用 git status时,就会出现 Untracked files:xxxx。
如果你需要跟踪这个文件,需要把未跟踪状态切换到暂存状态(也就是跟踪状态)
git add + 文件名
当出现 Changes to be committed:xxx 字面意思就是变了但是还没提交,这不就是我们说的暂存 吗
(2)已跟踪
暂存,表示文件修改已经保存,但是尚未提交到git仓库
未修改,表示磁盘中的文件和git仓库文件相同,没有修改
已修改,表示磁盘文件已被修改,和git仓库中文件不同
可以通过 git status查看文件状态
所以我们提交逻辑应该是 已修改----暂存----(提交到仓库)----未修改
提交到仓库这一步是便于理解写的 它并不属于文件状态之一
这里的(未修改)代表经过一轮提交了,磁盘中的文件和git仓库文件相同。实际上,被git所跟踪的文件它一直是在这三种状态之间切换
当我们处于暂存状态,我们怎么让它入库呢
git commit -m "xxx" 将暂存的文件存储到仓库中,这里的m 是 message的意思,这个xxx就是用来描述这次提交的说明文字,
比如“初始化项目”、“修改登录Bug”
commit过后 文件由 暂存----未修改 状态
未修改状态
当出现 nothing to commit, working tree clean说明我们所有文件都提交了,并且和git仓库文件是保存一致的
怎么让它处于修改状态
当你修改代码时,文件自动变为修改状态
经过上面描述不难发现,如果你想让修改状态重新变为未修改状态,那就得先进过暂存也就是 add ,然后再commit,这就相当于一个循环的过程
对于上述情况,我们进行提交会发现有点麻烦,此时可以使用 git commit -a -m "xxx",这里的**-a**是all的意思,相当于帮你
省略了手动git add 的步骤(未跟踪的文件不会提交)