Git笔记

Git常用指令

一、 新手村:建库与克隆

  • git init
    • 大白话:在这个文件夹里开启游戏存档功能。(把一个普通文件夹变成 Git 仓库)
  • git clone <网址>
    • 大白话:从云端(GitHub等)把别人的游戏存档原封不动地下载到我的电脑里。

二、 日常存档三步曲

  • 第一步:检查状态
    git status
    • 大白话:看看我今天改了哪些文件?哪些还没存档?(标红的说明还没准备好,标绿的说明准备好存档了)。
  • 第二步:放入暂存区(加入购物车)
    git add .
    • 大白话:把当前目录下所有修改过的文件,统统放进暂存区,准备存档。 (注意 . 代表所有文件,也可以换成具体文件名)。
  • 第三步:正式存档(写日记)
    git commit -m "新增了水下机器人的阻力参数"
    • 大白话:正式生成一个游戏存档!-m 后面带的引号里,是你给这次存档写的“备注名”,方便以后回滚的时候知道这次干了啥。

三、 时空穿梭(后悔药)

  • git log
    • 大白话:查看历史存档记录。能看到谁在什么时间提交了什么代码,以及每次存档的唯一串号(哈希值)。
  • git reset --hard <存档串号>
    • 大白话:时光倒流!直接把代码恢复到那个特定的历史存档状态。(警告:这个操作很危险,时光倒流后,未来的代码就没了!)

四、 联机对战(与云端交互)

  • git push origin master (或者 main)
    • 大白话:把我在本地做好的游戏存档,**上传(推)**到云端服务器。让队友也能看到。
  • git pull origin master (或者 main)
    • 大白话:把队友在云端更新的最新存档,**下载(拉)**到我的电脑里,并和我的代码合并。每次写代码前最好先执行一下,防止冲突。

五、 平行宇宙(分支管理)

  • git branch
    • 大白话:查看当前有几个平行宇宙(分支)。打星号 * 的是你现在所在的宇宙。
  • git branch -M master
    • 大白话:强制把当前分支的名字改成 master
  • git checkout -b dev (较新版本的Git推荐用 git switch -c dev)
    • 大白话:创建一个名叫 dev 的新平行宇宙,并立马穿越过去。在这个宇宙里乱改代码,绝对不会影响原来 master 宇宙里的主线剧情。非常适合用来测试新算法。

Git 提示“干净的工作区”但文件未提交

  • 误解:“干净”不代表没文件,而是代表所有文件都已提交或被忽略。
  • 常见原因 (ROS开发)仓库套仓库 (Nested Git)
    • 如果在 src 下的子文件夹里还有一个 .git 文件夹,外层的 Git 会自动忽略该子文件夹的所有内容。
  • 解决:删除子目录下的 .git 文件夹:rm -rf src/my_pkg/.git

为什么 GitHub 上看不到 README.md

  • 原因:GitHub 默认只渲染仓库根目录下的 README.md。
  • 错误位置:如果把 README 放在 src/ 或其他子文件夹里,首页是不会显示的。
  • 解决:将 README.md 移动到仓库的最外层目录。

如何强制覆盖 GitHub 历史 (清除旧存档)

  • 场景:想要彻底删除所有历史提交,让仓库变成全新的“第一次提交”状态。
  • 步骤
    1. 删除本地历史:rm -rf .git
    2. 重新初始化:git init -> git add . -> git commit -m "Init"
    3. 强制推送:git push -f origin main (注意 -f 参数是强制覆盖的关键)。

Git 中 origin 的含义

  • 定义origin 是远程仓库地址(URL)的别名
  • 作用:代替输入冗长的 https://github.com/user/repo.git
  • 操作
    • 查看:git remote -v
    • 修改:git remote set-url origin <新地址>
    • 删除:git remote remove origin