Git快速上手

news2024/11/24 17:01:17

初识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. 提交文件到远程仓库

命令总结

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统下多网卡多网关设置

场景一: 主机AB得网卡1和网卡2都分别划分在VLAN1和VLAN2中,主机C在VLAN3中,VLAN1,2,3在三层交换设备上配置好网关192.168.1.1 192.168.2.1 192.168.3.1,并开启三层交换功能。 主机A的两块网卡分别IP为192…

JavaScript Window对象之(BOM、JS 执行机制、location对象、navigator对象、histroy对象、本地存储)

目录 1. BOM(浏览器对象模型)2. JS 执行机制3. location对象4. navigator对象5. histroy对象6. 本地存储6.1 localStorage6.2 sessionStorage 1. BOM(浏览器对象模型) BOM(Browser Object Model)是浏览器对象模型。其中window对象是JavaScript中一个全局的顶级对象基本的BOM属性…

26 种 prompt 套路,驯服大模型

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接如…

微服务中的相关概念

Eureka Eureka 是由 Netflix 开发的一个服务发现和注册中心,广泛应用于微服务架构中。Eureka 主要用于管理和协调分布式服务的注册和发现,确保各个服务之间能够方便地找到并通信。它是 Netflix OSS(Netflix Open Source Software&#xff09…

Java基础 - 练习(二)打印菱形

Java基础练习 打印菱形&#xff0c;先上代码&#xff1a; // 方法一&#xff1a;基础&#xff0c;好理解 public static void diamond() {//控制行数for (int i 1; i < 4; i) {//空格的个数for (int k 1; k < 4 - i; k) {System.out.print(" ");}//控制星星…

【科研必备神器】人口迁徙大数据科研辅助利器安装使用教程

今天&#xff0c;给大家介绍一款用于对人口迁徙大数据进行分析的神器--人口迁徙数据解析器&#xff0c;可以获取对目标城市迁入、迁出的迁徙数据详情&#xff0c;如&#xff0c;排名前100名的迁徙来源地的迁徙时间、城市名、省份名及迁徙比例。下面&#xff0c;给大家介绍下这款…

Google推出开源代码大模型CodeGemma:AI编程新纪元,代码自动完成和生成技术再升级

论文标题: CodeGemma: Open Code Models Based on Gemma机构: Google LLC论文链接: https://arxiv.org/pdf/2406.11409.pdf CodeGemma模型概述 CodeGemma是基于Google DeepMind的Gemma模型系列&#xff08;Gemma Team et al., 2024&#xff09;开发的一系列开放代码模型。这些…

RK3588/算能/Nvidia智能盒子:加速山西铝业智能化转型,保障矿业皮带传输安全稳定运行

近年来&#xff0c;各类矿山事故频发&#xff0c;暴露出传统矿业各环节的诸多问题。随着全国重点产煤省份相继出台相关政策文件&#xff0c;矿业智能化建设进程加快。皮带传输系统升级是矿业智能化的一个重要环节&#xff0c;同时也是降本增效的一个重点方向。 △各省份智能矿山…

Linux中DNS搭建

文章目录 一、DNS介绍1.1、DNS是什么1.2、DNS的工作原理1.3、DNS的域名结构 二、Bind介绍2.1、bind概述2.2、bind主要配置文件 三、DNS安装四、主要配置文件解析&#xff08;除/etc/named.conf&#xff09;4.1、/etc/named.rfc1912.zones4.2、/etc/rc.d/init.d/named4.3、/etc/…

git idea分支cherry-pick

git idea分支cherry-pick cherry-pick请注意操作前更新代码&#xff01;&#xff01;&#xff01;操作步骤 cherry-pick cherry-pick 挑拣樱桃&#xff0c;对应在分支开发中就是把提交记录从A分支挑拣到B分支 请注意操作前更新代码&#xff01;&#xff01;&#xff01; 操作…

kettle从入门到精通 第七十一课 ETL之kettle 再谈http post,轻松掌握body中传递json参数

场景&#xff1a; kettle中http post步骤如何发送http请求且传递body参数&#xff1f; 解决方案&#xff1a; http post步骤中直接设置Request entity field字段即可。 1、手边没有现成的post接口&#xff0c;索性用python搭建一个简单的接口&#xff0c;关键代码如下&#…

JavaFX按钮

当用户单击按钮时&#xff0c;JavaFX Button类可以触发事件。Button类扩展了Labeled类&#xff0c;可以显示文本&#xff0c;图像或两者都可以。 以下代码显示了如何向Button添加单击操作侦听器。 import javafx.application.Application; import javafx.event.ActionEvent; im…

[14] CUDA_使用Opencv处理图像

CUDA_使用Opencv处理图像 1. Opencv中的图像表示 Opencv 提供了Mat 类来存储图像&#xff0c;如下&#xff1a; cv::Mat img; imgcv::imread("cameraman.tif);定义图像的示例&#xff1a; //定义单通道图像 cv::Mat img(6,6,CV_8UC1); //32位浮点型 Mat img2(256,256,…

异步爬虫:aiohttp 异步请求库使用:

使用requests 请求库虽然可以完成爬虫业务&#xff0c;但是对于异步任务来说&#xff0c;它是做不到的&#xff0c; 这时候我们需要借助 aiohttp 异步请求库来完成异步爬虫的编写&#xff1a; 话不多说&#xff0c;直接看示例&#xff1a; 注意&#xff1a;楼主使用的python版…

MyBatis逆向工程和MyBatisX插件的使用

文章目录 1.ORM思维2.逆向工程3.MyBatisX插件的使用 1.ORM思维 ORM&#xff08;Object-Relational Mapping&#xff0c;对象-关系映射&#xff09;是一种将数据库和面向对象编程语言中的对象之间进行转换的技术。它将对象和关系数据库的概念进行映射&#xff0c;最后我们就可以…

同三维T80006EH单路高清HDMI编码器

同三维T80006EH单路高清HDMI编码器 1路HDMI输入&#xff0c;1路3.5音频输入和输出&#xff0c;支持高清1080P60&#xff0c;支持SD卡录制 支持可解1路网络音频流输出&#xff0c;双向互动 一、产品简介&#xff1a; T80006EH高清编码器&#xff08;采集盒&#xff09;是一款…

【Linux】环境设置MySQL表名忽略大小写

目录 说明 一、摘要 二、查看服务器上MySQL情况 方式一&#xff1a;通过Linux方式 方式二&#xff1a;借助可视化工具&#xff08;Navicat&#xff09; 三、MySQL设置忽略表名大小写的参数&#xff08;lower_case_table_names&#xff09; 四、网上解决方案 方法一&…

卫士通电科网安安全IpSec网关Ukey开发对接

官方公开的开发文档,有几个坑,着重说一下踩坑的记录过程。 1、通过官方的客户端接口模拟程序获取前端参数:随机数和token 2、java程序调用官方sdk,postman请求测试: 3、贴出关键的java集成类: import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; impor…

玄机平台流量特征分析-常见攻击事

前言 熟悉常见的攻击流量特征&#xff0c;我们就可以通过主机的一个流量情况来判断主机遭受了何种攻击。这里来看看玄机平台的一道题目。 步骤1.1 这里需要我们找出恶意扫描者&#xff0c;也就是黑客的ip。下载好附件之后用wiresharke打开&#xff0c;直接筛选http协议的流量…

多路h265监控录放开发-(1)建立head窗口并实现鼠标拖动整个窗口

头文件&#xff1a; //鼠标事件 用于拖动窗口//一下三个函数都是QWidget的可重载成员函数void mouseMoveEvent(QMouseEvent* ev) override;void mousePressEvent(QMouseEvent* ev) override;void mouseReleaseEvent(QMouseEvent* ev) override; 源文件&#xff1a; / /// 鼠标…