【Tools】git使用详解以及遇到问题汇总

这里写目录标题

          • 安装git
          • 安装 TortoiseGit
          • git github gitlab, Gitee 区别
          • visual studio中使用git
          • git使用步骤
          • git命令
          • git删除某些历史提交记录
          • git找回丢失代码
          • git上传文本和二进制和gitignore
          • 删除文件删不掉的问题

安装git

https://blog.csdn.net/mukes/article/details/115693833

安装 TortoiseGit

https://download.tortoisegit.org/tgit/

ortoiseGit 只是一个 Git 的图形化客户端,提供 Windows 资源管理器中可视化的 Git 操作界面,但它依赖于 Git 本身的命令行程序 ,在文档里右键可以使用git的一些功能。

git github gitlab, Gitee 区别
  1. Git 是一个分布式(在不同ip上版本控制系统(VCS),用于跟踪文件的更改历史,特别适用于源代码管理。它允许开发者在本地和远程仓库中管理代码、跟踪代码的修改、恢复历史版本并进行并行开发
    1. 开发者在本地机器上使用 git init 初始化一个 Git 仓库,进行代码开发、提交(git commit)和分支(git branch)操作。所有操作都发生在本地 。
  2. GitHub 基于 Git 的托管平台(云端),提供远程代码仓库
    1. eg:如果一个开发者在 GitHub 上创建了一个名为 my-project 的仓库,他可以使用 git clone https://github.com/username/my-project.git 克隆该仓库到本地,进行开发后送回 GitHub。
  3. GitLab:与 GitHub 类似的托管平台,(可自托管) 企业可以将 GitLab 安装在自己的服务器上,完全控制源代码和数据。
  4. Gitee 基于 Git 的代码托管平台 , 国内的,访问速度快
visual studio中使用git

打开vs:工具->选项->源代码管理→插件选择

git使用步骤
  1. 在开始编写代码之前,首先需要创建一个 Git 仓库(repository),用于存储代码和版本历史记录。
  2. 在编写代码时,可以通过 命令将更改的文件添加到 Git 的暂存区(staging area)中。git add
  3. 通过 命令将暂存区中的更改提交到 Git 仓库中,并生成一个新的版本号(commit hash)。git commit
  4. 如果需要撤销某个提交,可以使用 命令来创建一个新的提交,该提交将会抵消先前的提交效果。git revert
  5. 如果需要合并不同分支的代码,可以使用 命令进行合并。git merge
  6. 如果需要查看代码的历史提交记录,可以使用 命令来获取详细信息。git log
  7. 如果需要将代码推送到远程仓库,可以使用 命令将本地代码推送到远程仓库。git push
  8. 如果需要从远程仓库中获取代码,可以使用 命令将远程代码拉取到本地。git pull
git命令

  1. git init :

    1. 把当前目录目录变成git可以管理的仓库,这时候你当前目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的
  2. git add readme.txt :

    1. 添加文件到 Git 缓存区
  3. git commit -m “Add hello.txt file”

    1. git commit -m 会将暂存区的内容提交到仓库,并附上提交信息 ,简明扼要地描述此次提交的目的。
    2. 会将文件的更改提交到 本地 Git 仓库。这个本地仓库是你电脑上的一个隐藏目录(通常在项目目录中的 **.git** 文件夹里) ,git push:用于将本地仓库的更改推送到远程仓库(例如 GitHub
    3. 输出中会显示你当前所在的分支
    4. git commit 会打开默认文本编辑器
    5. git commit -a -m “提交说明” : 会自动将所有已跟踪的文件的更改添加到暂存区,然后直接提交
  4. git status

    1. 当前分支状态 : Git 会告诉你当前分支和远程分支的关系(比如是否落后、领先或者是同步的)。
    2. 未暂存的更改(Unstaged Changes) : modified和deleted
    3. 暂存区的更改(Staged Changes),待commit状态
    4. (Untracked Files, 创建了新文件,但这些文件还没有被 Git 跟踪
    5. git status --ignored 来查看被忽略的文件
  5. git log : 列出所有的提交记录 ,每次记录的版本号,时间,作者等,git reflog会列出回退之后的最新版本

  6. **git rebase -i HEAD~n 😗*查看最近n次提交,把pick改为drop就可以删掉这个记录

  7. pick cbcc08b 初始化网络完成

    1. pick 989cd25 半成品
    2. pick c0904ee master提交测试
    3. pick 563959c vs里git提交测试
    4. drop 11160ac 删除1.txt 修改ignore,把每个项目下的x64文件夹也忽略
    5. drop 8bec162 提交gitignore文件
  8. **git diff**:显示当前文件和暂存区或历史提交之间的差异,帮助用户了解文件的具体改动

  9. 版本回退

  10. git reset --hard HEAD^ 几个^就是往前回退几个版本

  11. git reset --hard +版本号回退至对应版本

  12. 同步: 将本地仓库与远程仓库保持一致

  13. 这个过程包括将本地的更改推送到远程仓库,以及从远程仓库获取其他人提交的最新更改

  14. git branch 查看分支

  15. git branch -r 查看远程分支

  16. git branch -a 查看本地和远程所有分支

  17. **git branch <branch-name>**:创建一个新的分支,用于开发新的功能或修复问题,避免影响主分支。

  18. **git checkout <branch-name>**切换到指定分支,Git 会更新工作目录的内容为该分支的最新提交。

  19. git checkout -b 创建并切换到新分支

  20. git checkout 切换到某个特定的提交记录

  21. **git merge <branch-name>**合并是将一个分支的更改合并到另一个分支中,而不改变已有提交的历史记录。它会创建一个新的合并提交(merge commit)来记录这次操作。

  22. 变基是将一个分支的提交历史重新应用到另一个分支的最新提交之后。变基会重写历史记录,将变基分支的提交移到基准分支的最新提交之后。

  23. git checkout feature# 切换到 feature 分支

  24. git rebase main # 将 feature 分支的基准改为 main 分支的最新提交

  25. **git branch -d <branch-name>**:删除本地分支。在确保分支已被合并或不再需要时使用。

  26. git push origin <分支名>git push origin feature-xyz 会将 feature-xyz 分支推送到远程仓库的 feature-xyz 分支。

  27. git fetch origin <远程分支名>:<本地分支名> 拉取远程分支并创建本地分支:

  28. git diff <分支1> <分支2> 比较分支

  29. **git push**:将本地仓库的提交推送到远程仓库。常用于与团队共享代码或备份代码

  30. **git pull**:从远程仓库拉取最新的更改并与本地代码库合并。适用于同步远程仓库中的最新更新

  31. **git clone <repository-url>**:从远程仓库克隆代码库到本地。会复制所有的版本历史,使本地仓库成为远程仓库的副本

git删除某些历史提交记录

1、 使用 git loggit reflog 查找你想要开始的提交的位置。例如,假设你想修改最近 5 次提交,可以使用以下命令

git rebase -i HEAD~5

把不想要的提交记录改为从pick->drop。然后wq保存。显示:

git status 会显示所有有冲突的文件,通常会标记为 Unmerged paths。 :

git找回丢失代码

1、git reflog: Git 记录的所有分支变动历史,即使丢弃了某些提交,你可以通过 reflog 找回之前的状态。

出现这个错误是因为你的 Git 当前有未解决的合并冲突或未完成的 rebase 操作。在你解决这些问题之前,Git 不允许你切换到其他分支或提交。

git上传文本和二进制和gitignore

文本文件的提交
文本文件(如 .txt.md.html.css.js 等)在 Git 中会被当作“纯文本”处理,Git 针对文本文件做了一些特殊优化:

  • 差异化存储:Git 在提交文本文件时只存储文件内容的差异(增量),这样可以节省存储空间,便于跟踪文件的变化。
  • 合并和冲突解决:在多人协作中,如果多个人修改了同一个文本文件的不同部分,Git 可以较好地合并这些改动,并在发生冲突时提示,方便手动解决。
  • 查看历史:Git 可以轻松展示文本文件的修改历史,帮助开发者追踪内容变化。

二进制文件的提交

二进制文件(如 .jpg.png.exe.zip.pdf.doc .ipch 等)在 Git 中的处理方式不同于文本文件:

  • 不做差异化存储:二进制文件在每次修改时,Git 会将整个文件存储为一个新的对象,而不是只存储差异(因为二进制文件难以分辨具体内容的变化)。
  • 合并困难:如果多人协作修改同一个二进制文件,Git 无法自动合并不同版本。这种情况下,开发者通常需要选择使用某个版本或手动替换。
  • 查看历史限制:由于二进制文件无法显示文本内容,因此在查看历史时,Git 无法提供具体的改动内容,只能显示某个二进制文件被更新的记录。

所以要避免频繁更新大二进制文件:二进制文件的每次更新都会导致版本库快速膨胀

可以要把本地工作目录下的不需要提交的文件添加到.gitignore文件里,.gitignore 文件是 Git 中用于指定 忽略规则 的文件,告诉 Git 在提交时应忽略哪些文件或文件夹,避免它们被添加到仓库中。.gitignore 文件通常位于项目根目录下,一些没必要且大的二进制文件和项目的Debug文件要添加进去 ,1,用git管理工具右键添加,2,把文件或者文件夹添加到.gitignore文件里保存

eg ..vs 文件夹是 Visual Studio 在项目目录下创建的一个临时文件夹,用于存储开发环境的用户特定设置、调试信息和其他缓存数据, 生成大量缓存文件

eg。

放到根目录是为了一个ignore文件管理所有的,防止ignore文件过多。

提交时候忽略了一些文件,提交后发现出现了这个 .gitignore

**.gitignore** 文件需要提交一次吗?
是的,建议提交 .gitignore 文件到版本库中,这样团队中的其他人也可以共享同样的忽略规则,保持代码库的一致性。

删除文件删不掉的问题

今天装 TortoiseGit 后向重装,卸载之后删除文件夹发现:

一般会先检查是否真的有程序或者文件打开了没有关闭,但是我们在桌面或者任务管理器中找不到该程序。

方法:

explorer.exe通常被称为 Windows 资源管理器(Windows Explorer)。它负责管理和显示文件夹、文件、磁盘驱动器以及其他系统资源的图形用户界面(GUI) 。 位于系统的 C:\Windows\explorer.exe 路径下

但是图中位于D:\git下,把这两个进程结束掉(虽然显示无法结束),结束后桌面图标全没了。 当结束 explorer.exe 进程时,实际上是结束了 Windows 资源管理器。资源管理器控制着桌面图标、任务栏和文件浏览器等。因此,当 explorer.exe 被终止后,桌面和任务栏上的图标都会消失。

此时ctrl+shift+esc打开任务管理器重新运行explorer即可,

在这里运行:

之后全都恢复,文件夹也可以删除了。

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

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

相关文章

画立方体软件开发笔记 js-pytorch xlsx 导出 excel pnpm安装

js-pytorch npm install -g pnpm pnpm add js-pytorch 放着&#xff0c;等我把模型训练好了再用这个对接 xlsx pnpm install xlsx ai写代码&#xff0c;一遍就通了 import * as XLSX from "xlsx"; import { linelist } from ./2dviewport.js; function export…

Kotlin并发请求的一些知识记录

private suspend fun fetchDataConcurrently(list: MutableList<MyType>,onRequestResult: (Int, List<MyType>?) -> Unit //高阶函数回调) {val deferredList mutableListOf<Deferred<MyType?>>()// 设定任务超时时间为12秒&#xff0c;并使用 …

配置VScodePython环境Python was not found;

Python was not found; run without arguments to install from the Microsoft Store, or disable this shortcut from Settings > Manage App Execution Aliases. 候试试重启电脑。 在卸载重装python后会出现难以解决的局面&#xff0c;系统变量&#xff0c;命令行&#…

OracleLinux7.9-ssh问题

有套rac环境&#xff0c;db1主机无法ssh db1和db1-priv&#xff0c;可以ssh登录 db2和db2-priv [rootdb1 ~]# ssh db1 ^C [rootdb1 ~]# ssh db2 Last login: Wed May 14 18:25:19 2025 from db2 [rootdb2 ~]# ssh db2 Last login: Wed May 14 18:25:35 2025 from db1 [rootdb2…

如何创建maven项目

1.IDEA 中创建 Maven 项目 步骤一&#xff1a;点击 File -> New -> Project&#xff0c;在弹出的窗口左侧选择 Maven&#xff0c;点击 Next&#xff1a; 步骤二&#xff1a;填写项目的 GroupId、ArtifactId、Version 等信息&#xff08;这些对应 pom.xml 中的关键配置&am…

Python爬虫实战:研究ajax异步渲染加密

一、引言 在当今数字化时代,数据已成为推动各行业发展的核心驱动力。网络爬虫作为一种高效的数据采集工具,能够从互联网上自动获取大量有价值的信息。然而,随着 Web 技术的不断发展,越来越多的网站采用了 AJAX(Asynchronous JavaScript and XML)异步渲染技术来提升用户体…

沪深股指期货指数怎么参考交易?

沪深股指期货指数&#xff0c;其实它就是咱们炒股时的一个“风向标”和“工具箱”。今天咱们就来聊聊怎么参考这个指数来交易&#xff0c;让你也能轻松上手&#xff01; 一、沪深股指期货指数是啥&#xff1f; 沪深股指期货指数&#xff0c;简单来说&#xff0c;就是基于沪深…

演员评论家算法

一、演员评论家算法核心思想和原理 演员(actor)代表策略&#xff0c;评论家代表价值函数。演员评论家算法是基于价值和策略的综合性方法。具体来说该算法使用了策略梯度和时序差分方法&#xff0c;是二者的一种有机结合。 1. 主要思想 策略梯度算法以轨迹为单位更新&#xf…

PyCharm 快捷键指南

PyCharm 快捷键指南 常用编辑快捷键 代码完成&#xff1a;Ctrl Space 提供基本的代码完成选项&#xff08;类、方法、属性&#xff09;导入类&#xff1a;Ctrl Alt Space 快速导入所需类语句完成&#xff1a;Ctrl Shift Enter 自动结束代码&#xff08;如添加分号&#…

计算图存储采用矩阵吗,和张量关系

计算图存储采用矩阵吗,和张量关系 计算图的存储方式与张量的关系 一、计算图的存储方式 计算图(Computational Graph)是一种用于描述数学运算的有向无环图(DAG),其节点代表运算(如加减乘除、矩阵乘法、激活函数等),边代表运算的输入和输出(通常是张量)。计算图的…

RDD中分区、分区器及自定义分区器的学习

深入理解 Spark 中 RDD 分区与分区器&#xff1a;原理、应用及自定义实现 在大数据处理领域&#xff0c;Apache Spark 凭借其高效的分布式计算能力成为了众多开发者的首选框架。在 Spark 中&#xff0c;弹性分布式数据集&#xff08;Resilient Distributed Dataset&#xff0c…

OpenCV CUDA 模块中用于在 GPU 上计算矩阵中每个元素的绝对值或复数的模函数abs()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 void cv::cuda::abs(InputArray src, OutputArray dst, Stream &stream Stream::Null()) 是 OpenCV 的 CUDA 模块中的一个函数&#xff0c;…

FramePack - 开源 AI 视频生成工具

&#x1f3ac; 项目简介 由开发者 lllyasviel 创建的一个轻量级动画帧处理工具库&#xff0c;专门用于游戏开发、动画制作和视频处理中的帧序列打包与管理。该项目采用高效的算法实现&#xff0c;能够显著提升动画资源的处理效率。 此 AI 视频生成项目&#xff0c;旨在通过低显…

商业架构 2.0 时代:ZKmall开源商城前瞻性设计如何让 B2B2C 平台领先同行 10 年?

在数字化转型加速的今天&#xff0c;传统 B2B2C 平台面临用户体验割裂、数据孤岛严重、业务扩展困难等挑战。ZKmall 开源商城通过 “业务中台 数据中台 技术中台”的三位一体架构设计&#xff0c;结合“插件化扩展 分布式服务 智能决策”*三大核心能力&#xff0c;构建起具…

Java中Money类的使用及与BigDecimal的对比

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、为什么需要Money类&#xff1f; 在金融和商业计算中&#xff0c;精确的货币处理是至关重要的。虽然Java提供了BigDecimal类来处理高精度计算&#xff0c…

判断数据的所有属性是否都是基本类型

方法解释 OnlyPrimitiveTypes 方法: 参数: 接收一个对象 obj 进行检查。返回值: 返回布尔值&#xff0c;表示对象及其所有属性是否仅包含基本类型。逻辑: 首先检查 obj 是否为 null&#xff0c;如果是&#xff0c;则返回 true。然后检查 obj 的类型是否为基本类型&#xff0c;如…

【Linux】Linux安装并配置mysql

目录 1.删除原有mysql 2.添加 MySQL Yum Repository 3.安装 MySQL 3.1.报错 4.启动 MySQL 服务 5.设置mysql 5.1.密码验证组件 5.2.密码策略 5.3.移除匿名用户 5.4.是否禁用root远程访问 5.5.是否删除test 5.6.是否重新加载权限 5.7.设置远程权限 5.7.1.登录mysql…

springboot AOP 接口限流(基于IP的接口限流和黑白名单)

使用 Spring Boot 自定义注解和AOP实现基于IP的接口限流和黑白名单 在我们日常开发的项目中为了保证系统的稳定性&#xff0c;很多时候我们需要对系统做限流处理&#xff0c;它可以有效防止恶意请求对系统造成过载。常见的限流方案主要有&#xff1a; 网关限流&#xff1a; NG…

OpenCV CUDA模块中矩阵操作------范数(Norm)相关函数

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 OpenCV 的 CUDA 模块中&#xff0c;与范数&#xff08;Norm&#xff09;相关的函数主要用于计算矩阵的范数或者两个矩阵之间的差值范数。 主…

生成对抗网络(Generative Adversarial Networks ,GAN)

生成对抗网络是深度学习领域最具革命性的生成模型之一。 一 GAN框架 1.1组成 构造生成器&#xff08;G&#xff09;与判别器&#xff08;D&#xff09;进行动态对抗&#xff0c;实现数据的无监督生成。 G&#xff08;造假者&#xff09;&#xff1a;接收噪声 ​&#xff0c…