一、Git是什么?
Git是一种免费开源的分布式版本控制系统,它被设计用来快速高效地管理项目开发的源码。
二、Git安装
git的安装十分简单,在官网下载后只需要一直下一步就好。window安装地址:https://git-scm.com/download/win
安装完成之后可以通过git - v
查看是否安装成功
如果出现了git的版本则说明安装成功
安装之后我们在使用git前,我们需要配置一下两个属性name和email,这两个信息会用来在存储代码时记录用户的身份。可以直接在命令行中通过指令来设置:
git config --global user.name "xxx"
git config --global user.email "xxx"
三 Git文件状态
文件状态
git中的文件有两种状态:未跟踪和已跟踪。未跟踪指文件没有被git所管理,已跟踪指文件已被git管理。已跟踪的文件又有三种状态:未修改、修改和暂存。
暂存,表示文件修改已经保存,但是尚未提交到git仓库。
未修改,表示磁盘中的文件和git仓库中文件相同,没有修改。
已修改,表示磁盘中文件已被修改,和git仓库中文件不同。
可以通过git status来查看文件的状态
四 Git基本命令及作用
- git init:初始化仓库
git init
默认情况下,磁盘中的文件并不由git管理,我们必须要对代码目录进行初始化,初始化后git才能正常的管理文件。使用 git init 命令在项目根目录中初始化一个Git仓库,这将在项目中创建一个.git的子目录。下面就是创建了一个空的仓库
- git add:添加文件到暂存区
git add *
使用 git add 命令将修改的文件添加到Git暂存区中,以便进行下一步操作。
这是未跟踪状态,我们使用git add
命令将其状态变为已跟踪且加入暂存区
- git commit:提交更改到本地仓库
git commit -m '代码提交信息'
这是把文件从暂存状态变为了未修改
当修改代码后,文件状态会从未修改变为修改状态
- git log:查看提交历史
每次提交后可以使用git log
查看提交记录
git log
- git rm :删除文件
git rm <filename>
git rm <filename> -f #强制删除
- git restore :回退文件
git restore <filename>
git restore --staged <filename> #从暂存取消
7 git mv from to :移动文件重命名
git mv from to
五 分支(重点)
git在存储文件时,每一次代码代码的提交都会创建一个与之对应的节点,git就是通过一个一个的节点来记录代码的状态的。节点会构成一个树状结构,树状结构就意味着这个树会存在分支,默认情况下仓库只有一个分支,命名为main。在使用git时,可以创建多个分支,分支与分支之间相互独立,在一个分支上修改代码不会影响其他的分支。
git branch # 查看当前分支
git branch <branch name> # 创建新的分支
git branch -d <branch name> # 删除分支
git switch <branch name> # 切换分支
git switch -c <branch name> # 创建并切换分支
git merge <branch name> # 合并分支
当分支在一条线的时候可以快速合并, 当分支发生冲突时,可以手动解决冲突再合并
变基(rebase)
在开发中除了通过merge来合并分支外,还可以通过变基来完成分支的合并。
我们通过merge合并分支时,在提交记录中会将所有的分支创建和分支合并的过程全部都显示出来,这样当项目比较复杂,开发过程比较波折时,我必须要反复的创建、合并、删除分支。这样一来将会使得我们代码的提交记录变得极为混乱。
原理(变基时发生了什么):
- 当我们发起变基时,git会首先找到两条分支的最近的共同祖先
- 对比当前分支相对于祖先的历史提交,并且将它们提取出来存储到一个临时文件中
- 将当前部分指向目标的基底
- 以当前基底开始,重新执行历史操作
变基和merge对于合并分支来说最终的结果是一样的!但是变基会使得代码的提交记录更整洁更清晰!注意!大部分情况下合并和变基是可以互换的,但是如果分支已经提交给了远程仓库,那么这时尽量不要变基。