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

【Git 基础】01——代码是怎么被追踪的

​ 你可能遇到过这样的场景:改了一段代码,跑起来不对,想退回去,但上一个版本已经被覆盖了。或者和别人合作,两个人同时改了同一个文件,最后不知道该保留谁的。

Git就是为解决这类问题而生的。

一、git 是什么

​ git 是一个版本控制系统,它做的事情可以概括为一句话:追踪文件的变化历史

​ 每次你告诉 git “记住现在的状态”,它就把当前所有文件的快照保存下来。之后你可以随时回到任意一个历史快照,也可以看两个版本之间改了什么。

​ 更重要的是,git 让多人协作变得可行,每个人在自己的副本上工作,git 负责把改动安全地合并在一起。

​ 你的代码放在 GitHub 上,git 就是你和 GitHub 之间的"传输协议"。在本地用 git 管理版本,用git push把代码同步到 GitHub 上。

二、三个核心概念

​ 先搞清楚三个概念,后面的命令才有意义。

2.1 仓库(repository)

​ 仓库就是 git 管理的一个项目目录。运行git init之后,当前目录就变成了一个仓库,git 会在里面创建一个隐藏的.git文件夹,所有的版本历史都存在那里。

​ 你本地有一份仓库,GitHub 上有一份仓库,两者可以互相同步。

2.2 提交(commit)

​ commit 是版本历史里的一个节点,你手动告诉 git “把现在的状态记下来”,就生成了一个 commit。

  • 每个 commit包含:
    • 一个唯一的 ID(40 位哈希,通常用前 7 位表示,如a3f9b12
    • 你写的提交说明(message)
    • 当时所有文件的快照

​ commit 不是自动产生的,必须你主动触发。这和"自动保存"不同,git 不会帮你保存,它只记录你明确提交的状态。

2.3 分支(branch)

​ 分支是一条独立的开发线。默认只有一条分支(通常叫mainmaster),你可以随时创建新分支,在上面做实验,不影响主线。

​ 一个直觉类比:main 是你的"稳定存档",新分支是"实验存档",随时可以切换,做坏了直接删掉,稳定存档不受影响。

三、基础操作流程

​ 实际使用时,80% 的时间只会用到这几个命令。按顺序来看。

3.1 初始化仓库

gitinit

​ 在当前目录创建一个 git 仓库。只需要执行一次。

3.2 查看状态

gitstatus

这是最常用的命令,随时可以执行,告诉你当前有哪些文件改了、哪些还没提交。养成习惯,操作前先git status看一眼。

​ 输出大概长这样:

Changes not stagedforcommit: modified: app.py Untracked files: requirements.txt
  • modified:已有的文件被改了,但还没告诉 git
  • Untracked:新文件,git 还不知道它的存在

3.3 暂存:git add

gitaddapp.py# 暂存单个文件gitadd.# 暂存当前目录所有改动

git add的作用不是"保存",而是选择哪些改动要放进下一次提交,这一步叫"暂存"(staging)。

为什么需要这一步?

因为你可能同时改了多个文件,但只想提交其中部分。git add让你精确控制提交内容。

3.4 提交:git commit

gitcommit-m"add login function"

​ 把暂存区的内容正式记录为一个 commit。-m后面是提交说明,写清楚"做了什么",方便将来查看历史。

​ 工作区 → 暂存区 → 仓库,这三步是 git 最核心的工作流。add是"选好要提交的",commit才是"真正记录下来"。

3.5 查看历史:git log

gitlog--oneline

​ 列出所有历史 commit,--oneline让每条记录只占一行,看起来更清晰:

a3f9b12 add login function 7c2e841 init project structure

​ 左边是 commit ID,右边是你写的提交说明。

3.6 推送到 GitHub:git push

​ 本地有了 commit,推到 GitHub:

gitpush origin main

origin是远程仓库的别名(默认),main是要推的分支。

​ 第一次推送需要先关联远程仓库:

gitremoteaddorigin https://github.com/你的用户名/仓库名.gitgitpush-uorigin main# -u 建立追踪关系,以后直接 git push 就行

3.7 拉取最新代码:git pull

​ 别人推了新代码,你想同步到本地:

gitpull

git pull=git fetch(拉取远程改动)+git merge(合并到当前分支)。多人协作时,改代码前先git pull是好习惯。

四、完整操作一遍

​ 把上面的命令串起来,走一遍完整流程。

4.1 在项目目录初始化仓库

gitinitgitbranch-Mmain# 把默认分支改名为 main

4.2 将改动暂存

gitadd.

4.3 查看当前状态

gitstatus

4.4 提交

gitcommit-m"init: add project files"

4.5 关联Github仓库(只需一次)

gitremoteaddorigin https://github.com/你的用户名/仓库名.git

4.6 推送

gitpush origin main

​ 之后每次改完代码,重复第 2-4 步,再git push同步到 GitHub。

五、常见问题

5.1git add .git add 文件名用哪个?

​ 一般用git add .更省事,但要注意别把不该提交的文件(比如.env、本地配置)也加进去。可以创建.gitignore文件,把不想追踪的文件写进去,git 会自动忽略它们。

5.2commit message 怎么写?

​ 格式约定:类型: 简短说明,比如:

  • feat: add user login

  • fix: correct password validation

  • init: project setup

    不需要写"修改了第 23 行",message 说的是为什么改改了什么功能

5.3推送时要输入密码?

  • GitHub 不再支持密码认证
  • 用 Personal Access Token(PAT)或 SSH key 替代
  • 推荐配置 SSH,一劳永逸

六、总结

​ 你现在掌握了 git 的核心工作流:init → add → commit → push,以及随时查看状态的statuslog

​ 这套流程够你完成大部分独立项目的版本管理。下一个要理解的是分支,当你需要和别人协作,或者想在不影响主线的情况下尝试新功能时,分支是核心工具。

http://www.jsqmd.com/news/601831/

相关文章:

  • 告别臃肿控制中心:轻量级硬件控制工具G-Helper全面评测
  • 16大垂直行业不同规模企业智能客服选购指南,精准匹配预算与需求
  • 终极BepInEx完整指南:3步让Unity游戏支持模组插件
  • 效率提升秘籍:基于快马AI打造团队专属的颜色代码与CSS变量生成器
  • OpenDataLab MinerU实战:如何用AI快速整理PPT内容与报告
  • 2026浙江乔治白公司概况,选购其服装定制服务性价比高吗 - 工业设备
  • 忍者像素绘卷惊艳作品:‘八门遁甲’体术连招像素GIF动态生成
  • 告别Docker Hub!手把手教你用本地ISO镜像制作CentOS 6/7专属基础镜像(附完整脚本)
  • 基于FPGA的FOC电流环实现(Verilog编程,含SVPWM算法,PI控制器,ADC采样...
  • 基于Simulink的输出阻抗重塑提升负载瞬态性能
  • 自感类型学:一种实然的内在观察框架 副篇:自感与生生:一种大儒家观的实然工夫论
  • 高速SAR ADC DAC阵列优化新视角:开关时序与功耗的协同设计
  • G-Helper轻量级工具:华硕设备性能调校与自定义配置全指南
  • 别再让map组件挡住tabbar了!手把手教你用uniapp的subNVue实现底部悬浮窗
  • 我的第一个量化策略翻车实录:用线性回归找‘低估股’,为什么在小盘股上完全失灵?
  • Asian Beauty Z-Image Turbo镜像免配置:无需conda/pip,纯容器化交付
  • 手把手教你用MQTT.fx验证TOTOLink路由器漏洞(附PoC脚本)
  • WechatSogou:企业级微信公众号数据采集全方案
  • 收藏 | 21个通俗易懂的大模型核心技术,小白也能看懂AI进化脉络!
  • 2026年信誉好的职业装定制专业公司大盘点,费用怎么收取? - 工业品牌热点
  • 阿里达摩院mT5中文增强镜像部署指南:支持国密SM4加密的文本传输安全方案
  • d2s-editor:让暗黑破坏神2存档修改变得简单安全
  • 如何高效优化Windows 11系统:Win11Debloat完整指南
  • Unity全局光照(GI)完全指南:从环境光设置到实时/烘焙混合使用技巧
  • 避开这些坑!Kaggle竞赛入门必备的5个Pandas技巧
  • lite-avatar形象库效果展示:同一形象在不同音色TTS驱动下的口型表现对比
  • 2026采购行业转型,CPPM持证者如何提升职场竞争力? - 众智商学院官方
  • Unity A* Pathfinding 插件实战:从零搭建智能寻路系统
  • 第五篇:Tabnine:企业隐私守护者——本地部署的隐形补全高手,合规场景下的零泄露利器
  • translategemma-27b-it真实体验:实测翻译中文菜单,效果惊艳堪比专业译员