1)Git 到底是什么、为什么是这个样子?
Git 是什么
Git = 版本管理工具 。
它像"给你的项目拍快照的系统",每拍一次快照就是一次 commit。
-
代码改乱了?能回到某个快照
-
想知道你改了啥?Git 能对比差异
-
想把代码同步到 GitHub?Git 负责把快照推过去
GitHub 是什么
GitHub = 放 Git 仓库的远程网站 (云端仓库)。
Git 是工具,GitHub 是托管平台。
为什么有这些概念:working tree / add / commit / push?
你可以把它理解成"三个区域 + 一个远程":
-
工作区 (working tree):你正在编辑的文件夹(D:\computer\ultralytics)
-
暂存区 (staging area):你"选中准备拍照"的内容
-
本地仓库 (local repo):你电脑里保存的快照历史(commit 历史)
-
远程仓库 (remote, GitHub):网上的备份/协作仓库
对应的动作就是:
-
git add:把改动从工作区放到暂存区("选中要拍照的内容") -
git commit:把暂存区拍成快照("保存一个版本点") -
git push:把本地快照上传到 GitHub("同步到网上") -
git pull:把 GitHub 的新快照拉到本地("同步到本地")
.gitignore 为什么存在?
因为项目里很多东西不该进入版本库 (比如数据集、训练输出、权重、缓存)。
.gitignore 就是"黑名单规则",告诉 Git:这些不要跟踪。
第一次把项目放上github 上
git init # 在当前目录初始化一个新的 Git 仓库,生成 .git 目录,用于版本控制
git add . # 将当前目录下的所有文件(包括新建和修改的文件)加入暂存区(stage)
git commit -m "xxx" # 将暂存区中的内容提交到本地仓库,并附带提交说明 "xxx"
git remote add origin <你的仓库地址> # 将远程仓库地址添加为 origin,建立本地仓库与远程仓库的连接
git push -u origin main # 将本地 main 分支推送到远程 origin 仓库,并设置 upstream(以后可直接 git push)
每次改完代码的流程
git status #看看改了啥
git add . #把改动存入缓冲区
git commit -m "简短说明这次改了什么" #提交一个版本点
git push # 上传到github
git diff #想看看改动细节
git log --oneline --decorate --graph # 想看历史记录
git restore --staged . # 取消暂存,不影响文件内容
git clone <仓库地址> # 从github把项目拿到另外一台电脑