Git&Github基础知识附完美解决[rejected] master -> master (fetch first)问题方法

文章目录

关于版本控制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本地版本控制系统

在这里插入图片描述

集中化的版本控制系统

在这里插入图片描述

分布式版本控制系统

在这里插入图片描述

Git 基础概念

Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。

特点:项目越大越复杂,协同开发者越多,越能体现出 Git 的高性能和高可用性!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Git 中的三个区域

在这里插入图片描述

Git 中的三种状态

在这里插入图片描述

基本的 Git 工作流程

在这里插入图片描述

Git 的基本操作

Git下载

官网
在这里插入图片描述
安装完成
在这里插入图片描述

配置用户信息

在这里插入图片描述
在这里插入图片描述

Git 的全局配置文件

在这里插入图片描述
在这里插入图片描述

检查配置信息

在这里插入图片描述
在这里插入图片描述

获取帮助信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在现有目录中初始化仓库

在这里插入图片描述
在这里插入图片描述

工作区中文件的 4 种状态

在这里插入图片描述

检查文件的状态

在这里插入图片描述
在这里插入图片描述

以精简的方式显示文件状态

在这里插入图片描述
在这里插入图片描述

跟踪新文件

在这里插入图片描述
在这里插入图片描述

提交更新

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对已提交的文件进行修改

在这里插入图片描述
在这里插入图片描述

暂存已修改的文件

目前,工作区中的 index.html 文件已被修改,如果要暂存这次修改,需要再次运行 git add 命令,这个命令是个多功能的命令,主要有如下 3 个功效:

  • 可以用它开始跟踪新文件
  • 把已跟踪的、且已修改的文件放到暂存区
  • 把有冲突的文件标记为已解决状态

在这里插入图片描述
在这里插入图片描述

提交已暂存的文件

再次运行 git commit -m “提交消息” 命令,即可将暂存区中记录的 index.html 的快照,提交到 Git 仓库中进行保存:
在这里插入图片描述
在这里插入图片描述

撤销对文件的修改

撤销对文件的修改指的是:把对工作区中对应文件的修改,还原成 Git 仓库中所保存的版本。
操作的结果:所有的修改会丢失,且无法恢复!危险性比较高,请慎重操作!
在这里插入图片描述

向暂存区中一次性添加多个文件

在这里插入图片描述
在这里插入图片描述

取消暂存的文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

跳过使用暂存区域

Git 标准的工作流程是工作区 → 暂存区 → Git 仓库,但有时候这么做略显繁琐,此时可以跳过暂存区,直接将工作区中的修改提交到 Git 仓库,这时候 Git 工作的流程简化为了工作区 → Git 仓库。

Git 提供了一个跳过使用暂存区域的方式, 只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤:
在这里插入图片描述

移除文件

在这里插入图片描述

忽略文件 .gitignore

一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 在这种情况下,我们可以创建一个名为 .gitignore 的配置文件,列出要忽略的文件的匹配模式。
文件 .gitignore 的格式规范如下:

  • 以 # 开头的是注释
  • 以 / 结尾的是目录
  • 以 / 开头防止递归
  • 以 ! 开头表示取反
  • 可以使用 glob 模式进行文件和文件夹的匹配(glob 指简化了的正则表达式)

glob 模式

所谓的 glob 模式是指简化了的正则表达式:

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

.gitignore 文件的例子

在这里插入图片描述

查看提交历史

如果希望回顾项目的提交历史,可以使用 git log 这个简单且有效的命令。
在这里插入图片描述

回退到指定的版本

在这里插入图片描述
在这里插入图片描述

开源许可协议

开源并不意味着完全没有限制,为了限制使用者的使用范围和保护作者的权利,每个开源项目都应该遵守开源许可协议( Open Source License )。

  • BSD(Berkeley Software Distribution)
  • Apache Licence 2.0
  • GPL(GNU General Public License)
    • 具有传染性的一种开源协议,不允许修改后和衍生的代码做为闭源的商业软件发布和销售
    • 使用 GPL 的最著名的软件项目是:Linux
  • LGPL(GNU Lesser General Public License)
  • MIT(Massachusetts Institute of Technology, MIT)
    • 是目前限制最少的协议,唯一的条件:在修改后的代码或者发行包中,必须包含原作者的许可信息
    • 使用 MIT 的软件项目有:jquery、Node.js

关于更多开源许可协议的介绍,可以参考博客
https://www.runoob.com/w3cnote/open-source-license.html

开源项目托管平台

专门用于免费存放开源项目源代码的网站,叫做开源项目托管平台。目前世界上比较出名的开源项目托管平台主要有以下 3 个:

  • Github(全球最牛的开源项目托管平台,没有之一)
  • Gitlab(对代码私有性支持较好,因此企业用户较多)
  • Gitee(又叫做码云,是国产的开源项目托管平台。访问速度快、纯中文界面、使用友好)

注意:以上 3 个开源项目托管平台,只能托管以 Git 管理的项目源代码,因此,它们的名字都以 Git 开头。

Github

多看看github官方文档!https://docs.github.com/cn

Github 是全球最大的开源项目托管平台。因为只支持 Git 作为唯一的版本控制工具,故名 GitHub。
在 Github 中,你可以:

  • 关注自己喜欢的开源项目,为其点赞打 call
  • 为自己喜欢的开源项目做贡献(Pull Request)
  • 和开源项目的作者讨论 Bug 和提需求 (Issues)
  • 把喜欢的项目复制一份作为自己的项目进行修改(Fork)
  • 创建属于自己的开源项目
  • etc…

So,Github ≠ Git
在这里插入图片描述

远程仓库的两种访问方式

Github 上的远程仓库,有两种访问方式,分别是 HTTPS 和 SSH。它们的区别是:

  1. HTTPS:零配置;但是每次访问仓库时,需要重复输入 Github 的账号和密码才能访问成功
  2. SSH:需要进行额外的配置;但是配置成功后,每次访问仓库时,不需重复输入 Github 的账号和密码

注意:在实际开发中,推荐使用 SSH 的方式访问远程仓库。

基于 HTTPS 将本地仓库上传到 Github

在这里插入图片描述
在这里插入图片描述

完美解决! [rejected] master -> master (fetch first)

如果出现这个情况说明你非首次上传到仓库失败了,极有可能是因为本地仓库与远程仓库的文件不一致。
在这里插入图片描述
解决方法:

在Git Bash里面输入

git pull --rebase origin master

在这里插入图片描述
再执行

git push -u origin master

在这里插入图片描述

SSH key

SSH key 的作用:实现本地仓库和 Github 之间免登录的加密数据传输。
SSH key 的好处:免登录身份认证、数据加密传输。
SSH key 由两部分组成,分别是:

  • id_rsa(私钥文件,存放于客户端的电脑中即可)
  • id_rsa.pub(公钥文件,需要配置到 Github 中)

生成 SSH key

  • 打开 Git Bash
  • 粘贴如下的命令,并将 your_email@example.com 替换为注册 Github 账号时填写的邮箱:

ssh-keygen -t rsa -b 4096 -C “your_email@example.com”

  • 连续敲击 3 次回车,即可在 C:\Users\用户名文件夹.ssh 目录中生成 id_rsa 和 id_rsa.pub 两个文件

在这里插入图片描述
官方文档

在这里插入图片描述

配置 SSH key

  1. 使用记事本打开 id_rsa.pub 文件,复制里面的文本内容
  2. 在浏览器中登录 Github,点击头像 -> Settings -> SSH and GPG Keys -> New SSH key
  3. 将 id_rsa.pub 文件中的内容,粘贴到 Key 对应的文本框中
  4. 在 Title 文本框中任意填写一个名称,来标识这个 Key 从何而来

检测 Github 的 SSH key 是否配置成功

在这里插入图片描述

基于 SSH 将本地仓库上传到 Github

在这里插入图片描述

将远程仓库克隆到本地

在这里插入图片描述
在这里插入图片描述

分支

在进行多人协作开发的时候,为了防止互相干扰,提高协同开发的体验,建议每个开发者都基于分支进行项目功能的开发,例如:
在这里插入图片描述

master 主分支

在初始化本地 Git 仓库的时候,Git 默认已经帮我们创建了一个名字叫做 master 的分支。通常我们把这个 master 分支叫做主分支。
在这里插入图片描述
在实际工作中,master 主分支的作用是:用来保存和记录整个项目已完成的功能代码。
因此,不允许程序员直接在 master 分支上修改代码,因为这样做的风险太高,容易导致整个项目崩溃。

功能分支

由于程序员不能直接在 master 分支上进行功能的开发,所以就有了功能分支的概念。
功能分支指的是专门用来开发新功能的分支,它是临时从 master 主分支上分叉出来的,当新功能开发且测试完毕后,最终需要合并到 master 主分支上,如图所示:
在这里插入图片描述

查看分支列表

在这里插入图片描述
在这里插入图片描述

创建新分支

使用如下的命令,可以基于当前分支,创建一个新的分支,此时,新分支中的代码和当前分支完全一样:
在这里插入图片描述

切换分支(checkout)

在这里插入图片描述
在这里插入图片描述

分支的快速创建和切换

在这里插入图片描述
注意:
“git checkout -b 分支名称” 是下面两条命令的简写形式:

  • git branch 分支名称
  • git checkout 分支名称

在这里插入图片描述

合并分支

功能分支的代码开发测试完毕之后,可以使用如下的命令,将完成后的代码合并到 master 主分支上:
在这里插入图片描述
合并分支时的注意点:
假设要把 C 分支的代码合并到 A 分支,则必须先切换到 A 分支上,再运行 git merge 命令,来合并 C 分支!

删除分支

当把功能分支的代码合并到 master 主分支上以后,就可以使用如下的命令,删除对应的功能分支:
在这里插入图片描述
在这里插入图片描述

遇到冲突时的分支合并

如果在两个不同的分支中,对同一个文件进行了不同的修改,Git 就没法干净的合并它们。 此时,我们需要打开这些包含冲突的文件然后手动解决冲突。
在这里插入图片描述

将本地分支推送到远程仓库

如果是第一次将本地分支推送到远程仓库,需要运行如下的命令:
在这里插入图片描述
注意:第一次推送分支需要带 -u 参数,此后可以直接使用 git push 推送代码到远程分支。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看远程仓库中所有的分支列表

在这里插入图片描述
在这里插入图片描述

跟踪分支

跟踪分支指的是:从远程仓库中,把远程分支下载到本地仓库中。需要运行的命令如下:
在这里插入图片描述

拉取远程分支的最新的代码

在这里插入图片描述

删除远程分支

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值