Git快速上手

初识Git

是一个免费开源, 分布式的代码版本控制系统, 帮助开发团队维护代码

作用: 记录代码内容,切换代码版本,多人开发时高效合并代码内容

Git和GitHub

Git是一个软件, Github是一个网站,两者的功能都是提供版本控制服务.

官网: GitHub: Let’s build from here · GitHub

安装Git

  1. 官网: https://git-scm.com/
  2. 快速下载: CNPM Binaries Mirror
  3. 下载安装包后, 双击安装, 全部默认下一步
  4. 验证: 打开bash终端 (git专用终端)
  • 在vscode中, 打开终端, 切换到Git Bahs

  • 或者 桌面空白处右键, 点击 Git Bash Here 打开Git命令行窗口

  • 命令: git -v (出现版本号)

配置用户信息

表明身份, 让Git知道是谁在操作仓库

  1. git config --global user.name "用户名"
  2. git config --global user.email "邮箱地址"
  3. 验证: git config --list
  4. 或者单独查询 git config --global user.name || git config --global user.email

Git仓库

记录文件状态内容的地方, 储存着修改的历史记录

创建

  1. git仓库的本质是一个隐藏的文件夹, 隐藏起来是防止误删除
  2. 如果想要看到, 需要设置显示隐藏文件, 查看->显示隐藏文件夹
  3. 把本地文件夹转换成Git仓库: git init
  4. 从其他服务器上克隆Git仓库: git clone xxxx

管理流程

  1. 工作区: 实际开发时操作的文件夹
  • 暂存制定文件: gti add 文件名
  • 暂存所有文件: git add .
  1. 暂存区: 临时存在工作区的文件
  • 查看暂存区文件: git ls-files
  • 提交暂存区文件: git commit -m "提交说明"
  1. 版本库: 产生一个版本快照

文件状态

Git文件状态有

  1. 未跟踪: 新文件, 从未被Git管理过
  2. 已跟踪: 已经被管理的文件
  3. 查看文件状态:

git status -s 或 git status

操作暂存区

暂存区的作用就是临时存储代码, 减少代码的提交次数, 与版本库解耦合

从暂存区恢复文件: git restore 目标文件

从暂存区移除文件: git rm -- cached 目标文件

回退版本

把版本库某个版本对应的内容快照, 恢复到工作区/暂存区

查看提交历史:

  1. 简洁日志: git log --oneline (只包含提交操作的日志)
  2. 完整日志: git reflog --oneline (包含所有操作的日志)

回退命令:

  1. git reset --soft 版本号 (保留多余文件, 文件状态是未跟踪)
  2. git reset --hard 版本号 (清理多余文件, 工作区完全恢复到对应版本)

忽略文件

.gitignore文件可以让git彻底忽略跟踪指定文件, 避免重复无意义的文件管理

# 忽略依赖文件
node_modules
# 忽略分发文件夹
dist
# 忽略vscode文配置件
.vscode
# 忽略秘钥文件
*.pem
# 忽略证书文件
*.cer
# 忽略日志文件
.log

规则

  1. 该文件对当前目录及子目录生效
  2. #注释的内容
  3. * 代码通配符
  • *.zip 过滤所有.zip文件
  1. 过滤文件夹:
  • 直接写文件夹名
  • 转译写法: /文件夹名/
  1. 过滤具体文件
  • 直接写文件夹名 文件夹名/文件名
  • 转译写法: /mtk/do.c
  1. 不要过滤
  • !index.php

分支

分支的本质是一个容器, 里面装着提交的代码, 默认名字是master

作用

在开发新需求或者修复bug时, 保证主线代码随时可用, 多人协同开发提高效率

命令

  1. 查看分支 git branch
  2. 查看分支文件的状态 git status
  3. 创建分支 git branch 分支名
  4. 切换分支 git checkout 分支名
  5. 新建分支并切换 git checkout -b 分支名
  6. 合并分支 git merge 被合并的分支名 // 先切换到主分支, 再把目标分支合并到主分支
  7. 删除分支 git branch -d 分支名 // 先退出分支,才能删除分支

流程

  1. 如果新任务不想直接在主分支代码上进行, 要保证主分支代码的可用
  2. 先要创建新的分支 git branch 分支名
  3. 然后切换到新的分支 git checkout 分支名
  4. 开发编码完成后, 需要把分支合并到主分支
  5. 切换到主分支 git checkout master
  6. 合并目标分支 git merge 被合并的分支名
  7. 合并完成后, 分支就没用了, 删除分支 git branch -d 分支名

冲突

在不同分支, 对同一个文件的同一部分代码修改后, 就会产生合并冲突

  1. 代码冲突后多交流, 然后取舍代码

  1. 按照页面划分不同分支开发, 修改时尽量只修改自己相关的代码, 不要随意修改其他模块的代码
  2. 公共代码要统一维护, 组长负责修改, 其他成员只拉取,
  3. Node等软件的版本要统一, npm包统一维护, 由组长管理依赖, 其他成员只拉取

远程仓库

提交

托管在互联网或其他网络中的你的项目的版本库, 作用是保存项目, 对人协作

1.0基于Https鉴权

  1. 注册第三方托管平台网站账号
  2. 新建仓库得到远程仓库Git地址
  3. 本地Git仓库 添加 远程仓库原点地址
  • 添加: git remote add 远程仓库别名 远程仓库地址
  • 查看: git remote -v
  • 移除: git remote remove 远程仓库别名
  1. 本地Git仓库推送版本记录到远程仓库
  • git push -u 远程仓库别名 本地:远程分支名
  1. 删除已有的gitee账号凭证
  • 控制面板->用户账户->凭据管理器->删除

2.0基于ssh鉴权

  1. 基于ssh协议只是身份鉴权的方式不同, 使用过程没区别
  2. 创建公私钥对文件
  • ssh-keygen -t rsa -C "1272289847@qq.com" //执行指令,连续回车,生产公私钥对
  • c盘->用户->当前账号->.ssh文件->id_ras.pub(文本打开) //获取公钥
  1. 在Github中配置好SSH
  2. 正常操作,克隆/添加/提交/同步

克隆

拷贝一个Git仓库到本地进行使用

  1. git clone 远程仓库地址
  2. 效果: 在运行命令的所在文件夹, 生成work项目文件夹
  3. 注意: Git本地仓库已经建立好和远程仓库的连接
  4. 注意: 仓库公开可以随意克隆, 推送需要身为仓库团队成员

协同开发

  1. 拉取代码: git pull 远程仓库别名 分支名
  • 该命令是复合写法, 等价于:
  • 等价于 git fetch 远程仓库别名 本地:远程分支名 (获取远程分支记录到本地,未合并)
  • git merge 远程仓库别名/本地分支名 (把远程分支记录合并到所在分支下)
  1. 开发->拉取->推送, 先拉取再推送, 可以防止覆盖他人的代码

图形化操作

vscode编译器提供了图形化操作

  1. 打开更改的文件
  2. 恢复使用暂存区文件
  3. 把文件提交到暂存区
  4. 提交文件到远程仓库

命令总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/721449.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【多模态大模型教程】在自定义数据上使用Qwen-VL多模态大模型的微调与部署指南

Qwen-VL 是阿里云研发的大规模视觉语言模型(Large Vision Language Model, LVLM)。Qwen-VL 可以以图像、文本、检测框作为输入,并以文本和检测框作为输出。 Qwen-VL-Chat 大语言模型(Qwen-7B) 视觉图片特征编码器(Openclip ViT-bigG) 位置…

工业物联网关为智能制造业提供哪些支撑?天拓四方

随着科技的飞速发展,智能制造业已成为工业领域的转型方向。在这一转变中,工业物联网关发挥着至关重要的作用。作为连接物理世界与数字世界的桥梁,工业物联网关不仅实现了设备与设备、设备与云平台之间的互联互通,更通过实时数据采…

Spring AOP 基于注解实现用户权限校验

主要注解 interface:继承了 Annotation 接口的自定义注解,定义注释类型。 Target:表示这个注解可以应用的地方,此处做权限校验是用在方法上的,所以此处的值为 Target(ElementType.METHOD) …

【docker 如何自定义镜像】

查看容器列表 首先是查看容器:在命令台中键入 docker ps -a 命令,得到如下界面。 从容器创建一个新镜像 接着,dockers commit 容器名 要保存成的镜像名:版本名(若没有 :版本名 则直接默认为latest&#x…

【CVPR2021】LoFTR:基于Transformers的无探测器的局部特征匹配方法

LoFTR:基于Transformers的局部检测器 0. 摘要 我们提出了一种新的局部图像特征匹配方法。我们建议先在粗略级别建立像素级密集匹配,然后再在精细级别细化良好匹配,而不是按顺序进行图像特征检测、描述和匹配。与使用成本体积搜索对应关系的密…

动手学深度学习(Pytorch版)代码实践 -深度学习基础-11暂退法Dropout

11暂退法Dropout #Dropout 是一种正则化技术,主要用于防止过拟合, #通过在训练过程中随机丢弃神经元来提高模型的泛化能力。 import torch from torch import nn from d2l import torch as d2l import liliPytorch as lpdef dropout_layer(X, dropout):…

安全宣传咨询日活动向媒体投稿记住这个投稿好方法

在信息爆炸的时代,作为单位的信息宣传员,我肩负着将每一次重要活动,特别是像“安全宣传咨询日”这样的公益活动,有效传达给公众的重任。这份工作看似简单,实则充满了挑战,尤其是在我初涉此领域时,那段曲折而又难忘的投稿经历,至今记忆犹新。 初探投稿之海,遭遇重重困难 起初,我…

这些数据可被Modbus采集,你还不知道???

为什么要用Modbus采集模块 Modbus采集模块之所以被广泛使用,是因为它提供了标准化的通信协议,确保了不同设备间的兼容性。它支持多种通信方式,易于实现,并且能够适应不同的网络环境。Modbus模块能够收集和传输各种工业数据&#x…

【产品经理】订单处理6-审单方案

电商系统中订单管理员会对特殊类型的订单进行审核,普通订单则自动审核,本节讲述自动审单方案、手动审单以及加急审单。 一、自动审单 自动审单方案可按照方案形式制定,可一次性制定多套审单方案。 1. 审单通过条件有 执行店铺&#xff…

大模型的分类:探索多样化的人工智能模型

随着人工智能技术的飞速发展,大型预训练模型(以下简称“大模型”)已经在自然语言处理、计算机视觉、语音识别等多个领域取得了显著的成果。这些模型通过在海量数据上进行预训练,能够捕捉到丰富的特征信息,为各种下游任…

Linux操作系统学习:day03

内容来自:Linux介绍 视频推荐:[Linux基础入门教程-linux命令-vim-gcc/g -动态库/静态库 -makefile-gdb调试]( 目录 day0317、创建删除目录创建目录删除目录 18、文件的拷贝19、mv 命令20、查看文件内容的相关命令21、给文件创建软连接或硬链接 day03 …

MFC绘制哆啦A梦

OnPaint绘制代码 CPaintDC dc(this); // 用于绘画的设备上下文CRect rc;GetWindowRect(rc);int cxClient rc.Width();int cyClient rc.Height();// 辅助线HPEN hPen CreatePen(PS_DOT, 1, RGB(192, 192, 192));HPEN hOldPen (HPEN)SelectObject(dc, hPen);MoveToEx(dc, cxC…

使用Vue中的<TransitionGroup/>进入动画不生效不显示问题

Vue中有两个过渡动画组件分别是&#xff1a;<TransitionGroup/> <TransitionGroup/>进入动画不生效不显示问题 &#xff0c;在渲染列表上加上v-if&#xff0c;看代码&#xff0c;让他每次渲染都重新渲染 加上v-if即可 <template> <TransitionGroup nam…

Perforce静态代码分析专家解读MISRA C++:2023®新标准:如何安全、高效地使用基于范围的for循环,防范未定义行为

MISRA C&#xff1a;2023——MISRA C 标准的下一个版本来了&#xff01;为了帮助您了解 MISRA C&#xff1a;2023相比于之前版本的变化&#xff0c;我们将继续为您带来Perforce首席技术支持工程师Frank van den Beuken博士的博客系列&#xff0c;本期为第三篇。 在前两篇系列文…

和服务器建立联系——6.10山大软院项目实训1

下面介绍我如何在自己的项目中&#xff0c;根据aigc组的接口&#xff08;如下图&#xff09;&#xff0c;在Unity中和服务器建立联系并发出接受请求的&#xff1a; 这是一个通过HTTP POST方法调用的接口&#xff0c;需要发送JSON格式的数据。在Unity中实现这样的功能&#xff0…

文字炫酷祝福 含魔法代码

效果下图&#xff1a;&#xff08;可自定义显示内容&#xff09; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initi…

SpringBoot + Maven 项目的创建

文章目录 1、Maven2、SpringBoot3、二者之间的联系4、项目的创建 在创建项目之前&#xff0c;肯定要知道他们之间的区别 1、Maven maven是一个跨平台的项目管理工具。它是Apache的一个开源项目&#xff0c;主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。 比如说…

QT day04

一、思维导图 二、登录界面优化 代码&#xff1a; 界面&#xff1a; *{background-color: rgb(255, 255, 255); }QFrame#frame{border-image: url(:/Logo/shanChuan.jpg);border-radius:15px; }#frame_2{background-color: rgba(110, 110, 110, 120);border-radius:15px; }Q…

线代的学习(矩阵)

1.矩阵的乘法 矩阵实现满足&#xff1a;内标相等 矩阵相乘之后的结果&#xff1a;前行后列 需要注意&#xff1a;1.矩阵的乘法不具有交换律&#xff1a;AB!BA 2.矩阵的乘法满足分配律&#xff1a;A(BC) AB AC 抽象逆矩阵求逆矩阵 方法1.凑定义法、 方法2.长除法 数字型矩阵…

一文弄懂 Python os.walk(),轻松搞定文件处理和目录遍历

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ Python os 模块的 walk() 方法以自顶向下或自底向上的方式遍历指定的目录树&#xff0c;从而显示目录树中的文件名。对于目录树中的每个目录&#xff0c;os.walk() 方法都会产生一个包含目录路径、当前…