当前位置: 首页 > news >正文

Git 学习笔记

Git学习笔记

  • 1 Git 简介
  • 2 Git 安装与配置
  • 3 Git 操作入门
    • 3.1 Git 基本工作流程
    • 3.2 Git 命令行操作
    • 3.3 Git 图形化工具操作
  • 4 Git 版本管理
  • 5 Git远程仓库
    • 5.1 远程仓库工作流程
    • 5.2 远程仓库平台介绍
    • 5.3 先有本地项目,远程为空
    • 5.4 先有远程仓库,本地为空
    • 5.5 代码冲突

1 Git 简介

Git是一种代码版本控制系统,为什么要使用代码版本控制系统呢?

因为代码版本控制系统能够很好地解决开发中要面临的问题

  • 代码备份
  • 版本控制
  • 协同工作
  • 责任追溯

SVN 与 Git 的对比

  • SVN :集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑,所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。
    • 服务器单点故障,将会导致所有人员无法工作
    • 而服务器硬盘损坏,这意味着,你可能失去了该项目的所有历史记录,这是毁灭性的
  • Git :每一个客户端都保存了完整的历史记录,服务器的故障,都可以通过客户端的记录得以恢复在这里插入图片描述

2 Git 安装与配置

官网下载地址:https://git-scm.com/downloads

指定安装目录后,一路next无脑安装

安装成功后,鼠标点击右键
在这里插入图片描述

点击 Git Bash Here 输入git --version 可以查看版本信息

在这里插入图片描述

虽然Git 自带了图像化工具,但是功能不够强大,这里安装 TortoiseGit 图像化功具

安装过程较为简单,但是要注意的是其中需要指定 Git 的bin目录,一般系统会自动识别。
安装完成后,鼠标点击右键会多出一下三项

在这里插入图片描述

3 Git 操作入门

3.1 Git 基本工作流程

在这里插入图片描述

3.2 Git 命令行操作

在这里插入图片描述

下面通过一个案例进行演示

(1)创建 test 工作目录、初始化本地 git 仓库

初始化完成后,会出现一个名为 .git 的隐藏文件

在这里插入图片描述

(2)test 文件夹中新建一个 test.txt 文件(暂不执行添加操作)

(3)使用 status 命令,查看状态

在这里插入图片描述

注意:test.txt 为红色表示未执行添加操作

(4) 使用 add 命令添加(到暂存区),并查看状态

在这里插入图片描述

此时 test.txt 文件会发生如下变化,代表已经执行添加操作(若用户电脑首次安装TortoiseGit 图像化功具,需要重启电脑)

在这里插入图片描述

(5)使用 commit 命令,提交到本地历史仓库

命令引号内为本次提交信息

在这里插入图片描述
在这里插入图片描述
(6)使用 log 命令,查看日志

在这里插入图片描述

(7) 修改 test.txt 文件

在这里插入图片描述

(8) 添加并提交,查看日志

在这里插入图片描述

3.3 Git 图形化工具操作

(1) 创建 test1 工作目录、初始化本地 git 仓库

在这里插入图片描述

(2) 创建 test.txt 文件,并将其添加到暂存区,再提交至本地仓库

在这里插入图片描述
在这里插入图片描述
(3) 修改文件后,不用进行添加操作,直接第二次提交

(4)查看日志

在这里插入图片描述

在这里插入图片描述

4 Git 版本管理

(1)历史版本切换

git reflog :可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录的操作)

git reset --hard 版本唯一索引值

(2)分支管理介绍

分支

  • 由每次提交的代码,串成的一条时间线
  • 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线

分支的使用场景

  • 周期较长的模块开发
    • 假设你准备开发一个新功能,但是需要一个月才能完成
      第一周写了20%的代码,突然发现原来已经写好的功能出现了一个严重的Bug
      那现在就需要放下手中的新功能,去修复Bug
      但这20%的代码不能舍弃,并且也担心丢失,这就需要开启一个新的版本控制。
  • 尝试性的模块开发
    • 业务人员给我们提出了一个需求,经过我们的思考和分析
      该需求应该可以使用技术手段进行实现。
      但是我们还不敢确定,我们就可以去创建一个分支基于分支进行尝试性开发

分支工作流程

  • Master: 指向提交的代码版本
  • Header: 指向当前所使用的的分支

在这里插入图片描述
(3)分支管理操作

  • 创建分支:git branch 分支名
  • 查看分支:git branch
  • 切换分支:git checkout 分支名
  • 新分支添加文件后查看文件命令:ls

Master分支里没有新分支添加的文件,但是新分支里有Master分支里的文件

  • 合并分支:git merge 分支名
  • 删除分支:git branch -d 分支名
  • 查看分支列表:git branch

注意:不同分支之间的关系是平行的关系,不会相互影响

5 Git远程仓库

5.1 远程仓库工作流程

在这里插入图片描述

注意:克隆是包括所有的历史版本

5.2 远程仓库平台介绍

  • GitHub

    • 域名:https://github.com
    • 介绍:GitHub是全球最大的开源项目托管平台,俗称大型程序员社区化交友网站,各类好玩有趣的开源项目,只有想不到,没有找不到。
  • 码云

    • 域名:https://gitee.com
    • 介绍:码云是全国最大的开源项目托管平台,良心平台,速度快,提供免费私有库

5.3 先有本地项目,远程为空

  1. 创建本地仓库
  2. 创建或修改文件,添加(add)文件到暂存区,提交(commit)到本地仓库
  3. 创建远程仓库
  4. 推送到远程仓库

注意:在推送代码之前需要先配置SSH公钥,否则会报错

(1)设置Git账户:

  • 查看git账户:git config user.name
  • 查看git邮箱:git config user.email
  • 设置全局账户名: git config --global user.name "账户名"
  • 设置全局邮箱:git config --global user.email "邮箱"

(2)生成SSH公钥

  • 查看是否生成过SSH公钥:cd ~/.ssh
  • 生成命令: ssh-keygen –t rsa –C "邮箱" ( 注意:这里需要敲3次回车)
  • 查看密钥:cat ~/.ssh/id_rsa.pub

(3) 设置账户公钥

  • 复制步骤 ⑦ 的公钥,gitee主页点击“设置”——>“SSH公钥”,粘贴

(4) 公钥测试:

  • ssh -T git@gitee.com,出现“successfully”字样即成功

本地项目推送至远程仓库

(1) 为远程仓库的 URL 自定义仓库名称

  • git remote add 远程仓库名称 远程仓库URL

给远程仓库取一个简单名称来代替一大长串的 URL

(2) 推送至远程仓库

  • git push -u 远程仓库名称 分支名称

5.4 先有远程仓库,本地为空

  1. 将远程仓库的代码,克隆到本地仓库
    克隆命令:git clone 仓库地址
  2. 创建新文件,添加并提交到本地仓库
  3. 推送至远程仓库
  4. 项目拉取更新
    拉取命令:git pull 远程仓库名 分支名

5.5 代码冲突

产生原因:

两个程序员操作同一个文件,其中一个程序员在修改文件后,push到远程仓库,另一个程序员应该先pull将最新的代码更新到本地仓库后,在修改代码,之后push到远程仓库,结果他没有先pull将最新的代码更新到本地仓库,而是直接将自己的代码push到远程仓库,这样就可能会导致代码冲突

如何解决冲突:

cat 文件名

<<<<<<<>>>>>>>中间的内容,就是冲突部分

  1. 修改冲突行 ,保存,即可解决冲突。
  2. 重新add冲突文件并commit到本地仓库,重新push到远程

相关文章:

  • 网站做相册/搜索优化整站优化
  • 企业网站建设有几种/百度seo网站在线诊断
  • 北京网站建设优选平台/网站推广沈阳
  • 制作企业网站的公司/北京最新疫情最新消息
  • 公司网站后台密码/seo包年优化费用
  • 小县城做房地产网站/策划是做什么的
  • QFramework v1.0 使用指南 工具篇:01. QFramework.Toolkits 简介
  • JS(第六课)流程控制语句
  • REACT:react-router-dom详解
  • 【AI】Best-first search (or Greedy Search) 最佳优先搜索(或贪婪搜索)
  • android手机免费无线投屏电脑方法教程步骤AirServer7
  • 【PyTorch深度学习项目实战100例】—— 基于BiGRU短期电力负荷预测方法 | 第28例
  • STM32:串口协议(内含:1.通信接口+2.串口通信+3.硬件电路+4.电平标准+5.串口参数及时序+6.串口时序)
  • 软考高级系统架构设计师系列论文五十四:论软件设计模式及应用
  • Tomcat值NGINX+Tomcat实现负载均衡、动静分离集群部署
  • 我用【c++】写出了会说话的学生考勤系统
  • Redis的性能优化一些方案
  • Keras深度学习实战(30)——使用文本生成模型进行文学创作