这篇 Git 教程太清晰了,很多 3 年经验程序员都收藏了
wptr33 2025-10-02 09:03 20 浏览
引言
Git 是现代开发中不可或缺的版本控制工具,尤其适用于团队协作和代码管理。本文将带你了解 Git 的基础操作命令,包括 git init 、git add 、git commit 、git diff 、git log 、.gitignore 等,快速上手版本控制。
一、初始化仓库: git init
使用 Git 前,需先初始化一个本地仓库:
git init
执行后会在当前目录生成一个 .git 文件夹,Git 会在此目录下跟踪项目的变更记录。
#技术分享 二、配置用户信息
首次使用 Git 时,推荐设置用户名和邮箱:
git config --global user.name "xxxxx"
git config --global user.email "xxxx@qq.com"
加上 --global 会全局生效,仅对当前项目配置可以省略该参数。
三、代码暂存区(Staging Area)是什么?
Git 的提交操作分为两个阶段:暂存(staging) 和 提交(commit) 。
- 当你修改了文件,Git 并不会立即记录这些改动;
- 你需要先使用 git add 命令,把改动“放进暂存区”,告诉 Git:“这些改动我准备好了,可以提交”;
- 然后再使用 git commit 将暂存区的内容提交到本地仓库,记录为一个快照。
可以把暂存区类比为“快照准备区”,你可以反复修改文件、添加到暂存区,最后一口气提交,确保每次提交都是有意义的逻辑单元。
举个例子:
git add index.html
git add style.css
git commit -m "更新首页结构和样式"
小贴士:你可以分批使用 git add 管理暂存内容,按逻辑分组提交更利于协作和回溯。
四、查看当前状态: git status
在进行任何修改之前,查看当前仓库的状态是非常重要的。git status 是最常用的命令之一,能让你清楚了解哪些文件被修改了,哪些文件已加入暂存区,哪些文件未被跟踪。
git status
它的输出通常会分为三部分:
- 已暂存的文件 :这些文件已使用 git add 添加到暂存区,准备提交。
- 未暂存的文件 :这些文件被修改,但还未添加到暂存区。
- 未跟踪的文件 :这些文件是新创建的,Git 并未跟踪它们。
例如:
On branch main
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: index.html
new file: style.css
Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: app.js
通过 git status ,你可以随时了解当前工作区和暂存区的状态,帮助你决定接下来的操作。
五、添加文件到暂存区: git add
当你修改或新增文件后,使用 git add 将其添加到 Git 的暂存区:
git add 文件名
也可以批量添加所有修改:
git add .
C 六、提交更改: git commit -m
将暂存区的内容提交至本地仓库:
git commit -m "提交说明"
-m 后面是提交信息,建议语义清晰,例如:
git commit -m "新增用户登录功能"
七、推送到远程仓库: git push origin main
本地提交之后,需要推送代码到远程仓库(如 GitHub、Gitee):
git push origin main
- origin 是默认的远程仓库别名;
- main 是目标分支名(如果你使用的是 master ,请替换);
提交后远程成员就可以拉取(pull)你最新的修改了。
如果你还没有远程仓库,请先去 GitHub / Gitee 创建一个,然后关联远程仓库地址:
git remote add origin https://github.com/yourname/your-repo.git
八、查看文件改动: git diff
在 commit 之前,可用 git diff 查看修改内容:
git diff
九、查看提交历史: git log --oneline
快速查看历史提交记录:
git log --oneline
输出示例:
e3f1a1b 添加登录功能
2c3d9a7 初始提交
十、忽略某些文件: .gitignore
在项目中,有些文件无需提交到 Git 仓库,例如缓存、编译结果、配置文件等。使用 .gitignore 文件可忽略这些文件:
# 忽略 node_modules 文件夹
node_modules/
# 忽略所有 .log 文件
*.log
# 忽略 .env 环境变量文件
.env
十一、重命名默认分支: git branch -M main
很多平台(如 GitHub)推荐使用 main 作为主分支名称:
git branch -M main
这样可以将默认分支由 master 改为 main 。
总结命令一览表
| 命令 | 作用 | | ---
| git init | 初始化仓库 | | git config | 设置用户名与邮箱 | | git status | 查看当前文件状态 | | git add | 添加改动到暂存区 | | git commit -m | 提交改动 | | git push origin main | 推送代码到远程 main 分支 | | git diff | 查看未提交的改动 | | git log --oneline | 查看提交历史 | | .gitignore | 忽略文件 | | git branch -M main | 重命名分支为 main |
写在最后
Git 是每个开发者都必须掌握的技能之一。掌握好这些常用命令,就能覆盖 90% 的使用场景。未来如果你要进行多人协作、分支合并、冲突解决,这些基础就是你的武器库。
--- 觉得实用就点个赞、关注、收藏支持一下吧
相关推荐
- 深度剖析 MySQL 数据库索引失效场景与优化策略
-
在互联网软件开发领域,MySQL数据库凭借其开源、高效等特性被广泛应用。而索引,作为提升MySQL查询性能的关键利器,能大幅加速数据检索。然而,在实际开发中,即便精心创建了索引,却常常遭遇索引失...
- 15分钟,带你了解indexedDB,这个前端存储方案很重要!
-
原文来源于:程序员成长指北;作者:Django强哥如有侵权,联系删除最近在给前端班授课,在这次之前的最后一次课已经是在2年前,2年的时间,前端的变化很大,也是时候要更新课件了。整理客户端存储篇章时模糊...
- MySQL 面试总被问到的那些问题,你都懂了吗?
-
事务的四大特性是什么?首先得提一下ACID,这可是数据库事务的灵魂所在:原子性(Atomicity):要么全部成功,要么全部失败回滚。一致性(Consistency):确保数据在事务前后都处于一致状态...
- Java 字符串常见的操作_java字符串总结
-
在Java当中,为字符串类提供了丰富的操作方法,对于字符串,我们常见的操作就是:字符串的比较、查找、替换、拆分、截取以及其他的一些操作。在Java中,有String,StringBuffer和St...
- java学习分享:Java截取(提取)子字符串(substring())
-
在String中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。1.substring(intbeginIndex)形...
- 你必须知道的 7 个杀手级 JavaScript 单行代码
-
1.如果你需要一个临时的唯一ID,请生成随机字符串。这个例子将为你生成一个随机字符串:constrandomString=Math.random().toString(36).slice(2)...
- MySQL 索引失效:原因、场景与解决方案
-
在互联网软件开发领域,MySQL作为一款广泛使用的关系型数据库,其性能优化至关重要。而索引,作为提升MySQL查询性能的关键手段,一旦失效,会导致查询效率大幅下降,影响整个系统的性能。今天,就来...
- Axure9 教程:可模糊搜索的多选效果
-
一、交互效果说明1.点击话题列表中的话题选项,上方输入框内显示选择的话题标签,最多可选择5个标签,超出将有文字提示。2.点击输入框内已选择的话题标签的删除按钮,可以删除已选择的话题标签,并且该标签返回...
- JavaScript字符串操作方法大全,包含ES6方法
-
一、charAt()返回在指定位置的字符。...
- 为什么MySQL索引不生效?来看看这8个原因
-
在数据库优化中,最让人头疼的事情之一莫过于精心设计的索引没有发挥作用。为什么会出现这种情况?这篇文章带大家一起探讨一些常见原因,方便大家更好地理解MySQL查询优化器是如何选择索引的,以及在出现类...
- Kettle实现rabbitMQ的生产与消费_rabbitmq不支持顺序消费
-
文章目录一、Kettle为什么可以读取流数据?...
- MySQL高频函数Top10!数据分析效率翻倍,拒绝无效加班!
-
引言:为什么你的SQL代码又臭又长?“同事3行代码搞定的事,你写了30行?”“每次处理日期、字符串都抓狂,疯狂百度?”——不是你不努力,而是没掌握这些高频函数!本文精炼8年数据库开发经验,总结出10个...
- mysql的截取函数用法详解_mysql截取指定字符
-
substring()函数测试数据准备:用法:以下语法是mysql自动提示的1:substirng(str,pos):从指定位置开始截取一直到数据完成str:需要截取的字段的pos:开始截取的位置。从...
- MySQL函数:字符串如何截取_mysql 字符串截取函数
-
练习截取字符串函数(五个)mysql索引从1开始...
- 数据集成产品分析(一)_数据集成工具有哪些
-
编辑导语:数据集成产品是数据中台建设的第一环节,在构建数据中台或大数据系统时,首先要将企业内部各个业务系统的数据实现互联互通,从物理上打破数据孤岛。本文作者对数据集成产品进行了分析,一起来看一下吧。数...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
程序员的开源月刊《HelloGitHub》第 71 期
-
详细介绍一下Redis的Watch机制,可以利用Watch机制来做什么?
-
如何将AI助手接入微信(打开ai手机助手)
-
SparkSQL——DataFrame的创建与使用
-
假如有100W个用户抢一张票,除了负载均衡办法,怎么支持高并发?
-
Java面试必考问题:什么是乐观锁与悲观锁
-
redission YYDS spring boot redission 使用
-
一文带你了解Redis与Memcached? redis与memcached的区别
-
如何利用Redis进行事务处理呢? 如何利用redis进行事务处理呢英文
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)