🗒️Git学习笔记
00 分钟
2023-8-31
2024-10-26
type
status
date
slug
summary
tags
category
icon
password

Git项目版本管理工具学习笔记

notion image
notion image
notion image

Git简史及背景

版本控制的概念

版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。

版本控制系统种类

1.本地版本控制系统
2.集中化版本控制系统(CVCS)
3.分布式版本控制系统(DVCS)

git发展历程

  • 1991年:开源Linux诞生
  • 1991年一2002年:Linux开源项目无专有版本控制系统
  • 2002年:启用分布式版本控制系统BitKeeper
  • 2002年一2005年:Linux内核社区使用BitKeeper管理版本项目
  • 2005年:git诞生
  • 2005年至今:git日臻成熟完善

git特点

  • 直接记录快照,而非差异比较
  • 近乎所有操作都是本地执行
  • git保证完整性
  • git一般只添加数据

git的三种状态

  • 已修改(modified):修改了文件,但还没保存到数据库中;
  • 已暂存(staged):标记一个已修改文件的当前目录,保存于下快照中;
  • 已提交(committed):数据已经安全地保存在本地数据库中。
notion image

git基本工作流程

  • 在工作区中修改(modified)文件;
  • 将你想要下次提交的更改选择性地暂存(staged);
  • 提交(comitted)更新,找到暂存区的文件,将快照永久存储到Git目录。

git使用方式

  • 命令行模式:
    • Windows用户→命令窗口(Command Prompt)
      macOS用户→终端(Terminal)
  • GUI模式

Git的安装和配置

在Window系统上安装

下载安装

1.下载Git安装包:
2.安装Git安装包:
双击运行安装包
安装过程中大部分直接使用默认设置点击next进行安装即可。
其中有几步需要注意,根据自己的实际需要选择。

配置

安装Git后的配置和验证使用:
安装完成后,启动系统“命令提示符”,完成用户名和邮箱的配置。
使用--global选项,该命令只需要运行一次,所有使用Git的项目都使用该配置。
如果想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有--global选项的命令来配置。
git config命令使用--list或者-l选项可以查看Git的配置信息。

使用帮助命令

1.获取用户手册(网页版)
2.在命令行获取快速参考

在Linux系统上安装

1、查看是否已经安装了Git:
像上面的命令,有很多Linux会友好地告诉你Git没有安装,还会告诉你如何安装Git
2、如果没有安装,则运行命令安装(Debian/Ubuntu系统):
如果是其他Linux版本,可以参考以下网址中的安装命令和安装方法:

在Mac系统上安装

1、查看是否已经安装了Git,并按提示进行安装:
在Terminal.里尝试首次运行git命令即可。
如果没有安装过命令行开发者工具,将会提示你安装。
2、参考以下网址中的安装方法:
(1)先安装homebrew,再通过命令$brew install git安装Git
(2)直接安装Xcode,Xcode:集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode"->“Preferences",在弹出窗口中找到“Downloads",选择“Command Line Tools"点“Install"就可以完成安装了。
(3)使用Tim Harper提供的Git安装包,

Git仓库

Git仓库的概念和内容

什么是Git仓库

从结构上来说
  • 是一个目录
  • 包含.git的隐藏目录
    • 定义项目特有的配置选项
    • 指示当前被检出的分支
    • 存放所有数据内容
    • 存放指向数据(分支)的提交对象的指针
    • 保存暂存区信息
    • 其他
从意义上来说
  • 版本管理的"工程"

Git工作区域

notion image

Git仓库的创建和初始化

拉取远程仓库
本地初始化创建

基本工作流程&查看

git add

作用:开始跟踪一个文件,添加一个或多个文件到暂存区
示例:
1.在1个空项目中,创建1个新文件:README.txt
项目目录:D:\gitTest\add
notion image
2.查看项目状态,提示有一个未跟踪文件
notion image
3.使用命令 git add 开始跟踪 README.txt 文件
notion image
4.查看项目状态,会看到 README.txt 文件已被跟踪,并处于暂存状态
notion image
注:文件名只要在 Changes to be committed 这行下面的,就说明是己暂存状态。
问题:使用命令 git add 跟踪 REARME.txt 文件后,如果又修改了文件,是否需要再次执行 add 命令?
答案:需要!
Git 只暂存了你运行上一次 git add 命令时的版本,新修改不能同步到暂存区!需要显示再执行一次 git add 命令

git commit

作用:将位于暂存区的全部文件提交给仓库
前提:暂存区已经准备就绪
务必确认:是否有已修改或新建文件还没有被 git add 过!
如存在:则此类文件还未被提交到暂存区,不能被 commit 命令提交到仓库中。
运行本命令,当暂存区不存在需要 commit 的文件时,默认的返回消息包含最后一次运行 git status 的输出
notion image
当暂存区存在需要 commit 的文件时,会启动文本编辑器来输入提交说明。
notion image
带 # 号的是注释行,退出编辑器时,Gt会丢弃注释行,用你输入的提交说明生成一次提交。

基础使用

利用参数 -m ,将要提交的说明信息放到 “ ” 内,能简洁地完成提交动作。
示例:
1.打开一个已有的项目,包含1个已通过 add 命令放入暂存区的文件:Example.txt
notion image
2.使用 status 命令,查看项目状态
notion image
显示:目前处于 master 主分支,Example.txt 文件需要 commit
3.运行本命令,第一次提交 Example.txt
notion image
4.修改文件 Example.txt (未add),执行 git commit :
notion image
5.执行完 add 命令后再 commit :
notion image
6.使用 git log ,查看提交历史
notion image

a 参数

作用:将工作区中所有修改过的文件在本轮操作中全部提交。
相当于合并git add和git commit两个命令于一步。
git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤

git log

作用:查看 Git 仓库的提交历史

基础使用

示例:
1.打开已有的项目文件:
notion image
2.使用本命令,查看项目提交历史:
notion image
显示:按时间先后顺序列出所有的提交,最近的更新排在最上面
notion image

-stat 参数

作用:显示每次提交的简略统计信息
notion image

git status

基础使用

作用:显示 Git 仓库的文件状态
示例:
1.打开一个已有的项目,包含1个已纳入仓库主分支的文件:helloworld.txt
notion image
2.使用本命令,查看项目状态:
notion image
显示:目前处于 master 主分支,没有需提交的内容
3.修改文件 helloworld.txt ,再运行本命令
notion image
提示: helloworld.txt 文件已被修改
4.使用 git add ,再运行本命令
notion image
提示:helloworld.txt 文件已被提交到暂存区,等待被 commit
5.使用 git commit ,再运行本命令
notion image
提示:helloworld.txt 文件已被提交到主分支,没有新任务需要被提交

提交管理/编辑

丢弃当前文件的修改

对文件操作而言,checkout 使用暂存区记录回滚工作区文件的修改, reset 取消暂存区文件提交
对提交操作而言,checkout 切换到某次提交(一般配合分支使用),reset重置head到某次提交(撤销该次提交之后的所有内容)

撤销提交

取消某次提交记录

合并提交

合并其他分支(或他人的提交)的提交记录

远程仓库访问

作用:访问远程仓库,根据需要推送或拉取数据

远程仓库的概念

远程仓库是指托管在因特网或其他网络中的你的项目的版本库。
notion image
分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改。
远程仓库(remote)就在中央服务器,也就是我们做好工作之后推送到远程仓库,或者从远程仓库更新下来最新代码到本地。
notion image

创建远程仓库

创建远程仓库前的准备工作

1.注册GitHub账号
GitHub 是提供 Git 仓库托管服务的网站,我们可以用 GitHub 作为免费的远程仓库托管平台。
2.配置密钥
由于本地 Git 仓库和 GitHub 仓库之间的传输是通过 SSH 加密的,所以需要配置密钥。
第一步,检查是否己拥有密钥
在用户目录下查看有没有 .ssh 目录。
如果有,再看看这个目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,
如果已经有了,可直接跳到“第三步”;
如果没有,执行“第二步”。
notion image
第二步,创建 SSH Key
1.打开 Shell ( Windows 下打开 Git Bash )
使用以下命令创建SSH Key:
notion image
2.在用户目录里可以找到 .ssh 目录,里面有 id_rsa 和 id_rsa.pub 两个文件。
这两个就是 SSH Key 的秘钥对, id_rsa 是私钥, id_rsa.pub 是公钥
notion image
第三步,向 GitHub 提供 SSH 公钥
1.登录 GitHub ,打开新建 SSH Key 的页面
通过右上角下拉打开 settings 页面
通过左侧菜单打开 keys 页面
点击"New SSH Key"按钮
2.填写新建密钥的表单:
填上 Title (随意填个名字);
在Key文本框里粘贴 id_rsa.pub 文件的内容。
3.点击Add SSH Key:提交:
表单提交成功后可看到已经添加的Key。

创建远程仓库

1.登录 GitHub ,通过右上角+的下拉列表找到“New repository”选项,打开创建新仓库的页面
2.在创建新仓库的页面填写表单
在 Repository name 处填入 gitskills
勾选 Add a README file
3.点击 Create repository 按钮提交
4.仓库 gitskills 创建成功,可以看到该仓库有个 README.md 文件
点击仓库右上角 Code 处的小三角,
查看克隆该仓库的 remote URL
选择使用 SSH 协议的 remote URL,
复制该 URL

从远程仓库拉取

1.使用 git clone 命令克隆远程仓库到本地:
notion image
当你第一次使用 Git 的 clone 或者 push 命令连接 GitHub 时,会得到一个警告
输入 yes ,回车确认 key 信息
2.进入 gitskills 目录,已经有 README.md 文件了;
notion image

推送到远程仓库

问题:如果先有本地仓库,后有远程仓库,如果关联远程仓库呢?
场景:如果你已经在本地创建了一个 Git 仓库,又想在 GitHub 创建一个仓库,并且让这两个仓库进行远程同步,这样,GitHub 上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,岂不是一举多得。
答案:
1.登录 GitHub ,创建空仓库:
2.在本地仓库下运行 git remote 命令关联1中的远程仓库;
3.运行 git push 命令将本地仓库的内容推送到远程仓库。
操作示例:
1.已创建远程仓库 learngit ,是一个空仓库。Remote URL 如下:
2.在本地仓库目录下执行 git remote 命令,将本地仓库与远程仓库进行关联:
3.再执行 git push 命令,将本地仓库的内容推送到远程仓库:
之后,本地再有提交,就可以通过 git push origin master 命令,把本地 master 分支的最新修改推送至 GitHub 。

分支管理

什么是分支?
  • 版本管理系统提供的“场景”,当前管理内容的上下文
  • 从开发主线上分离开来,然后在不影响主线的同时继续工作
  • 典型使用:在分支开发工作流中,分支开发新功能,测试稳定后合并到主干

创建和查看分支

切换分支

  • b:如果该分支不存在,会新创建一个分支

删除分支

合并分支

将参数里的分支合并到当前分支

分支开发工作流

    notion image
      notion image
        notion image
        master 是我们最终长期维护的分支

        服务器上的 Git:GitLab

        服务器上的Git的作用

        notion image
        分布式版本控制系统通常有一台充当“中央服务器”的电脑,这个服务器的作用仅仅是用来交换大家的修改
        远程仓库(remote)就在中央服务器。
        notion image

        服务器通信协议

        服务器上的 Git 一般会同时提供 SSH 或者 HTTPS 协议的访问服务。
        当我们使用 git clone 或 git remote 命令连接 Git 服务器时,我们需要知道远程仓库的地址 (remote URL) 。URL 的不同标识了服务器通信协议的不同。
        notion image

        使用GitLab

        GitLab 是一个数据库支持的 web 应用,它的安装和维护较为复杂。但它功能齐全,是很多公司的最佳选择。
        目前,我们不推荐大家自己安装 GitLab 。在本课程中,我们给大家提供一个安装好的 GitLab 。

        创建项目

        第一步,注册 GitLab 账号
        你可以通过浏览器访问已经安装 GitLab 的主机名或 IP 地址来打开 GitLab 站点,注册自己的帐号。
        第二步,创建项目
        登录 GitLab 后,你可以右上角的“New project”按钮或者工具栏上的+图标下的“New project”选项创建一个新项目。
        填写表单内容:
        • 填写项目名称
        • 选择可见级别
        项目创建成功后,你将看到“Add SSH key”的提醒。关于 SSH 密钥的详细内容,请参阅“远程仓库访问”。这个过程与在 GitHub 上添加公钥是相似的。
        第三步,推送到远程仓库
        一个 GitLab 的项目相当于 git 的版本库。项目存在后,你可能会想将它与本地的 Git 版本库连接。
        以下命令将一个存在的本地仓库推送到你刚才创建的 GitLab 远程仓库:
        notion image
        因为 learngit 项目是 Public 的,任何人都可以通过项目 URL 访问它,包括未登录用户(游客)。

        Fork项目

        Fork 项目:学习他人项目,甚至成为项目的贡献者
        你可以通过点击右上角的 Fork 链接来 fork 一个 Public 的项目
        Fork 是项目的副本。Fork 一个仓库允许我们在不影响原始项目的情况下进行更改。

        发起merge request

        点击 New Merge Request
        创建一个新的合并请求。
        确认合并请求的内容并提交合并请求。

        第三方托管平台

        选择第三方托管平台

        如果不想设立自己的Git服务器,你可以选择将你的Git项目托管到一个外部专业的托管网站。
        1.GitHub
        GitHub 是目前最大的 Git 托管平台。我们只要注册一个 GitHub 账号,就可以免费获得 Git 远程仓库。你还有机会与托管在 GitHub 上的项目进行交互。
        2.Gitee
        如果我们希望体验 Git 飞一般的速度,可以使用国内的 Git 托管服务一一Gitee(码云)。

        使用 Gitee

        第一步,注册 Gitee 账号
        第二步,设置 SSH 公钥
        登录码云后,选择右上角用户头像下拉下的“设置”,然后选择左侧菜单中的“SSH公钥”,填写标题,并把用户主目录下的 .ssh/id_rsa.pub 文件的内容粘贴进去。这个过程与在 GitHub 上添加公钥是相似的。
        问题:
        如果我们已经有了一个本地的git仓库(例如,一个名为 gitskills 的本地仓库),如何把它关联到码云的远程仓库上呢?
        首先,我们在码云上创建一个新仓库 gitskills,这个过程与使用 GitHub 创建仓库是类似的。
        关联之后,就可以使用 git push 将本地仓库的内容推送到远程仓库了
        第一次 git push 推送时要使用 -u 选项:
        之后本地仓库再有新的提交,我们就可以使用 git push 直接推送了。
         
        上一篇
        Golang基础学习笔记
        下一篇
        基于Magisk模块实现Termux开机自启和后台保活