文章目录一、git pull git fetch git merge1. git fetch只下载不合并2. git merge合并3. git pull 上面两步自动一起做最直观的区别二、提交和提交并推送1. 提交Commit 只保存在你自己电脑上2. 提交并推送Commit Push 本地保存 同步到远程3. 一句话总结4. 你看到的“Commit and Push”按钮三、仓库私有化1、Private 到底有多“隐私”2、什么时候推荐用 Private你的情况正好符合3、上传到 Private 仓库的简单步骤给你现成命令四 .gitignore1. .gitignore 到底是干嘛的2. 为什么绝对不能把密码/密钥传到 GitHub3. 怎么防止密码/配置文件被提交第一步在项目根目录新建一个文件第二步把要忽略的东西写进去4. 最关键的知识点新手必懂✅ .gitignore 只对 **从未被提交过的文件** 生效5. 你现在的项目怎么做最安全直接照做五、main和分支1.除了 main你可以建无数个分支2. 新建分支时自带 main 的全部代码**新建分支 复制一份当前 main 的代码**3. 之后你在 dev 上改代码不会影响 main**分支 代码的平行世界**4. 最常用的分支操作你马上就能用六、 dev 分支合并回 main1、合并的本质2、最标准、最安全的合并流程直接照敲1先切回 main2保证 main 是最新的避免冲突3把 dev 合并到 main4推送到 GitHub让云端也更新3、如果出现冲突CONFLICT怎么办4、分支最常用 4 条命令你必须记住七、Git 和 SVN 的核心区别1. 最本质区别必懂**SVN集中式****Git分布式**2. 断网能不能工作最大区别3. 分支功能对比4. 安全性5. 现在企业用哪个6. 超级大白话对比最好记**SVN 就像只有一个U盘大家轮流用****Git 就像每人都有完整U盘副本****Git 是分布式本地有全部历史断网能用分支强大。****SVN 是集中式必须联网依赖中央服务器分支弱。****现在所有新项目、所有大厂全部用 Git**八、 Branches Tags1. 图里的信息2. 分支 vs 标签核心区别3. 最常用的标签命令你现在就能试4. 标签的两种类型简单了解九、Release Tag你现在的情况网页操作最简单命令行方式装了 GitHub CLI常见疑问一、git pull git fetch git merge一步到位拉取最新代码 自动合并到本地1. git fetch只下载不合并去 GitHub 把最新代码/版本信息下载到本地不会修改你当前写的代码只是“看看更新了啥”2. git merge合并把下载下来的最新代码合并到你当前的分支让你的本地变成最新版3. git pull 上面两步自动一起做git pull git fetch git merge最直观的区别命令作用是否改本地代码安全度git fetch只下载最新信息❌ 不改最安全git merge合并下载的代码✅ 改中等git pull下载 自动合并✅ 改日常用pull 自动拉取 合并fetch 只拉取不合并push 上传到 GitHub唯一能改云端的二、提交和提交并推送1. 提交Commit 只保存在你自己电脑上完整三步是gitadd.# 把改动“打包到暂存区”gitcommit-mxxx# 把暂存区的改动保存到**本地仓库**只在本地生成一条版本记录GitHub 上看不到别人也拉不到相当于写在自己笔记本上没发给别人2. 提交并推送Commit Push 本地保存 同步到远程就是gitadd.gitcommit-mxxxgitpush origin main# 把本地所有新提交上传到 GitHub既在本地记录版本也同步到远程仓库GitHub 立刻能看到别人能拉到你的代码相当于写完笔记 → 拍照发给团队3. 一句话总结git commit只在本地存快照不上传commit push本地存快照并且上传到远程GitHub4. 你看到的“Commit and Push”按钮IDEVSCode 等里那个按钮本质就是帮你一次性执行add → commit → push三、仓库私有化设为 Private 别人就看不到你自己的项目、不想公开强烈推荐 Private。1、Private 到底有多“隐私”只有你 你主动邀请的协作者才能看到、克隆、提交不会出现在搜索结果、你的公开主页上免费账号无限私有仓库每个仓库最多3 个协作者你自己不算传输、存储都是加密的安全性足够个人/普通项目用一句话Private 上锁的仓库钥匙只在你手里。2、什么时候推荐用 Private你的情况正好符合✅ 推荐 Private个人练手、课程作业、毕设、实验代码不想公开的半成品、乱糟糟的代码含敏感配置密钥、密码、数据库地址商业/竞赛/不想被抄袭的项目❌ 不推荐 Private想做开源、积累作品集、让别人看你代码能力需要多人协作3 人且不想付费你说“自己的项目、不想别人看到” →首选 Private非常推荐。3、上传到 Private 仓库的简单步骤给你现成命令GitHub 网页New repo → 选Private→ 不要初始化 README → Create本地PowerShellcdE:\0WHXY\keyan\versionFinally\handpose-virtualviewgitinitgitremoteaddorigin https://github.com/你的用户名/你的仓库名.gitgitadd.gitcommit-minit: 上传个人项目gitbranch-Mmaingitpush-uorigin main以后更新git add . git commit -m xxx git push安全提醒千万别把密码/密钥提交上去加到.gitignore四.gitignore1..gitignore到底是干嘛的是的它的作用就是让 Git 自动忽略某些文件/文件夹永远不被跟踪、不被提交、不被推送到 GitHub。你写什么进去Git 就假装看不见它。2. 为什么绝对不能把密码/密钥传到 GitHub因为一旦push上去就算你 later 删除了历史记录里还能找到GitHub 会自动扫描并报警密钥会立刻泄露你的服务器、数据库可能被盗用所以必须用 .gitignore 提前挡住3. 怎么防止密码/配置文件被提交第一步在项目根目录新建一个文件文件名就叫.gitignore注意前面有个点.第二步把要忽略的东西写进去例如# 密钥、配置文件 config.json secret.py password.txt .env # 数据集、大文件 data/ dataset/ # 系统垃圾 .DS_Store __pycache__/ *.pyc *.pyo *.pyd # 虚拟环境 venv/ env/ .venv/ # 日志、权重 logs/ checkpoints/ *.pth *.pt *.ckpt只要写进去git 就永远不会提交它们。4. 最关键的知识点新手必懂✅.gitignore只对从未被提交过的文件生效如果一个文件已经被 git add 或 commit 了再写进 .gitignore没用5. 你现在的项目怎么做最安全直接照做你现在是第一次上传还没提交任何敏感文件最安全直接在项目根目录创建.gitignore把这些写进去# Python 自动生成的文件 __pycache__/ *.py[cod] *.so # 虚拟环境 venv/ env/ .venv/ # 配置、密钥、环境变量 .env config*.json secret* key* password* # 数据集、大模型文件 data/ dataset/ weights/ checkpoints/ *.pth *.pt *.pkl *.h5 # 系统文件 .DS_Store Thumbs.db然后再执行gitadd.gitcommit-minitgitpush这样✅ 密码、密钥、数据集、大文件永远不会上传✅ GitHub 上看不到✅ 非常安全.gitignore Git 的黑名单写进去的文件永远不会被提交、不会被推送到 GitHub。五、main和分支1.除了 main你可以建无数个分支比如dev开发test测试feature/login登录功能wang小王的分支想建多少建多少互相不干扰。2. 新建分支时自带 main 的全部代码新建分支 复制一份当前 main 的代码比如你现在main里有a.pyb.pyREADME.md你执行gitbranch dev那么✅dev 分支里一开始和 main 一模一样✅ 所有文件、所有代码、所有历史版本完全相同3. 之后你在 dev 上改代码不会影响 main这就是分支最牛的地方在dev上写bug、乱写、测试 →main 完全不变在main上发布稳定版本 →dev 不受影响两个分支各自独立往前走。分支 代码的平行世界刚创建时和 main 完全一样后来修改只有部分代码不同互相隔离改一个不影响另一个4. 最常用的分支操作你马上就能用# 查看当前有哪些分支gitbranch# 新建一个叫 dev 的分支复制当前代码gitbranch dev# 切换到 dev 分支gitcheckout dev# 新建并直接切换进去最常用gitcheckout-bdev分支 复制一份当前代码让你随便改不影响主版本。刚建出来 和 main 一模一样改完之后 只有你改动的地方不一样六、 dev 分支合并回 main1、合并的本质把 dev 分支写的新代码 → 合并到 main 分支合并后main 会拥有 dev 的所有新代码dev 还在不会消失两个分支都保留2、最标准、最安全的合并流程直接照敲1先切回 maingitcheckout main2保证 main 是最新的避免冲突gitpull3把 dev 合并到 maingitmerge dev4推送到 GitHub让云端也更新gitpush现在main 分支已经拥有 dev 所有新代码了✅切回main → 拉最新 → 合dev → 推云端3、如果出现冲突CONFLICT怎么办冲突就是同一个文件main 和 dev 改了同一行解决方法超级简单打开报错的文件找到和之间的代码手动删掉不要的保留正确的保存然后gitadd.gitcommit-m解决冲突gitpush4、分支最常用 4 条命令你必须记住gitbranch# 看有哪些分支gitcheckout dev# 切换到 devgitcheckout-bdev# 新建并切换到 devgitmerge dev# 把 dev 合并到当前分支七、Git 和 SVN 的核心区别Git 分布式版本控制每个人电脑都是完整仓库SVN 集中式版本控制只有服务器一个中央仓库1. 最本质区别必懂SVN集中式只有中央服务器有完整代码你电脑上只有最新版本没有历史没网 → 不能提交、不能看历史、不能回退服务器挂了 →全团队瘫痪Git分布式每个人电脑都是一个完整仓库包含所有历史、所有分支、所有版本没网照样提交、回退、建分支、看历史服务器挂了 →不影响你本地开发2. 断网能不能工作最大区别SVN断网 啥也干不了Git断网 完全正常工作有网再 push 上去3. 分支功能对比SVN分支极慢、极麻烦、很少用Git分支秒建、秒切、超级轻量你刚才学的git checkout -b devSVN 要花几分钟Git 只要 0.1 秒4. 安全性SVN服务器硬盘坏了 → 代码全没Git每个人电脑都有完整备份 → 永远丢不了5. 现在企业用哪个99% 公司都用 GitGitHub、GitLab、Gitee、GitCode 全是 GitSVN 基本只在老项目、旧公司见到6. 超级大白话对比最好记SVN 就像只有一个U盘大家轮流用必须联网断网不能用坏了全完分支难用Git 就像每人都有完整U盘副本断网随便用提交都在本地服务器坏了不影响分支超级强Git 是分布式本地有全部历史断网能用分支强大。SVN 是集中式必须联网依赖中央服务器分支弱。现在所有新项目、所有大厂全部用 Git八、 Branches TagsTags标签就是给某个特定的提交版本打一个永久的“版本号”标记方便以后快速找到它和分支是完全不同的东西。1. 图里的信息2 Branches说明你仓库里有两个分支main和dev分支是动态的会随着提交不断往前走。0 Tags说明你还没有创建任何标签。2. 分支 vs 标签核心区别概念本质特点常见用途Branch分支可移动的指针随着你不断commit会一直向前移动开发、迭代、多人协作Tag标签固定的指针一旦创建永远指向同一个提交不会变标记发布版本比如v1.0、v2.1.3举个例子你在main分支上一直开发提交了几十次分支指针一直在往前跑。当你觉得代码稳定、可以发布v1.0版本时就给当前这个提交打一个标签v1.0。以后无论main分支怎么更新你都可以通过v1.0这个标签直接找到当时发布的那版代码。3. 最常用的标签命令你现在就能试# 给当前提交打一个版本标签比如 v1.0gittag v1.0# 查看所有标签gittag# 把标签推送到远程仓库gitpush origin v1.0推送成功后你的 GitHub 仓库里就会显示1 Tag了。4. 标签的两种类型简单了解轻量标签Lightweight就是一个简单的指针只存提交哈希值适合个人用。gittag v1.0附注标签Annotated会包含打标签的人、时间、备注信息更正式适合公开发布版本。gittag-av1.0-m正式发布版本1.0九、Release TagRelease 就是专门基于 Tag 做的“正式发布页”。先把关系讲清楚Tagv1.0Git 里的一个“书签”指向某次提交只有版本号和一句说明。ReleaseGitHub/GitLab 上的发布页面必须绑定一个 Tag可以写详细更新日志、上传安装包/压缩包、标为“正式版/预发布”。一句话Tag 是 Git 的概念Release 是平台GitHub给 Tag 加的“发布包装”。你现在的情况你已经gittag v1.0gitpush origin v1.0→ 远程已经有v1.0这个 tag 了。接下来直接在 GitHub 把它变成 Release就行。网页操作最简单打开你的仓库主页点右边Releases→Draft a new releaseChoose a tag选v1.0你刚推的填Release title比如v1.0 正式版Describe this release更新日志修复了啥、加了啥可选上传 zip/安装包别人可以直接下载点Publish release→ 完事现在别人能看到版本号 v1.0详细更新日志可下载的包命令行方式装了 GitHub CLIgh release create v1.0--titlev1.0 正式版--notes修复xx bug新增xx功能常见疑问Q必须先有 Tag 才能建 ReleaseA网页上可以“建 Release 同时自动建 Tag”但规范流程是先打 Tag 再建 Release。Q一个 Tag 能对应多个 Release 吗A不能一个 Tag 只能有一个 Release。Q删了 Tag 会怎样A对应的 Release 也会被删掉。