Gitit
Git 核心作用与常用命令(精简版)
一、核心作用
Git 是本地代码版本管理工具,核心价值:
- 保存代码所有版本,随时回溯;
- 可设置分支并行开发,互不干扰;
二、必备基础操作(按流程)
1. 首次配置(仅需 1 次)
git config --global user.name "你的昵称" # 设置用户名(标记修改者)
git config --global user.email "任意邮箱" # 设置邮箱(无需验证)
2. 初始化版本库(给代码文件夹开启管理)
cd 进入目标文件夹
git init # 初始化本地仓库
3. 更新版本(核心)
git add . # 暂存所有修改的文件(推荐)
git commit -m "v1版本:月度NDVI导出”)
4. 版本回溯 / 切换
git log # 查看所有版本
git checkout 版本号 # 临时切换到指定版本
git checkout master # 切回最新版本
5. 新版本分支
原则1:永远在分支上修改,不直接操作历史版本,保护原版本线不混乱。
git branch # 查看所有分支
git checkout -b 分支名 # 创建并切换到新分支
git merge 分支名 # 把指定分支代码合并到当前分支(如切到master后merge v3_land)
原则2:Git 的分支 / 版本体系不是 “错一个全错” 的线性链条,而是可以单独修正源头版本,再把修正同步到后续分支。——核心的代码文件不要改变名字,便于修正同步——merge 是「把分支 A 的修改记录,整合到分支 B」,优先保留所有有效修改,只有改到同一行时才需要你手动决策,核心是 “整合” 而非 “覆盖”。

6. 修改&恢复行为
git是很保守的工具,改变文件会严格记录:使用git status。
git commit之前,一定要确保add记录修改(删除和新增)。
如果确认要删除,则git add该文件(撤销确认行为,使用git restore --staged);如果要恢复文件本身,则git restore。
![]()

git checkout HEAD = # HEAD代表当前分支的最新版本,直接从版本库恢复文件到工作区
恢复历史删除文件:只要你commit过,就可以恢复
git log --stat

可以选择恢复任意一个版本的文件
![]()
或者直接恢复,最新版本前一个版本的文件
![]()
查看现有分支:①第一版-第二版-修改了-master(主线);②第一版-v3海洋;③第一版-v3土地利用-改文件名-删除&合并修改了-删咯;④第一版-修正第一版-v1_fix-与master合并

——————————————————————————————————————————
github
——————————————————————————————————————————
你的理解核心是对的!GitHub 首先是 Git 仓库的「云备份」,但它的功能远不止备份 —— 是「云端 Git 仓库 + 协作平台 + 代码托管中心」的结合体。我用 “本地 Git vs GitHub” 的对比,把 GitHub 的核心价值讲透:
一、先肯定:GitHub 最基础的作用就是「云备份」
本地 Git 仓库只存在于你的电脑里:
- 电脑坏了 / 丢了 → 所有代码和版本记录全丢;
- 只能自己单机操作,没法和同事 / 合作者共享代码。
把本地仓库推送到 GitHub 后:✅ 代码和所有 commit 版本记录都存在云端,永不丢失;✅ 随时能从 GitHub 拉取仓库到新电脑,恢复所有历史版本;这就是最核心的「云备份」价值,也是新手用 GitHub 的首要目的。
二、GitHub 远超 “云备份” 的核心功能(新手必用)
| 功能 | 作用(对比本地 Git) | 新手实操场景 |
|---|---|---|
| 远程仓库 | 本地 Git 的 “云端镜像” | 执行 git push 把本地代码推到 GitHub;git pull 拉取云端最新代码 |
| 多人协作 | 多个人修改同一个仓库,GitHub 自动处理分支合并 | 和同事分工开发:你改 v3_land,他改 v3_ocean,最终在 GitHub 合并到 master |
| Pull Request (PR) | 合并分支前 “审核代码”,避免直接改乱主分支 | 你改完 v1_fix 后提 PR,同事确认修改没问题,再合并到 master |
| Issues/Projects | 管理需求 / BUG,跟踪开发进度 | 记录 “NDVI 公式分母为 0” 的 BUG,标记 “已修复”,关联对应的 commit |
| Pages/GitHub Actions | 部署代码 / 自动化测试 | 把 NDVI 可视化结果部署成网页,或提交代码后自动检查语法错误 |
三、本地 Git ↔ GitHub 的核心操作(新手入门必学)
1. github上创建一个仓库,然后连接到本地

git remote add origin git@github.com:stanlyyp/20260311.git
2. 制作仓库的锁和钥匙
首先看下本地有没有钥匙:
$ ls -la ~/.ssh/
ls: cannot access '/c/Users/86152/.ssh/': No such file or directory
① 生成ed25519类型的钥匙:ssh-keygen -t ed25519 -C ”1邮箱“,yes和enter
查看钥匙:cat ~/.ssh/id_ed25519.pub
② 根据钥匙制作锁头

③ 用锁头开门
ssh -T git@github.com

④ 把物资送到仓库

四、关于合作管理仓库(共同开发)
核心要点,记这 3 条就够
- 自己的仓库不想分享 → 公钥只自己用,不加任何 Collaborators;
- 想分享单个仓库 → 用「Collaborators」加权限,不是加 SSH keys;
- SSH keys 绝不分享。SSH 密钥是 “账号级别的登录凭证”,Collaborators 是 “仓库级别的权限开关”—— 你要控制单个仓库的权限,就用 Collaborators,绝对不会影响你其他仓库的安全~
一、关键纠正:SSH keys vs 仓库协作权限(核心避坑)
你记混的点就在这 —— 这是两个完全不同的东西:
| 操作 | 权限范围 | 适用场景 |
|---|---|---|
| 把对方公钥加到「你的 GitHub 账号 → SSH and GPG keys」 | 对方能操作你账号下所有仓库(看 / 改 / 删都可以) | 仅自己多台电脑登录(比如办公本 + 家里本) |
| 给对方加「单个仓库 → Collaborators 权限」 | 对方只能操作这一个仓库,看不到你其他仓库 | 多人协作单个项目(核心!你要的就是这个) |
二、实操:只让对方操作你指定的一个仓库(分步走,新手友好)
步骤 1:让小明准备好他的 GitHub 账号(不用给你任何密钥)
小明只需要有自己的 GitHub 账号即可,不用生成 SSH 密钥(他自己的密钥是用来登录他自己账号的,和你无关)。
步骤 2:你给小明加「单个仓库的协作权限」(核心操作)
- 打开你的 GitHub 仓库页面(比如
https://github.com/你的账号/ndvi-illinois); - 点击仓库页面的「Settings」(设置)→ 左侧选「Collaborators and teams」;
- 点击「Add people」,输入小明的 GitHub 账号 / 邮箱,点击「Add collaborator」;
- 选择权限(新手选「Write」即可):
- Read:只能看,不能改;
- Write:能改代码、推送分支(适合协作);
- Maintain/Admin:慎用(能删仓库、改权限);
- 小明会收到邮件邀请,他点击「Accept」(接受)后,就有这个仓库的操作权限了。
步骤 3:小明怎么操作你的仓库(他的视角)
- 小明先把你的仓库克隆到他电脑:
git clone git@github.com:你的账号/ndvi-illinois.git # 用SSH,或HTTPS都可以 - 他在本地改代码、commit 后,直接推送:
✅ 他只能推送到这个仓库,看不到你账号下的其他仓库(比如git pushweather-datacrop-analysis等)。 -
———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————正确的git代码管理方式—————
完全正确! 🎯 你终于抓住了精髓!
✅ 你的理解总结:
master ← "最终成果" (长期稳定)
↑
develop ← "集成测试场" (短期,用来组合多个 feature)
↑
feature/* ← "功能开发 + 快速试错" (中期,失败可丢弃)
实际操作流:
- 新功能开发 →
feature/new-feature分支上直接试错验证 - 功能完成了 → merge →
develop看看和其他功能能不能配合 - 全部 OK 了 → merge →
master(吸收成果) - 失败了 → delete branch,从头再来(不影响主线)
🎓 给你个完整的科研 Git 流程模板:
# === 开始一天工作 ===
git checkout master
git pull origin master
# === 决定今天要做什么 ===
git checkout -b feature/attention-mechanism # 专注一个方向
# === 在这个分支上疯狂折腾 ===
python train.py --new-attention
# ...实验成功!...
# ...或者实验失败了,换个参数再试...
# === 成功了 ===
git add .
git commit -m "feat: 添加注意力机制模块"
git checkout master
git merge feature/attention-mechanism
git push origin master
# === 要整合多个功能?===
git checkout develop
git merge feature/land-model
git merge feature/ocean-data
# 在 develop 上跑整体测试...
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)