09-Git

GitHub和Git的关系与区别

  • 简单来说,Git只是一个命令行工具,一个分布式版本控制系统。正是它在背后管理和跟踪你的代码历史版本,好比一个时光机,让你在代码出错时不至于手忙脚乱,能快速回退之前的历史版本。 类似的工具还有SVN

  • 而GitHub是一个代码托管网站,背后使用Git作为版本管理工具(而非svn)。主要服务是将你的项目代码托管到云服务器上,而非存储在自己本地硬盘上。
    类似的网站还有gitlab.com,bitbucket.com,coding.com(国内),gitee.com(国内)

1. Git 中的三个区域

使用 Git 管理的项目,拥有三个区域,分别是工作区暂存区Git 仓库(版本库)

2. Git 中的三种状态
  • 已修改 modified

    • 表示修改了文件,但还没将修改的结果放到暂存区
  • 已暂存 staged

    • 表示对已修改文件的当前版本做了标记,使之包含在下次提交的列表中
  • 已提交 committed

    • 表示文件已经安全地保存在本地的 Git 仓库中

注意:

  • 工作区的文件被修改了,但还没有放到暂存区,就是已修改状态。
  • 如果文件已修改并放入暂存区,就属于已暂存状态。
  • 如果 Git 仓库中保存着特定版本的文件,就属于已提交状态。
3. 基本的 Git 工作流程

基本的 Git 工作流程如下:

① 在工作区中修改文件(新建、修改内容、删除都属于修改操作)

② 将你想要下次提交的更改进行暂存

提交更新,找到暂存区的文件,将快照永久性存储到 Git 仓库

4. 工作区中文件的 4 种状态

工作区中的每一个文件可能有 4 种状态,这四种状态共分为两大类,如图所示:image-20220223103220537

四种转态

**Git 操作的终极结果:让工作区中的文件都处于“未修改”**的状态。

image-20220223103302385 img image-20220223201949964

git 基本命令

命令描述
clear清屏
config --list查看配置信息
config --list --global查看所有的全局配置项
config user.name查看某一个配置项(指定的全局配置项)
git help 或 git -h帮助信息
git help add查看 add
git add -h查看 add
git init初始化仓库
git clone克隆git 上面代码
status --short查看当前文件转态
status -s查看当前文件转态
add index.html问件添加到暂存区
add .add 文件1 文件2 add . 所有文件添加
commit -m “新建了123.txt文件”提交到仓库
:q退出不提交
git commit -a -m “跳过了暂存区,直接提交^C仓库”跳过了暂存区,直接提交^C仓库 , 新创建的文件,未跟踪的文件不可以
.gitignore忽略一些文件/文件夹(更目录)
git diff查看修改内容

返悔操作

命令说明
git log查看提交历史 , 回车下一页
git reflog查看历史命令
git log -2 --pretty=oneline在一行上展示最近两条提交历史的信息
git checkout – index.html撤销对文件的修改 危险性比较高,请慎重操作!
git reset HEAD index.html取消暂存文件
git reset HEAD .取消所有文件暂存
git rm -f index.html同时删除工作区和仓库中的文件 ,删完要提交commit -m
git rm --cache 111.txt删除本地仓库, 保留工作区文件 删完要提交commit -m
reset --hard 111回退到指定版本

撤销对文件的修改

  • git checkout – index.html

取消暂存的文件

  • git reset HEAD 要移出的文件名称
  • git reset 文件名称

从 Git 仓库中移除文件

  • git rm -f index.js Git仓库和工作区中同时移除
  • git rm --cached index.css 只从 Git 仓库中移除 ,但保留工作区中的

回退版本

  • git reflog 查看历史记录
  • git reset --hard 指定的提交 ID 回退到指定版本

.gitignore格式规范(听一嘴)

image-20220223115351847

文件 .gitignore 的格式规范如下:

① 以 # 开头的是注释

② 以 / 结尾的是目录

③ 以 / 开头防止递归

④ 以 ! 开头表示取反

⑤ 可以使用 glob 模式进行文件和文件夹的匹配(glob 指简化了的正则表达式)

  • 星号 * 匹配零个或多个任意字符
  • [abc] 匹配任何一个列在方括号中的字符 (此案例匹配一个 a 或匹配一个 b 或匹配一个 c)
  • 问号 ? 只匹配一个任意字符
  • 两个星号 ** 表示匹配任意中间目录(比如 a/**/z 可以匹配 a/z 、 a/b/z 或 a/b/c/z 等)
  • 在方括号中使用短划线分隔两个字符, 表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)

gitignore 文件的例子

反悔操作

【1】撤销对文件的修改

**撤销对文件的修改指的是:**把对工作区中对应文件的修改,还原成 Git 仓库中所保存的版本。

**操作的结果:**所有的修改会丢失,且无法恢复!危险性比较高,请慎重操作!

git checkout -- index.html

**撤销操作的本质:**用 Git 仓库中保存的文件,覆盖工作区中指定的文件。

【2】取消暂存的文件

如果需要从暂存区中移除对应的文件,可以使用如下的命令:

git reset HEAD 要移出的文件名称 或者 git reset 文件名称
【3】移除文件

从 Git 仓库中移除文件的方式有两种:

① 从 Git 仓库和工作区中同时移除对应的文件

② 只从 Git 仓库中移除指定的文件,但保留工作区中对应的文件

# 从 Git仓库和工作区中同时移除 index.js 文件
git rm -f index.js
# 只从 Git 仓库中移除 index.css,但保留工作区中的 index.css 文件
git rm --cached index.css

注意:删除操作执行完,需要再做一次commit提交。

【4】回退版本
第1步,查看提交历史

如果希望回顾项目的提交历史,可以使用 git log 这个简单且有效的命令

# 按时间先后顺序列出所有的提交历史,最近的提交在最上面
git log

# 只展示最新的两条提交历史,数字可以按需进行填写
git log -2

# 在一行上展示最近两条提交历史的信息
git log -2 --pretty=oneline

# 在一行上展示最近两条提交历史信息,并自定义输出的格式
# &h 提交的简写哈希值  %an 作者名字  %ar 作者修订日志  %s 提交说明
git log -2 --pretty=format:"%h | %an | %ar | %s"
第2步,回退到指定的版本
# 在一行上展示所有的提交历史
git log --pretty=oneline

# 使用 git reset --hard 命令,根据指定的提交 ID 回退到指定版本
git reset --hard <CommitID>

# 在旧版本中使用 git reflog --pretty=oneline 命令,查看命令操作的历史
git reflog --pretty=onelone

# 再次根据最新的提交 ID,跳转到最新的版本
git reset --hard <CommitID>

创建远程仓库

  • 创建 git 仓库
命令说明
mkdir name (文件夹名)新建文件夹 name
cd name (文件夹名)进入 name 文件夹
git init初始化项目
touch README.md (文件名)新建 README.md 文件
git add README.md文件放入缓存区
git commit -m “放到缓存区”文件放到缓存区
git remote add origin https://光联远程地址
git push把本地仓库推送到远程仓库
  • 已有仓库
命令说明
git remote add origin https://光联远程地址
git push把本地仓库推送到远程仓库

在这里插入图片描述

分支操作

分支操作

本地仓库推送到远程仓库

1. https方式

image-20220225100707834

2. ssh方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ytrGsaFL-1649854776111)(C:\Users\shenlongfei\AppData\Roaming\Typora\typora-user-images\image-20220325113615744.png)]

多人协作流程

image-20220225093518045

推送失败

解决 : 先拉后推

image-20220225093646207

拉取冲突

解决 :

  • 手动确定保留哪些代码
    • image-20220315163800433
  • 提交到本地仓库
    • git add .
      git commit -m再次提交
  • 再去推送代码到远程仓库
    • git push

image-20220225093808732

参考文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值