Git笔记

Git笔记
坷解决git clone很慢问题
如果电脑上开着Clash等科学上网工具,你要知道:Linux的终端默认是不会走代理的。即使浏览器已经可以访问国外的网站,但是终端里是没有连接代理的。此时想要git clone一个项目,速度会依旧很慢。那么如何给终端接上代理?
假设你的代理软件本地端口是6478,你需要在终端依次输入以下两行代码声明代理:
1 | exporthttp_proxy=http://127.0.0.1:6478 |
那么新的问题来了:如何查看代理软件本地端口?
- 打开代理软件,在设置里面寻找代理端口,一般会放在更多设置里。
- 懒得找,那么对号入座。Clash系列(Clash for Windows,Clash Verge等):默认通常是7890(HTTP/Socks5混合端口)。V2Ray/Xray系列(v2rayN,Qv2ray等):默认通常是10808(Socks5)和10809(HTTP)。Shadowsocks(小飞机):默认通常是1080。
- 不是上述三个系列的代理软件,那么请看1。
注意:这个代理设置是“临时生效”的。它只对当前这个终端窗口起作用,绝对不会弄乱系统其他的网络设置。如果你关掉了这个终端或者新开了一个终端,需要重新执行这两行才能再次走代理。
如果想要在终端里拔掉节点,依次输入:
1 | unset http_proxy |
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 历史 (清除旧存档)
- 场景:想要彻底删除所有历史提交,让仓库变成全新的“第一次提交”状态。
- 步骤:
- 删除本地历史:
rm -rf .git。 - 重新初始化:
git init->git add .->git commit -m "Init"。 - 强制推送:
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
- 查看:
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 commit -am "巴拉巴拉"- 适用于如果文件之前已经被 Git 追踪过,你可以加上 -a 参数直接打包提交:这种方式不会提交那个显示为 Untracked files 的 .vscode/ 文件夹






