Git 命令使用指南:从入门到进阶

目录

    • 1. Git 基本操作
      • 1.1 添加文件到暂存区
      • 1.2 提交更改到本地仓库
      • 1.3 查看工作区状态
      • 1.4 查看提交历史
      • 1.5 查看引用日志(包括已删除的记录)
    • 2. 版本回退与撤销
      • 2.1 版本回退
      • 2.2 查看已删除的提交记录
    • 3. 分支管理
      • 3.1 查看分支
      • 3.2 创建并切换到新分支
      • 3.3 合并分支
      • 3.4 删除分支
    • 4. 分支命名规范与用途
    • 5. 忽略文件管理
      • 5.1 创建 .gitignore 文件
    • 6. 远程仓库操作
      • 6.1 生成 SSH 公钥
      • 6.2 查看公钥
      • 6.3 添加远程仓库
      • 6.4 拉取远程仓库代码
    • 7. 常见问题与解决方案
      • 7.1 如何解决合并冲突?
      • 7.2 如何撤销已提交的更改?
      • 7.3 如何查看远程仓库信息?
    • 8. 总结

Git 是一个功能强大且广泛使用的版本控制工具,适用于个人项目和团队协作。本文整理并补充了常见的 Git 命令,涵盖基本操作、分支管理、版本回退、忽略文件配置、远程仓库操作等内容,帮助你更高效地使用 Git 管理代码。无论你是初学者还是有一定经验的开发者,这篇指南都能为你提供清晰且实用的参考。


1. Git 基本操作

1.1 添加文件到暂存区

git add .
  • 作用:将当前工作目录下的所有更改(包括新建、修改、删除的文件)添加到暂存区。
  • 说明git add . 会递归添加当前目录及其子目录下的所有更改。如果只想添加特定文件,可以使用 git add 文件名

1.2 提交更改到本地仓库

git commit -m "提交信息"
  • 作用:将暂存区的更改提交到本地仓库,并附上描述性的提交信息。
  • 注意
    • 提交信息应简洁明了,清晰描述本次提交的内容,例如 git commit -m "Add user login feature"
    • 如果提交信息为空,Git 会提示错误,建议始终提供有意义的提交信息。

1.3 查看工作区状态

git status
  • 作用:显示当前工作目录和暂存区的状态,告诉你哪些文件被修改、暂存或未跟踪。
  • 使用场景
    • 检查哪些文件需要 git addgit commit
    • 确认当前分支和工作区是否干净。

1.4 查看提交历史

git log
  • 作用:显示当前分支的提交历史,包括提交的哈希值(commit ID)、作者、日期和提交信息。
  • 进阶用法
    • git log --oneline:以单行形式显示提交历史,简洁明了。
    • git log --graph:以图形化方式显示分支合并历史。
    • git log --author="用户名":筛选特定作者的提交记录。

1.5 查看引用日志(包括已删除的记录)

git reflog
  • 作用:显示所有引用操作的历史记录,包括提交、分支切换、版本回退等,即使某些提交已经被删除。
  • 使用场景
    • 找回被 git reset 删除的提交。
    • 查看分支的历史操作记录。
  • 示例
    git reflog
    # 输出示例:
    # abc1234 HEAD@{0}: reset: moving to abc1234
    # def5678 HEAD@{1}: commit: Add new feature
    
    通过 git reset --hard abc1234 可以恢复到指定的引用状态。

2. 版本回退与撤销

2.1 版本回退

git reset --hard commitID
  • 作用:将当前分支的 HEAD 指针重置到指定的 commitID,并丢弃该提交之后的所有更改(包括工作区和暂存区)。
  • 注意
    • --hard 是危险操作,会彻底丢弃未保存的更改,建议先用 git status 确认工作区干净。
    • 如果需要保留工作区和暂存区的更改,可以使用 git reset --soft commitID
  • 使用场景:撤销错误的提交或回退到某个历史版本。

2.2 查看已删除的提交记录

如前所述,git reflog 是查看已删除提交的利器。通过 reflog,你可以找到被 git reset 或其他操作删除的提交的 commitID,然后通过 git reset --hard commitID 恢复。


3. 分支管理

3.1 查看分支

git branch
  • 作用:列出本地仓库中的所有分支,当前分支前会有一个 * 标记。
  • 进阶用法
    • git branch -r:查看远程分支。
    • git branch -a:查看本地和远程所有分支。

3.2 创建并切换到新分支

git checkout -b dev
  • 作用:创建名为 dev 的新分支,并立即切换到该分支。
  • 等价操作
    git branch dev      # 创建分支
    git checkout dev    # 切换到分支
    

3.3 合并分支

git merge 分支名
  • 作用:将指定分支(分支名)的更改合并到当前分支。
  • 操作步骤
    1. 切换到目标分支(例如 git checkout master)。
    2. 执行合并(例如 git merge dev)。
  • 注意
    • 如果有冲突,Git 会暂停合并,提示解决冲突。
    • 解决冲突后,需手动 git addgit commit 完成合并。

3.4 删除分支

git branch -d b1
  • 作用:删除已合并的分支 b1
  • 注意:如果分支未合并,Git 会阻止删除,需使用强制删除:
    git branch -D b1
    
  • 强制删除:直接删除分支 b1,无论是否已合并,谨慎使用。

4. 分支命名规范与用途

合理的分支命名和使用策略可以提高团队协作效率。以下是常见的 Git 分支模型:

  • master:生产分支,包含可部署到生产环境的稳定代码。
  • develop:开发分支,集成所有开发功能,供测试和验证。
  • feature/xxxx:功能分支,用于开发新功能,完成后合并到 develop 分支。命名示例:feature/user-auth
  • hotfix/xxxx:修复分支,用于修复生产环境的紧急 bug,完成后合并到 masterdeveloptest 分支。命名示例:hotfix/login-bug

5. 忽略文件管理

5.1 创建 .gitignore 文件

.gitignore
  • 作用:通过 .gitignore 文件指定不被 Git 跟踪的文件或目录。

  • 常见忽略内容

    • 临时文件:*.log.DS_Store
    • 依赖目录:node_modules/venv/
    • 配置文件:.envconfig.secret.yaml
  • 示例 .gitignore 文件

    # 忽略日志文件
    *.log
    # 忽略 node_modules 目录
    node_modules/
    # 忽略环境配置文件
    .env
    
  • 注意

    • .gitignore 文件需提交到 Git 仓库,以确保团队共享忽略规则。
    • 如果文件已被 Git 跟踪,需先执行以下命令移除跟踪:
      git rm -r --cached 文件名
      

6. 远程仓库操作

6.1 生成 SSH 公钥

ssh-keygen -t rsa
  • 作用:生成 SSH 密钥对,用于安全连接远程 Git 仓库(如 GitHub、GitLab)。
  • 步骤
    1. 运行命令,按提示设置保存路径和密码(可直接回车使用默认设置)。
    2. 默认生成文件:~/.ssh/id_rsa(私钥)和 ~/.ssh/id_rsa.pub(公钥)。

6.2 查看公钥

cat ~/.ssh/id_rsa.pub
  • 作用:显示公钥内容,复制后添加到远程仓库(如 GitHub 的 SSH Keys 设置)。
  • 注意:确保公钥正确添加到远程仓库,否则无法通过 SSH 推送代码。

6.3 添加远程仓库

git remote add origin git@<仓库地址>
  • 作用:将本地仓库与远程仓库关联,origin 是远程仓库的默认别名。
  • 示例
    git remote add origin git@github.com:username/repository.git
    

6.4 拉取远程仓库代码

git pull
  • 作用:从远程仓库拉取最新代码并合并到当前分支。
  • 等价操作
    git fetch origin
    git merge origin/分支名
    
  • 注意:如果本地和远程分支冲突,需先解决冲突。

7. 常见问题与解决方案

7.1 如何解决合并冲突?

  1. 执行 git merge 分支名 时,如果出现冲突,Git 会标记冲突文件。
  2. 打开冲突文件,手动修改冲突部分(通常以 <<<<<<<=======>>>>>>> 标记)。
  3. 解决冲突后,执行:
    git add .
    git commit
    

7.2 如何撤销已提交的更改?

  • 如果想撤销最后一次提交,但保留更改:
    git reset --soft HEAD^1
    
  • 如果想彻底撤销提交并丢弃更改:
    git reset --hard HEAD^1
    

7.3 如何查看远程仓库信息?

git remote -v
  • 作用:显示当前仓库关联的远程仓库地址。

8. 总结

通过以上命令和规范,你可以轻松管理 Git 仓库,实现代码版本控制、分支协作和远程同步。以下是快速参考表:

命令作用
git add .添加所有更改到暂存区
git commit -m "信息"提交更改到本地仓库
git status查看工作区状态
git log查看提交历史
git reflog查看引用日志(包括已删除记录)
git reset --hard commitID回退到指定版本
git branch查看分支
git checkout -b 分支名创建并切换到新分支
git merge 分支名合并指定分支到当前分支
git branch -d 分支名删除已合并分支
git branch -D 分支名强制删除分支
git pull拉取远程仓库代码
git remote add origin 地址添加远程仓库

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

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

相关文章

SQL数据库连接Python实战:疫情数据指挥中心搭建指南

SQL数据库连接Python实战&#xff1a;疫情数据指挥中心搭建指南从WHO数据集到实时仪表盘&#xff0c;构建工业级疫情监控系统一、疫情数据指挥中心&#xff1a;全球健康危机的中枢神经​​疫情数据价值​​&#xff1a;全球每日新增病例&#xff1a;50万疫苗接种数据&#xff1…

参赛单位条件放宽!2025年“数据要素 ×”大赛福建分赛厦门赛区赛事有新调整

各位伙伴们 想抓住数据价值机遇 在行业赛场上崭露头角吗&#xff1f; 2025年“数据要素”大赛 福建分赛厦门赛区已启动 这份超全赛事解读 带你一站式摸清参赛关键&#xff01; 01 参赛单位要求放宽 经省分赛组委会与国家赛事组委会沟通&#xff0c;不具有独立法人资格的…

BasicAuthenticationFilter处理 HTTP 基本认证(Basic Authentication)的核心过滤器详解

BasicAuthenticationFilter处理 HTTP 基本认证&#xff08;Basic Authentication&#xff09;的核心过滤器详解在 Spring Security 中&#xff0c;BasicAuthenticationFilter 是​​处理 HTTP 基本认证&#xff08;Basic Authentication&#xff09;的核心过滤器​​&#xff0…

Next.js 中使用 MongoDB 完整指南

1. 安装依赖npm install mongodb # 或者使用 mongoose&#xff08;ODM&#xff09; npm install mongoose2. 数据库连接配置使用原生 MongoDB 驱动创建 lib/mongodb.js 文件&#xff1a;import { MongoClient } from mongodbconst uri process.env.MONGODB_URI const options …

嵌入式系统教学范式演进:云端仿真平台如何重构温湿度监测实验教学

在嵌入式系统开发的教学中&#xff0c;环境温湿度监测实验是经典的入门项目。它涉及传感器原理、外设驱动、数据采集和通信协议等核心知识点。然而传统实验模式面临硬件成本高、调试周期长、设备易损坏等痛点。学生往往因接线错误或代码bug导致传感器或开发板烧毁&#xff0c;不…

1.6万 Star 的流行容器云平台停止开源

什么是 KubeSphere &#xff1f; KubeSphere 是面向云原生应用的容器混合云。 KubeSphere 愿景是打造一个以 Kubernetes 为内核的云原生分布式操作系统&#xff0c;它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用&#xff08;plug-and-play&#xff09;的集成…

广东省省考备考(第六十三天8.1)——资料分析、数量(强化训练)

资料分析 错题解析解析解析今日题目正确率&#xff1a;80% 数量关系&#xff1a;数学运算 错题解析解析标记题解析解析解析今日题目正确率&#xff1a;87%

Agents-SDK智能体开发[3]之多Agent执行流程

文章目录说明Agents SDK基础Handoffs功能实现Handoffs简单示例&#x1f31f; 运行结果整理&#x1f4dd; 执行过程概述&#x1f4cb; 运行结果事件一&#xff1a;分诊智能体创建转交请求事件事件二&#xff1a;转交响应事件事件三&#xff1a;目标 Agent 响应请求并完成任务改进…

深度揭秘端口映射:原理、场景、路由映射故障,与内网IP端口映射外网工具的选择

内网设备连不上外网&#xff1f;本地网络如何设置端口映射提供互联网服务&#xff1f;路由器端口映射失败怎么办&#xff1f;没有公网IP如何做端口映射&#xff1f;在网络通信领域&#xff0c;端口映射是一项至关重要的技术。在内部网络环境中&#xff0c;每一台设备都被分配了…

协作机器人掀起工厂革命:码垛场景如何用数据重塑制造业命脉?

在长三角某食品包装工厂的深夜生产线上&#xff0c;大视协作码垛机器人正在有序码垛&#xff0c;动作比码垛老师傅更精准。系统推送的实时能耗报表直接显示在厂长手机上&#xff0c;整厂能耗同比下降约32%。这不是魔法&#xff0c;这是"一切数据业务化、业务数据化"在…

LeetCode 刷题【24. 两两交换链表中的节点、25. K 个一组翻转链表】

24. 两两交换链表中的节点 自己做 解&#xff1a;直接置换 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(i…

多线程向设备发送数据

需求:做一个部门授权&#xff0c;可以把所选择部门下面的所有人的人脸信息传到设备组里(多个设备)&#xff0c;问题在于图片是通过Base64处理之后的&#xff0c;会导致文件名非常长&#xff0c;如果一次性传很多数据就会超过设备的最长请求长度&#xff0c;如果不用Base64处理的…

Buck的Loadline和DVS区别和联系

Buck 电路设计中&#xff0c;有两个概念&#xff0c;一个是Load-Line&#xff0c;一个是DVS&#xff0c;它们的含义是什么呢。 Load-Line&#xff08;也称为有源电压定位&#xff0c;AVP&#xff09;是通过调整BUCK电路的输出电压&#xff0c;使其根据负载电流动态变化的技术。…

MySQL会话连接数消耗内存分析

关于连接数消耗内存情况 FROM DEEPSEEK 在 MySQL 中&#xff0c;每个单独的空闲连接所消耗的内存量取决于多个因素&#xff0c;包括连接的线程栈大小&#xff08;由 thread_stack 参数设置&#xff09;和其他每个连接的缓冲区。根据测试结果来看&#xff0c;对于空闲连接的内…

Objective-C实现调节笔记本屏幕亮度(附完整源码)

Objective-C实现调节笔记本屏幕亮度 在macOS上,您可以使用Objective-C来调节笔记本的屏幕亮度。以下是一个简单的示例,演示如何使用CoreGraphics框架来实现这一功能。请确保您的Xcode项目中包含CoreGraphics框架。 完整源码示例 #import <Cocoa/Cocoa.h> #import <…

三十一、【Linux网站服务器】搭建httpd服务器演示个人主页、用户认证、https加密网站配置

httpd服务器功能演示一、安装 HTTPD 服务二、配置个人用户主页1. 启用个人空间功能2. 创建测试用户及网站目录3. 配置 SELinux 权限三、配置用户认证1. 创建密码文件2. 配置目录认证3. 重启服务生效四、配置 SSL 加密网站1. 生成自签名证书2. 配置 SSL 虚拟主机3. 重启服务验证…

把Java程序部署到本地Docker

一&#xff1a;clean && install程序install之后会在target中生成jar包 二&#xff1a;准备三个文件&#xff08;1&#xff09;其中Dockerfile主要起到配置作用&#xff1a;# 基础镜像 FROM openjdk:17-jdk-slim # 作者 MAINTAINER "" # 配置 ENV PAR…

Java学习-------外观模式

在软件开发中&#xff0c;随着系统的不断迭代&#xff0c;模块会越来越多&#xff0c;模块之间的依赖关系也会变得错综复杂。这不仅会增加开发难度&#xff0c;还会让系统的维护和扩展变得棘手。而外观模式就像一位 “前台接待员”&#xff0c;为复杂的系统提供一个简洁统一的接…

Go语言-->变量

Go语言–>变量 在 Go 语言中&#xff0c;定义变量有几种常见的方式。下面是一些常见的语法和用法&#xff1a; 1. 使用 var 关键字定义变量 最常见的方式是使用 var 关键字&#xff0c;后面跟上变量名和类型。你也可以为变量赋初值。 基本格式&#xff1a; var variableName…

分布式链路追踪的实现原理

分布式链路追踪系统的实现涉及多个核心技术环节&#xff0c;下面我将从数据采集、上下文传播、存储分析等维度深入解析其工作原理。 一、核心架构组件 1. 系统组成模块 #mermaid-svg-pDlZY54w2Z0Bp1H1 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-si…