当前位置: 首页 > news >正文

Git 入门指南:核心概念与常用命令全解析

Git 入门指南:核心概念与常用命令全解析

  • 前言
  • 一、Git相关概念
    • 1.1 工作目录
    • 1.2 暂存区
    • 1.3 本地仓库
    • 1.3 远程仓库
      • 1.3.1 首次提交到远程仓库提示输入用户名密码
      • 1.3.2 解决方法
  • 二、Git常用命令
    • 2.1 配置命令
      • 2.1.1 查看当前 Git 配置的所有信息
      • 2.1.2 查看系统全局配置
      • 2.1.3 修改系统全局的默认分支
        • 2.1.3.1 切换分支
        • 2.1.3.2 切换分支操作详细演示
          • 2.1.3.2.1 本地切换分支
          • 2.1.3.2.2 切换到远程分支(并在本地创建对应的分支)
          • 2.1.3.2.2 快速切换回上一个分支
      • 2.1.4 查看当前用户全局配置
      • 2.1.5 查看当前仓库配置信息
      • 2.1.6 配置用户名和邮箱
      • 2.1.7 删除用户名或者邮箱
    • 2.2 其他常用命令
      • 2.2.1 创建仓库
      • 2.2.2 查看当前状态
      • 2.2.3 添加到暂存区
      • 2.2.4 将暂存区的内容提交到本地仓库
      • 2.2.5 推送到远程仓库
      • 2.2.6 查看代码的修改部位
      • 2.2.7 查看提交记录
    • 2.3 操作远程仓库
      • 2.3.1 本地仓库关联远程仓库
      • 2.3.2 推送到远程仓库
        • 2.3.2.1 推送本地分支到远程同名分支
        • 2.3.2.2 推送本地分支到远程不同名分支
        • 2.3.2.3 省略远程分支名(默认同名)
        • 2.3.2.4 删除远程分支
        • 2.3.2.5 强制推送(覆盖远程分支)
        • 2.3.2.6 设置默认推送
        • 2.3.2.7 推送所有分支
      • 2.3.3 查看关联的远程仓库
      • 2.3.4 删除已关联的远程仓库
      • 2.3.5 拉取远程仓库
      • 2.3.6 实际工作流示例
        • 场景:将本地开发分支推送到远程仓库

前言

在现代软件开发中,版本控制工具是开发者不可或缺的“得力助手”,而 Git 作为当前最流行的分布式版本控制系统,已成为团队协作和个人项目管理的标配。无论是跟踪代码变更、回溯历史版本,还是多人协同开发、远程同步项目,Git 都能提供高效且可靠的支持。然而,对于初学者而言,Git 的工作机制和命令体系往往显得抽象且复杂,诸如“工作目录、暂存区、本地仓库”的概念区分,以及“add、commit、push”等命令的实际应用,都可能成为入门路上的阻碍。

本文专为 Git 新手打造,旨在通过清晰的概念拆解和实操案例,帮助读者快速掌握 Git 的核心逻辑与常用技巧。文章第一部分将系统讲解 Git 的四大核心区域——工作目录、暂存区、本地仓库和远程仓库,通过直观的图示展示它们之间的数据流关系,让你明白“代码从修改到提交的完整路径”;第二部分则聚焦高频使用的 Git 命令,从配置层级、仓库初始化、代码提交到远程同步,详细解析每个命令的功能、参数及实际场景用法,并附上操作截图辅助理解。

无论你是刚接触版本控制的编程初学者,还是需要梳理 Git 知识体系的开发者,本文都将为你打下坚实的基础,让你在项目开发中轻松驾驭 Git,告别“代码丢失”“版本混乱”的困扰,真正发挥版本控制的价值。接下来,就让我们一同开启 Git 的学习之旅吧!

一、Git相关概念

1.1 工作目录

就是我们自己写代码的文件夹,随时随地的写、修改,不会被记录和跟踪。
在这里插入图片描述

1.2 暂存区

我们将自己写好的代码放进暂存区,就做了跟踪。代码放在暂存区之后,在工作目录如果对其修改了,发现修改的不对,可以随时删除工作目录的修改,将暂存区的恢复到工作目录。
在这里插入图片描述
一旦点击+添加到暂存区后,就在暂存区可以看到它。之后再修改还可以再工作目录看到修改的地方。
在这里插入图片描述

1.3 本地仓库

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 远程仓库

上面有提及远程仓库。其实远程仓库就是在服务器上的一个仓库。第一次使用需要在上面创建,之后克隆到本地。请参看上一篇文章《上传代码到gitee仓库》这里我使用的是CSDN上的GitCode,不是Gitee,但大同小异。
下面简要说一下创建仓库吧。

登录自己的GitCode账号,这个可以申请。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在电脑的任何一个文件夹下都可以右键,点击Git Bash,之后将剪切板的文字粘贴进去。请注意,右键–粘贴,不要使用Ctrl+V!
之后就将服务器的仓库克隆到本地了。

1.3.1 首次提交到远程仓库提示输入用户名密码

如果从GitCode克隆了工程,之后修改了代码,想要提交到远程仓库,这个时候会提示:

输入用户名
输入密码
(解释:刚才我遇到这个问题,现在已经解决了,问题没有截图)

1.3.2 解决方法

  • 用户名:就是gitcode的用户名,比如我叫:smart_boy_,那么就把这个写上去。
  • 密码:这个密码是在gitcode上生成的令牌。下面详细讲一下过程。
    • 在“访问令牌”,新建访问令牌。
      在这里插入图片描述
      在这里插入图片描述

    • 最后点击新建访问令牌
      在这里插入图片描述

    • 之后会显示你的令牌,相当于一个密码,一定要保存好这个令牌。上面的密码一栏就写这个令牌就可以了。

之后就可以git push到远程仓库了。

二、Git常用命令

Git 配置有三个层级:

  • 系统级 (--system) - 对所有用户生效
  • 全局级 (--global) - 对当前用户的所有仓库生效
  • 仓库级 (--local) - 只对特定仓库生效
  1. 系统全局配置(–system):包含了系统内的所有⽤户和所有仓库的配置信息,系统配置存放在Git安装⽬录下C:\Program Files\Git\etc\gitconfig。
  2. ⽤户全局配置(–global):包含了当前⽤户的所有 Git 仓库配置,它存放在⽤户⽬录下:C:\Users[系统⽤户名].gitconfig。
  3. 仓库配置(–local):仓库级配置仅适⽤于某个 Git 仓库,它存放在项⽬⽬录下:项⽬根⽬录/.git/config

⽽这三个配置⽂件的优先级为:

系统全局配置 < ⽤户全局配置 < 仓库配置

2.1 配置命令

2.1.1 查看当前 Git 配置的所有信息

git config --list

或者

git config -l

在这里插入图片描述
最后一行输入q,就可以退出。

2.1.2 查看系统全局配置

git config --system --list

在这里插入图片描述

2.1.3 修改系统全局的默认分支

比如修改为main。

git config --global init.defaultBranch main

在这里插入图片描述

2.1.3.1 切换分支

在 Git 中切换分支可以使用 git checkout 或较新的 git switch 命令。

git switch 想要切换的分支名
git checkout 想要切换的分支名
2.1.3.2 切换分支操作详细演示
2.1.3.2.1 本地切换分支

先查看一下当前的所有分支:

git branch  # 查看本地分支
# 或查看包括远程分支在内的所有分支
git branch -a

在这里插入图片描述

2.1.3.2.2 切换到远程分支(并在本地创建对应的分支)

如果要切换到一个仅存在于远程的分支(如 origin/release),可以直接创建并切换到本地对应分支:

# 方法 1: checkout
git checkout -b 本地分支名 origin/远程分支名# 方法 2: switch(更推荐)
git switch -c 本地分支名 origin/远程分支名
2.1.3.2.2 快速切换回上一个分支
git checkout -
# 或
git switch -

在这里插入图片描述

  • 注意事项
    • 切换分支前,确保当前分支的修改已提交(git commit)或暂存(git stash),否则未提交的修改可能会被带到新分支。
    • 如果分支名称包含特殊字符(如 /),直接输入即可,Git 会自动识别。

2.1.4 查看当前用户全局配置

git config --global --list

在这里插入图片描述

2.1.5 查看当前仓库配置信息

git config --local --list

在这里插入图片描述

2.1.6 配置用户名和邮箱

git config --global user.name "你的名字"

这里,“你的名字” 可以自由修改。

git config --global user.email "你的邮箱"

同样,邮箱可以自己修改。

2.1.7 删除用户名或者邮箱

删除全局配置:

git config --global --unset user.name
git config --global --unset user.email

重新设置正确的全局配置

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

如果某些仓库需要特殊配置,可以单独设置:

git config user.name "Repo-specific Name"
git config user.email "repo.email@example.com"

2.2 其他常用命令

2.2.1 创建仓库

对于没有git仓库的工程,可以在终端执行下面的命令创建仓库。

git init

2.2.2 查看当前状态

git status

可以看到当前工作目录下是否有文件已修改,是否跟踪。

  • Changes to be committed表⽰已经添加到暂存区的⽂件。
  • Changes not staged for commit表⽰已经修改但没有添加到暂存区的⽂件。
  • Untracked files表⽰未跟踪的⽂件。就是新建的文件,还未对其进行跟踪。

在这里插入图片描述

新建了文件a.h,之后再次执行git status命令。

在这里插入图片描述

执行git add .之后再次执行git status
在这里插入图片描述

2.2.3 添加到暂存区

git add .

后面加.表示全部文件都添加到暂存区,如果只添加一个文件,可以加文件名。

2.2.4 将暂存区的内容提交到本地仓库

git commit -m "描述本次修改的内容"

也可以有如下参数:

  • 参数-a, 表示直接从工作区提交到版本库, 略过了git add步骤, 不包括新增的文件
git commit -a
  • 提交暂存区的指定文件到仓库区
git commit filename
  • 使用一次新的commit, 替代上一次提交, 会修改commit的hash值( id)
git commit --amend -m "描述本次修改的内容"

比如说,我前面已经提交了一次,现使用git commit --amend -m "描述本次修改的内容"命令,又提交了一次。

在这里插入图片描述
此时查看一下VScode。

在这里插入图片描述
在这里插入图片描述
两个版本被合并了。

在这里插入图片描述
在git bash查看一下状态。

在这里插入图片描述
查看一下修改内容:
在这里插入图片描述
之后测试一下git commit -a命令。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
看下提交信息:

在这里插入图片描述
去VScode里看下。
在这里插入图片描述
我们手动提交一次。

git push

在这里插入图片描述
最后测试一下git commit filename这个命令。比如我们再新建两个文件。
在这里插入图片描述

但只提交b.c。先将其都放进暂存区。
在这里插入图片描述
这个时候对b.h进行修改。看下修改的内容。

在这里插入图片描述
再次跳过git add b.h,直接提交到本地仓库。

在这里插入图片描述
看下VScode。
在这里插入图片描述
我们使用命令来操作。

在这里插入图片描述
在这里插入图片描述
上面错别字,“推送到”。

2.2.5 推送到远程仓库

上面已经讲过了推送的命令:

git push

2.2.6 查看代码的修改部位

git diff

如果只看某一个文件的修改,可以加上文件名,比如:

git diff a.c

举例:
在这里插入图片描述
删除的⾏:会⽤减号(-)标记。
新增的⾏:会⽤加号(+)标记。

2.2.7 查看提交记录

上面已经提到了这个命令。

git log

另外,可以有其他的用法。

  • 查看日志(比如,最近5条), 不带参数-n则显示所有日志
git log -n5

在这里插入图片描述

  • 参数“–oneline”可以让日志输出更简洁( 一行)
git log -n20 --oneline

在这里插入图片描述

  • 参数“–graph”可视化显示分支关系
git log -n20 --graph

在这里插入图片描述

  • 显示某个文件的版本历史
git log --follow [file]

在这里插入图片描述

2.3 操作远程仓库

2.3.1 本地仓库关联远程仓库

git remote add origin <远程仓库URL>

以HTTPS为例,它的命令是这样的:

git remote add origin https://gitcode.com/smart_boy__/Git_Test.git

以SSH为例,它的命令是这样的:

git remote add origin git@gitcode.com:smart_boy__/Git_Test.git

2.3.2 推送到远程仓库

git push 是将你本地仓库的更改推送到远程仓库的命令。通常⽤于在你本地完成⼀些修改(如提交git commit)后,将这些更改同步到远程仓库,使其他协作者可以看到你所做的更改。

git push <远程仓库名> <本地分支名>:<远程分支名>
  • <远程仓库名>:通常是 origin(默认远程仓库名称),也可以是其他自定义的远程仓库别名。
  • <本地分支名>:要推送的本地分支名称(如 maindev)。
  • <远程分支名>:远程仓库的目标分支名称(可与本地分支名不同)。
2.3.2.1 推送本地分支到远程同名分支
git push origin main:main
  • 将本地 main 分支推送到远程 originmain 分支。
  • 如果远程分支不存在,Git 会自动创建它。

在这里插入图片描述

2.3.2.2 推送本地分支到远程不同名分支
git push origin feature-login:remote-feature
  • 将本地 feature-login 分支推送到远程 remote-feature 分支。
2.3.2.3 省略远程分支名(默认同名)
git push origin main
  • 等价于 git push origin main:main
2.3.2.4 删除远程分支
git push origin :remote-branch
  • 通过省略本地分支名(留空 : 左侧),推送一个“空分支”到远程,从而删除远程分支 remote-branch

实际操作:
我在GitCode里面新建了远程分支,名为dev。之后再本地的git bash拉取一次远程仓库。

在这里插入图片描述
此时我去查看远程仓库的dev分支,发现确实没有了。

2.3.2.5 强制推送(覆盖远程分支)
git push --force origin main:main
  • 使用 --force(或 -f)强制覆盖远程分支(谨慎使用!)。
2.3.2.6 设置默认推送

git push -u origin 分支名(绑定后可直接用 git push)

git push -u origin "main"

或者直接:

git push 

在这里插入图片描述

2.3.2.7 推送所有分支
  • 使用 --all 推送所有本地分支:
git push --all origin

2.3.3 查看关联的远程仓库

git remote -v

在这里插入图片描述

2.3.4 删除已关联的远程仓库

git remote remove origin

执行完成再次查看一下远程仓库。发现没有了,就成功了。
在这里插入图片描述

2.3.5 拉取远程仓库

git pull <远程仓库名> <远程分支名>

这⾥的远程仓库名,通常是origin,表⽰默认的远程仓库。⽽远程分⽀名,通常是main或master,表⽰远程仓库的分⽀。

git pull origin main

当然,很多时候我们会省略掉远程仓库和分⽀名,git pull会默认从你当前分⽀所关联的远程仓库和分⽀中拉取更新。

2.3.6 实际工作流示例

场景:将本地开发分支推送到远程仓库
  1. 查看本地分支和远程状态:

    git branch -v      # 查看本地分支
    git remote -v      # 查看远程仓库
    
  2. 推送本地分支到远程(假设远程分支名与本地相同):

    git push origin dev:dev
    
  3. 如果远程分支不存在:

    # 首次推送时需指定远程分支名
    git push --set-upstream origin dev:dev
    # 后续推送可简化为
    git push origin dev
    

    本地和远程都没有dev分支,我先在本地创建一个分支dev,之后推送到远程仓库,由于远程仓库也没有这个分支,所以使用这个命令 git push --set-upstream origin dev:dev

    在这里插入图片描述

  4. 如果推送失败(因远程有更新):

    git pull origin dev   # 先拉取远程变更
    git push origin dev   # 重新推送
    

本文结束,欢迎点赞、收藏、转发、关注!

http://www.dtcms.com/a/336107.html

相关文章:

  • 「数据获取」《中国文化文物与旅游统计年鉴》(1996-2024)(获取方式看绑定的资源)
  • 链式前向星、vector存图
  • Kafka_Broker_副本基本信息
  • 【FreeRTOS】信号量与互斥量
  • LeetCode热题100--104. 二叉树的最大深度--简单
  • 给纯小白的Python操作 PDF 笔记
  • 【牛客刷题】BM63 跳台阶:三种解法深度解析(递归/DP动态规划/记忆化搜索)
  • Baumer高防护相机如何通过YoloV8深度学习模型实现工作设备状态的检测识别(C#代码UI界面版)
  • Shell脚本-流程控制语句基本语法结构
  • Mutually aided uncertainty
  • 5G NR PDCCH之速率匹配
  • 【数据结构】堆和二叉树详解——上
  • 神经网络中的梯度概念
  • 【杂谈】-以质代量:谷歌主动学习范式重构AI训练逻辑
  • 把 AI 变成“气味翻译官”——基于微型电子鼻的低功耗 VOC 实时识别系统
  • 13、系统设计
  • 何为“低空经济”?
  • DeepSider:免费使用顶级大模型、全方位AI赋能的浏览器插件
  • gitee 流水线+docker-compose部署 nodejs服务+mysql+redis
  • Effective C++ 条款46:需要类型转换时请为模板定义非成员函数
  • tauri2项目WindowConfig配置中titleBarStyle样式区别,仅macOS有效
  • 如何在Windows系统中更改用户名(中文转英文全流程)
  • Deepseek一体机
  • 视觉图像界面设计【QT-creator高级编程 - 01】图像显如何保证跟随主窗口变化,且保留必要的设定窗口
  • MiracleVision-美图旗下AI视觉大模型
  • 2001-2024年中国冬小麦30米分辨率种植分布数据集
  • 【Luogu】每日一题——Day20. P4366 [Code+#4] 最短路 (图论)
  • SWE-bench:真实世界软件工程任务的“试金石”
  • 2025年- H97-Lc205--23.合并k个升序链表(链表、小根堆、优先队列)--Java版
  • 【Python练习】097. 编写一个函数,实现简单的版本控制工具