git常用用法说明

Git 是一个功能强大的版本控制工具,提供了许多常用的操作来帮助开发者管理代码。以下是一些常见的 Git 操作及其用法:

  1. Git 配置

    配置用户信息

    首次使用 Git 时,设置全局用户信息(用户名和邮箱):

    git config --global user.name "Your Name"
    git config --global user.email "youremail@example.com"
    
  2. 初始化仓库

    初始化一个新的 Git 仓库

    在一个项目文件夹中初始化一个 Git 仓库:

    git init
    
  3. 克隆仓库

    克隆远程仓库

    将一个远程仓库克隆到本地:

    git clone <repository_url>
    

    例如:

    git clone https://github.com/user/repository.git
    
  4. 查看仓库状态

    查看工作区状态

    查看当前工作区和暂存区的状态,了解哪些文件已修改或新增,哪些文件已暂存:

    git status
    
  5. 文件操作

    添加文件到暂存区

    将修改过的文件添加到暂存区,准备提交:

    git add <file_name>
    # 或者添加所有文件
    git add .
    
    提交更改

    将暂存区的更改提交到本地仓库,并添加提交信息:

    git commit -m "Commit message"
    
    • 没有输入message,直接点击提交按钮

      遇到如下内容时,表明 Git 进入了一个提交消息编辑状态,并且你需要输入提交消息。这里的信息是 Git 自动生成的编辑提示,行以 # 开头的是注释内容,不会影响提交。你需要在其中删除注释,并输入你的提交信息。

      步骤
      1. 输入提交消息:在这个界面中,你应该在顶部的空白区域输入你的提交消息。例如:

        Fix bug in store index.js
        
      2. 保存并退出编辑器

        • 如果你在 VSCode 中,应该在编辑器中看到一个文本文件,输入完提交信息后,按 Ctrl + S(或 Cmd + S 如果你在 macOS 上)保存文件。
        • 然后,关闭编辑器窗口,Git 会自动使用该消息进行提交。
      3. 如果提交信息为空:如果你没有输入任何信息,或者编辑窗口被关闭且没有任何提交消息,Git 会中止提交并显示一个错误提示,要求你输入有效的提交信息。

      也可以使用 Git 的命令行参数 -m 来直接提供提交信息,例如:

      git commit -m "Fix bug in store index.js"
      

      这样,Git 会跳过编辑器,直接提交并使用提供的消息。

    • 命令行输入git add .后,git commit中没有添加信息,终端进入如下内容:

      
      # Please enter the commit message for your changes. Lines starting
      # with '#' will be ignored, and an empty message aborts the commit.
      #
      # On branch main
      # Your branch is up to date with 'origin/main'.
      #
      # Changes to be committed:
      #	modified:   src/store/index.js
      #
      
      步骤:
      1. 可以按下 i 键进入输入模式
      2. 输入编辑信息
      3. 编辑完成后按下 esc 键,输入 :wq 保存并退出
  6. 查看提交历史

    查看提交日志

    查看提交历史记录,显示所有提交的详细信息:

    git log
    

    常用的 git log 选项:

    • git log --oneline:简洁模式,每个提交仅显示一行。
    • git log --graph:图形化显示提交历史。
    • git log --author="Author Name":查看某个作者的提交。
  7. 分支操作

    查看所有分支

    查看当前仓库中的所有分支:

    git branch
    
    创建新分支

    在当前分支的基础上创建一个新分支并切换到该分支:

    git checkout -b <branch_name>
    
    切换分支

    切换到已有的分支:

    git checkout <branch_name>
    
    删除分支

    删除本地分支(仅删除分支,不删除工作区的文件):

    git branch -d <branch_name>
    
    合并分支

    将一个分支合并到当前分支:

    git merge <branch_name>
    
  8. 远程仓库操作

    查看远程仓库

    查看当前配置的远程仓库:

    git remote -v
    
    添加远程仓库

    添加一个新的远程仓库(如 GitHub):

    git remote add origin <repository_url>
    
    推送更改到远程仓库

    将本地分支的更改推送到远程仓库:

    git push origin <branch_name>
    
    从远程仓库拉取更新

    从远程仓库拉取最新的代码并与本地合并:

    git pull origin <branch_name>
    
    克隆远程仓库

    将远程仓库克隆到本地:

    git clone <repository_url>
    
    删除远程分支

    删除远程仓库上的分支:

    git push origin --delete <branch_name>
    
  9. 撤销操作

    撤销修改(未暂存的)

    撤销工作区中的未暂存修改:

    git checkout -- <file_name> // 旧的命令,但仍然可以使用
    git restore -- <file> // 较新的 Git 命令,推荐使用该命令,因为它更具语义性
        
    // 例如:修改了 vue-demo/src/store/index.js 文件
    // 撤销工作区中的未暂存修改:git restore src/store/index.js 当前终端是在vue-demo文件夹下
    
    撤销已经暂存但未提交的修改

    将文件从暂存区移除,但保持工作区的修改:

    git reset <file_name>
    

    撤销本地已提交,但未同送到远端(Outgoing:当前本地分支上有待推送的提交,即本地提交但还未推送到远程仓库的提交)

    撤销最近一次提交(保留文件更改)
    1. 撤销最近一次提交,并保留文件更改(放回暂存区):

      git reset --soft HEAD~1
      
      • 这个命令会撤销最近一次提交(HEAD~1),并将修改回到暂存区(也就是放回 git add 状态)。你可以再次修改这些文件,或者重新提交。
    2. 撤销最近一次提交,并将修改放回工作区(不放回暂存区):

      git reset --mixed HEAD~1
      
      • 这个命令不仅撤销了提交,还会将修改回到工作区,但不保留暂存区的状态。即文件会被修改为未暂存的状态(git status 会显示“Changes not staged for commit”)。
    3. 完全撤销最近一次提交(删除提交的修改):

      git reset --hard HEAD~1
      
      • 这个命令会撤销提交并丢弃所有相关的修改,包括暂存区和工作区的文件变动。警告:使用 --hard 会丢失所有的本地更改,请确保你不再需要这些修改。
    各个选项的作用:
    • --soft:只撤销提交,保留文件更改,并将更改放回暂存区。
    • --mixed:撤销提交,并将更改放回工作区,不保留暂存区的状态。
    • --hard:撤销提交并丢弃所有文件更改(工作区和暂存区)。
    注意:
    • HEAD~1 表示你要撤销的是最近一次提交。如果你要撤销多个提交,可以使用 HEAD~n(例如,HEAD~2 表示撤销最近的两次提交)。
    • 如果已经推送到远端仓库,撤销提交时需要额外小心,避免影响远端仓库的历史。
  10. 标签操作

    创建标签

    在当前提交上创建一个标签:

    git tag <tag_name>
    
    推送标签

    将本地标签推送到远程仓库:

    git push origin <tag_name>
    
    查看标签

    查看当前仓库中的所有标签:

    git tag
    
    删除标签

    删除本地标签:

    git tag -d <tag_name>
    

    删除远程标签:

    git push origin --delete <tag_name>
    
  11. 查看和管理冲突

    查看文件冲突

    如果在合并或拉取时发生冲突,Git 会标记冲突文件,你可以通过 git status 查看冲突文件,并手动解决冲突。

    标记冲突已解决

    解决冲突后,添加冲突解决后的文件到暂存区:

    git add <file_name>
    
  12. 其他常用操作

    查看当前 Git 配置信息

    查看本地、全局和系统级别的 Git 配置:

    git config --list
    
    退出 Git 编辑器

    如果在编辑 commit 信息时想退出编辑器,可以使用以下命令:

    • vivim 中按下 :wq 保存并退出。
    • nano 中按下 Ctrl + X,然后选择 Y 保存。
    查找文件内容

    在仓库中查找特定内容:

    git grep "search_term"
    
样例
  1. 将仓库1的dev1分支合并到仓库2的dev2分支
    // 要将 仓库1 的 dev1 分支合并到 仓库2 的 dev2 分支,可以按照以下步骤进行操作。请注意,Git 本身是针对单个仓库进行管理的,因此需要将 仓库1 的内容拉取到 仓库2 中,然后执行合并操作。
    
    // 1.在仓库2中添加仓库1为远程仓库
    // 首先,在 仓库2 中添加 仓库1 作为远程仓库,这样才能从 仓库1 拉取 dev1 分支的代码。
    
    # 在仓库2中,添加仓库1作为远程仓库
    git remote add repo1 <仓库1URL>
        
    // 例如,如果 仓库1 是 GitHub 上的一个仓库,URL 可能是类似这样的:
    // git remote add repo1 https://github.com/user/repository1.git
    
    // 2.拉取仓库1的dev1分支
    // 拉取 仓库1 中的 dev1 分支到本地,并将其跟踪为一个远程分支。
    
    # 拉取仓库1的dev1分支
    git fetch repo1 dev1
    
    // 3.切换到仓库2的dev2分支
    // 确保当前所在分支是 仓库2 的 dev2 分支。
    
    # 切换到仓库2的dev2分支
    git checkout dev2
    
    // 4.将dev1分支合并到dev2分支
    // 将 仓库1 的 dev1 分支合并到 仓库2 的 dev2 分支。
    
    # 将仓库1的dev1分支合并到仓库2的dev2分支
    git merge repo1/dev1
    
    // 在此过程中,可能会遇到冲突,Git 会提示你进行冲突解决。解决冲突后,继续进行合并操作。
    
    // 5. 提交合并结果
    // 如果合并过程中没有冲突或冲突已解决,那么就可以提交合并结果。
    
    # 如果有冲突,解决冲突后使用git add标记为已解决
    git add <冲突文件>
    
    # 提交合并结果
    git commit -m "Merge dev1 branch from repository1 into dev2"
    
    // 6. 推送合并后的代码到仓库2的远程仓库
    // 合并完成后,你可以将 dev2 分支的最新代码推送到 仓库2 的远程仓库。
    
    # 将仓库2的dev2分支推送到远程仓库
    git push origin dev2
    

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

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

相关文章

如何在繁忙的生活中找到自己的节奏?

目录 一、理解生活节奏的重要性 二、分析当前生活节奏 1. 时间分配 2. 心理状态 3. 身体状况 4. 生活习惯 1. 快慢适中 2. 张弛结合 3. 与目标相符 三、掌握调整生活节奏的策略 1. 设定优先级 2. 合理规划时间 3. 学会拒绝与取舍 4. 保持健康的生活方式 5. 留出…

Docker:目录挂载、数据卷(补充二)

Docker&#xff1a;目录挂载、数据卷 1. 挂载2. 卷映射 1. 挂载 -v /app/nghtml:/usr/share/nginx/html /app/nghtml 是外部主机的地址 /usr/share/nginx/html 是内部容器的地址这里启动一个nginx&#xff0c;然后在后台运行时其命令为 (base) ➜ ~ docker run -d -p 80:80 …

新能源汽车大屏可视化第三次数据存储

任务&#xff1a; 将数据存放到temp.csv 链接&#xff1a; 1.排行页面 https://www.dongchedi.com/sales 2.参数页面 https://www.dongchedi.com/auto/params-carIds-x-9824 完善打印&#xff1a; 1. [{‘series_id’: 5952, ‘series_name’: ‘海鸥’, ‘image’: ‘https://…

Three.js资源-模型下载网站

在使用 Three.js 进行 3D 开发时&#xff0c;拥有丰富的模型资源库可以大大提升开发效率和作品质量。以下是一些推荐的 Three.js 模型下载网站&#xff0c;它们提供了各种类型的 3D 模型&#xff0c;适合不同项目需求。无论你是需要逼真的建筑模型&#xff0c;还是简单的几何体…

无人机故障安全模式设计逻辑与技术!

一、设计逻辑 故障检测与识别&#xff1a; 无人机系统需具备实时监测各项关键参数的能力&#xff0c;如电池电量、电机状态、传感器数据等。 当检测到参数异常或超出预设阈值时&#xff0c;系统应能迅速识别故障类型及其严重程度。 故障处理策略&#xff1a; 根据故障类型…

洞察:OpenAI 全球宕机,企业应该如何应对 LLM 的不稳定性?

北京时间12月12日上午&#xff0c;OpenAI证实其聊天机器人ChatGPT正经历全球范围的宕机&#xff0c;ChatGPT、Sora及API受到影响。 OpenAI 更新事故报告称&#xff0c;已查明宕机原因&#xff0c;正努力以最快速度恢复正常服务&#xff0c;并对宕机表示歉意。 此次 OpenAI 故障…

STM32F407ZGT6-UCOSIII笔记2:UCOSIII任务创建实验-Printf 函数卡住 UCOSIII 系统问题解决

今日简单编写熟悉一下UCOSIII系统的任务创建代码&#xff0c;理解一下OS系统&#xff1a; 并发现以及解决了 Printf 函数卡住 UCOSIII 系统问题解决 文章提供测试代码讲解、完整工程下载、测试效果图 目录 文件结构解释&#xff1a; 任务函数文件&#xff1a; 目前各个文件任…

CUDA从入门到精通(三)——CUDA编程示例

CUDA 编程简介 CUDA&#xff08;Compute Unified Device Architecture&#xff09;是由 NVIDIA 提供的一种并行计算平台和编程模型。它允许开发者利用 NVIDIA GPU 的并行计算能力&#xff0c;编写可以在 GPU 上高效运行的代码&#xff0c;从而加速计算密集型任务。 CUDA 通过…

【十进制整数转换为其他进制数——短除形式的贪心算法】

之前写过一篇用贪心算法计算十进制转换二进制的方法&#xff0c;详见&#xff1a;用贪心算法计算十进制数转二进制数&#xff08;整数部分&#xff09;_短除法求二进制-CSDN博客 经过一段时间的研究&#xff0c;本人又发现两个规律&#xff1a; 1、不仅仅十进制整数转二进制可…

舵机SG90详解

舵机&#xff0c;也叫伺服电机&#xff0c;在嵌入式开发中&#xff0c;舵机作为一种常见的运动控制组件&#xff0c;具有广泛的应用。其中&#xff0c;SG90 舵机以其高效、稳定的性能特点&#xff0c;成为了许多工程师和爱好者的首选&#xff0c;无论是航模、云台、机器人、智能…

如何为IntelliJ IDEA配置JVM参数

在使用IntelliJ IDEA进行Java开发时&#xff0c;合理配置JVM参数对于优化项目性能和资源管理至关重要。IntelliJ IDEA提供了两种方便的方式来设置JVM参数&#xff0c;以确保你的应用程序能够在最佳状态下运行。本文将详细介绍这两种方法&#xff1a;通过工具栏编辑配置和通过服…

跌倒数据集,5345张图片, 使用yolo,coco json,voc xml格式进行标注,平均识别率99.5%以上

跌倒数据集&#xff0c;5345张图片&#xff0c; 使用yolo&#xff0c;coco json&#xff0c;voc xml格式进行标注&#xff0c;平均识别率99.5%以上 &#xff0c;可用于某些场景下识别人是否跌倒或摔倒并进行告警。 数据集分割 训练组99&#xff05; 5313图片 有效集0&am…

nods.js之nrm安装及使用

nods.js之nrm安装及使用 一、简介二、安装 nrm与使用三、报错解决 一、简介 nrm 是 Node.js 的一个工具&#xff0c;用于管理和切换 npm 源&#xff08;Registry&#xff09;。它使得在不同的 npm 镜像源之间切换变得非常容易&#xff0c;尤其对于那些经常因为网络问题或速度原…

selenium自动化测试基础知识

目录 一、概念知识 (一)三大核心组件 (二)Selenium 自动化测试的工作原理 (三)Selenium 支持的操作 (四)Selenium 自动化测试的优点 (五)Selenium 自动化测试的缺点 (六)Selenium 自动化测试的应用场景 总结 二、实操例子 使用前提--安装步骤 注意事项 (一)浏览器的…

Cisco Packet Tarcer配置计网实验笔记

文章目录 概要整体架构流程网络设备互连基础拓扑图拓扑说明配置步骤 RIP/OSPF混合路由拓扑图拓扑说明配置步骤 BGP协议拓扑图拓扑说明配置步骤 ACL访问控制拓扑图拓扑说明配置步骤 HSRP冗余网关拓扑图拓扑说明配置步骤 小结 概要 一些环境配置笔记 整体架构流程 网络设备互连…

RNN LSTM Seq2Seq Attention

非端到端&#xff1a; data -》 cleaning -》 feature Engining &#xff08;70%-80%工作 设计特征&#xff09;-》 分类器 -》预测 端到端 End-to-End&#xff1a; data -》 cleaning -》Deep learning&#xff08;表示学习&#xff0c;从数据中学习特征&#xff09; -》…

【AI日记】24.12.17 kaggle 比赛 2-6 | 把做饭看成一种游戏 | 咖喱牛肉

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加&#xff1a;kaggle 比赛 Regression with an Insurance Dataset时间&#xff1a;9 小时睡得好很重要 读书 书名&#xff1a;富兰克林自传时间&#xff1a;0.5 小时阅读原因&#xff1a;100 美元纸…

电脑为什么会提示“msvcr120.dll缺失”?“找不到msvcr120.dll文件”要怎么解决?

电脑故障排查指南&#xff1a;揭秘“msvcr120.dll缺失”的真相与解决方案 在软件开发与日常维护的广阔天地里&#xff0c;遇到系统报错或文件缺失的情况可谓家常便饭。今天&#xff0c;我将带领大家深入探讨一个常见的系统提示——“msvcr120.dll缺失”&#xff0c;并揭秘其背…

Kotlin复习

一、Kotlin类型 1.整数 2.浮点 显示转换&#xff1a; 所有数字类型都支持转换为其他类型&#xff0c;但是转换前会检测长度。 toByte(): Byte toShort(): Short toInt(): Int toLong(): Long toFloat(): Float toDouble(): Double 不同进制的数字表示方法&#xff08;为了提高…

【BUG】记一次context canceled的报错

文章目录 案例分析gorm源码解读gin context 生命周期context什么时候cancel的什么时候context会被动cancel掉呢&#xff1f; 野生协程如何处理 案例分析 报错信息 {"L":"ERROR","T":"2024-12-17T11:11:33.0050800","file"…