什么是Git
Git
是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。
特点:项目越大越复杂,协同开发者越多,越能体现出 Git 的高性能和高可用性!
Git的特性
1. 直接记录快照,而非差异比较
2. 近乎所有操作都是本地执行
① 断网后依旧可以在本地对项目进行版本管理
② 联网后,把本地修改的记录同步到云端服务器即可
Git的三个区域
工作区:处理工作的区域,也就是写项目敲代码的区域。
暂存区:给已完成的工作临时存放的区域,等待被提交的区域。
Git仓库:最终的存放区域。
Git的三个状态
-
已修改
modified
-
表示修改了文件,但还没将修改的结果放到暂存区
-
-
已暂存
staged
-
表示对已修改文件的当前版本做了标记,使之包含在下次提交的列表中
-
-
已提交
committed
-
表示文件已经安全地保存在本地的 Git 仓库中
-
Git的安装
在Git官网下载对应的安装包。安装一直下一步就好。
鼠标右键打开能看到这两个终端就是安装成功了,我们使用bash进行命令编写
安装完成后设置自己的用户名和邮件地址。因为通过 Git
对项目进行版本管理的时候,Git
需要使用这些基本信息,来记录是谁对项目进行了操作:
name设置自己的用户名
email设置自己的邮箱地址
git config --global user.name "name"
git config --global user.email "email"
该配置是全局配置,设置一次即可,该配置会生成一个文件,放置在C:/Users/用户名文件夹/.gitconfig
文件中 打开该文件 就是刚刚配置的用户名和邮箱地址。
还可以使用命令查看配置信息。
# 查看所有的全局配置项
git config --list --global
# 查看指定的全局配置项
git config user.name
git config user.email
Git的基本操作
如果自己有一个尚未进行版本控制的项目目录,想要用 Git
来控制它,需要执行如下两个步骤:
① 在项目目录中,通过鼠标右键打开“Git Bash
”
② 执行 git init
命令将当前的目录转化为 Git
仓库
git init
命令会创建一个名为 .git 的隐藏目录,这个 .git 目录就是当前项目的 Git 仓库,里面包含了初始的必要文件,这些文件是 Git 仓库的必要组成部分。
如果看不到.git文件的话 可能是你电脑配置里面没有显示隐藏文件,打开该配置显示隐藏文件即可。
Git基本命令
git status 查看文件处于什么状态(详细报告)
git status -s[等同于git status --short] 查看文件处于什么状态(精简方式)
此时的文件前面有个红色的问号,这是未跟踪文件。
我们可以使用命令
git add index.html (这里的index.html是文件名)
如果想同时跟踪目录下的多个文件可以使用命令 git add .
此时在运行git status 可以看到 文件处于暂存状态 文件是绿色的
如下图
这时候我们需要把暂存的文件提交到本地仓库中去。使用下面命令 引号里面是此次提交的备注,方便之后更好的了解到此次提交的是什么。
git commit -m "新建了index.html文件"
这样子算提交成功 ,我们再次使用git status查看文件状态 ,得到如下提示。
这个提示说明 所有文件都是未修改状态,没有任何文件需要被提交,此时的文件都处于本地仓库。
取消暂存文件
git reset HEAD 要移出的文件名称
跳过使用暂存区域(使用此操作需要文件被跟踪过)
git commit -a -m "日志信息"
移除文件
① 从 Git 仓库和工作区中同时移除对应的文件
② 只从 Git 仓库中移除指定的文件,但保留工作区中对应的文件
# 从 Git仓库和工作区中同时移除 index.js 文件
git rm -f index.js
# 只从 Git 仓库中移除 index.css,但保留工作区中的 index.css 文件
git rm --cached index.css
忽略文件
一般我们总会有些文件无需纳入 Git
的管理,也不希望它们总出现在未跟踪文件列表。 在这种情况下,我们可以创建一个名为 .gitignore
的配置文件,列出要忽略的文件的匹配模式。
文件 .gitignore
的格式规范如下
① 以 # 开头的是注释
② 以 / 结尾的是目录
③ 以 / 开头防止递归
④ 以 ! 开头表示取反
⑤ 可以使用 glob 模式进行文件和文件夹的匹配(glob 指简化了的正则表达式)
.gitignore
文件的例子
查看历史提交
# 按时间先后顺序列出所有的提交历史,最近的提交在最上面
git log# 只展示最新的两条提交历史,数字可以按需进行填写
git log -2# 在一行上展示最近两条提交历史的信息
git log -2 --pretty=oneline# 在一行上展示最近两条提交历史信息,并自定义输出的格式
# &h 提交的简写哈希值 %an 作者名字 %ar 作者修订日志 %s 提交说明
git log -2 --pretty=format:"%h | %an | %ar | %s"
回退到指定版本
# 在一行上展示所有的提交历史
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>
gitee
因为我使用的是gitee所以这次的配置是基于gitee 但是GitHub也差不多,可以自己看着来。
SSH连接
1.打开Git Bash
2.执行如下命令
ssh-keygen -t rsa -b 4096 -C "你自己的邮箱"
回车三次,打开在本机C:\Users\用户名文件夹\.ssh目录下生成的.pub文件 复制到gitee中
下面是生成的两个文件
-
id_rsa(私钥文件,存放于客户端的电脑中即可)
-
id_rsa.pub(公钥文件,需要配置到 Github 中)
在github和码云上都有如何生成SSH key的说明文档,找到入口点进去即可。
-
码云: 个人头像 -> 设置 -> SSH公钥 - 怎样生成SSH公钥
-
GitHub: 个人头像 ->
Settings
->SSH and GPG Keys
-> generating SSH keys
检测SSH key是否配置成功?
打开Git Bash输入如下命令
ssh -T git@gitee.com
基于SSH将本地仓库推送到GitHub
关联本地仓库和远程仓库
git remote add origin 远程仓库SSH地址
将本地分支推送到远程仓库
git push -u origin master
将远程仓库克隆到本地
git clone 远程仓库的地址
关于git的主分支
在实际开发中一般我们分为主分支和功能分支,Git中默认master为主分支。从主分支中分出去的分支部分,就是功能分支,在团队开发中不要直接修改主分支上的代码。
主分支就是整个项目的所有代码。
功能分支就是这个项目所需要的这个功能的代码。
查看本地分支 *号代表当前分支
git branch
查看所有分支
git branch -a
查看远程分支
git branch -r
创建新分支(当前项目中没有该分支)
git branch 新分支名
切换到指定分支
git checkout 要切换到的分支名
合并分支:合并分支之前我们需要切换到主分支上然后在进行合并
git merge 需要合并的分支
删除分支
git branch -d 要删除的分支名
将本地分支推送到远程仓库
git push -u origin 需要推送上去的分支:远程仓库中的分支
拉取远程分支的最新代码
git pull
gitee使用步骤
-
创建文件夹code作为项目文件夹,来管理所有代码
-
在 code 目录中运行
git init
命令,初始化仓库 -
在 code目录中运行
git add .
命令,追踪要托管的文件 -
在 code 目录下运行
git commit -m "init project"
命令,提交到本地仓库 -
新建 Gitee仓库
web_bigeven
-
将本地仓库和Gitee仓库建立关联关系
-
将本地仓库的代码推送到Gitee仓库中
-
运行
git checkout -b login
命令,创建并切换到 login分支 -
完成login分支功能,在 code 目录下运行 git add .命令,追踪修改的文件
-
在 code 目录下运行
git commit -m "finsh login"
命令,提交到本地仓库 -
在 code 目录下运行
git push
命令,推送至远程仓库。