diff --git a/notes/git/assets/基础使用/a30a9158772f0d90f1489d0549c82ea8.png b/notes/git/assets/基础使用/a30a9158772f0d90f1489d0549c82ea8.png new file mode 100644 index 00000000..a6902e6a Binary files /dev/null and b/notes/git/assets/基础使用/a30a9158772f0d90f1489d0549c82ea8.png differ diff --git a/notes/git/assets/基础使用/e52275e4370605057995993c4931d483.png b/notes/git/assets/基础使用/e52275e4370605057995993c4931d483.png new file mode 100644 index 00000000..74dcee54 Binary files /dev/null and b/notes/git/assets/基础使用/e52275e4370605057995993c4931d483.png differ diff --git a/notes/git/基础使用.md b/notes/git/基础使用.md new file mode 100644 index 00000000..a8c13285 --- /dev/null +++ b/notes/git/基础使用.md @@ -0,0 +1,450 @@ +# 1 基础流程 + +## 1.1 克隆仓库:`git clone` + +```bash +git clone <远程仓库地址> +``` + + + +## 1.2 添加修改:`git add` + +将修改的文件添加到 **暂存区**,准备提交: + +```bash +git add <文件名> # 添加指定文件 +git add . # 添加当前目录下所有修改文件 +``` + + + +## 1.3 提交修改:`git commit` + +将暂存区内容提交到本地仓库: + +```bash +git commit -m "提交说明" +``` + +示例: + +```bash +git commit -m "修复首页按钮样式" +``` + + + +## 1.4 拉取远程更新:`git pull` + +获取远程仓库最新内容并合并到本地: + +```bash +git pull origin <分支名> +``` + +示例: + +```bash +git pull origin master +``` + +> 💡 在多人协作时,最好先 `git pull` 再修改,减少冲突。 + + + +## 1.5 推送到远程仓库:`git push` + +将本地提交上传到远程仓库: + +```bash +git push origin <分支名> +``` + +示例: + +```bash +git push origin master +``` + +> ✅ `origin` 是远程仓库默认名称,`master` 是分支名。 + + + +## 1.6 简单流程总结 + +```bash +# 第一次获取仓库 +git clone + +# 修改代码 +git add . +git commit -m "说明" + +# 上传修改 +git push origin master + +# 更新最新远程内容 +git pull origin master +``` + + + +## 1.7 创建仓库并推送到远程 + +```bash +# 初始化git仓库 +git init + +git add README.md + +git commit -m "first commit" + +# 将当前本地 Git 仓库关联到一个远程仓库地址,并命名为 origin +git remote add origin http://admin@192.168.1.189:8443/r/test.git + +git push -u origin master +``` + + + +# 2 git常用命令流程图 + +![img](./assets/%E5%9F%BA%E7%A1%80%E4%BD%BF%E7%94%A8/a30a9158772f0d90f1489d0549c82ea8.png) + + + +# 3 git命令速查表 + +![在这里插入图片描述](./assets/%E5%9F%BA%E7%A1%80%E4%BD%BF%E7%94%A8/e52275e4370605057995993c4931d483.png) + + + +# 4 常见问题 + +## 4.1 push之前未pull + +报错信息: + +```bash +D:\code\test\test1>git push origin master +To http://192.168.1.189:8443/r/test.git + ! [rejected] master -> master (fetch first) +error: failed to push some refs to 'http://192.168.1.189:8443/r/test.git' +hint: Updates were rejected because the remote contains work that you do not +hint: have locally. This is usually caused by another repository pushing to +hint: the same ref. If you want to integrate the remote changes, use +hint: 'git pull' before pushing again. +hint: See the 'Note about fast-forwards' in 'git push --help' for details. +``` + +解决方法: + +```bash +# 先拉取 +git pull +# 后推送 +git push origin master +``` + +**注意:** 不要强推,可能覆盖他人修改,一般用不到。 + +```bash +git push -f origin master +``` + + + +## 4.2 合并冲突(修改同一文件) + +当 A 和 B 同时修改了同一文件的时候,本地文件和远程文件发生了冲突。Git 无法自动合并,需要你手动解决冲突。 + +例如: + +```bash +CONFLICT (content): Merge conflict in a.txt +Automatic merge failed; fix conflicts and then commit the result. +``` + +意思是: + +- Git 在合并文件 `a.txt` 时,发现本地和远程对同一部分代码进行了修改; +- 无法判断以哪一方为准,自动合并失败; +- 需要你手动处理这个冲突。 + +解决方案: + +1. 打开冲突的 `a.txt` 文件,查看里面的内容: + +``` +<<<<<<< HEAD +12 # 这里是 A 修改的 +======= +1 # 这里是 B 修改的 +2 +>>>>>>> 6fe1e2d97eae79e0c5080ddea4bdef658841486d +``` + +2. 手动修改内容,保留需要的部分。例如: + +``` +12 +``` + +3. 添加修改后的文件: + +```bash +git add a.txt + +git commit -m "解决 a.txt 冲突" + +git push origin master +``` + +## 4.3 fatal: not a git repository + +报错: + +```bash +fatal: not a git repository (or any of the parent directories): .git +``` + +原因:你当前所在的目录**不是一个 Git 仓库**,也没有执行 `git init` 或 `git clone`。 + +解决方法: + +```bash +# 初始化仓库 +git init +# 或者你在项目目录外部,cd 回正确的目录 +cd your-project-folder +``` + +## 4.4 修改文件但 git status 显示未修改 + +可能的原因: + +- 你改的是换行符(LF/CRLF)但内容没变; +- 编辑器保存规则设置导致未检测到真实修改; +- 文件编码问题或隐藏字符。 + +解决方法: + +- 用 `git diff` 检查是否真的修改了; +- 也可以尝试先改点内容,再恢复,重新保存。 + +## 4.5 误删文件 + +### 4.5.1 文件误删并已 add + +误删了一个文件(比如 `b.txt`),然后执行了: + +```bash +git add a.txt +``` + +- 这时候 Git **把删除操作加入暂存区**,等待 commit。 +- 文件还没有被 commit,但已经从工作区和暂存区记录为“删除”。 + + + +**查看哪些文件被误删** + +```bash +git status +``` + +示例输出 + +```bash +Changes to be committed: + (use "git restore --staged ..." to unstage) + new file: a.txt + +Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + deleted: a.txt +``` + + + +**恢复文件** + +这会把文件从暂存区移除,但 **不会恢复工作区文件**。 + +```bash +git restore --staged a.txt +``` + +这会把文件从最后一次 commit 的版本恢复到工作区。 + +```bash +git restore a.txt +``` + +或者可以循环恢复多个误删文件: + +``` +git restore --staged . +git restore . +``` + +> 🔹 `git restore .` 会把所有误删且未 commit 的文件恢复。 + +### 4.5.2 文件已 commit,误删未 add + +场景说明 + +- 文件 **已经被 Git commit**(也就是之前已经被保存到版本历史中) +- 你在工作区 **误删了该文件** +- **还没有执行 `git add`** + +> 这时候 Git 知道文件原本存在,但工作区已经缺失。 + + + +**查看被误删的文件** + +```bash +git status +``` + +示例输出: + +```bash +Changes not staged for commit: + (use "git add/rm ..." to update what will be committed) + deleted: a.txt +``` + +> 🔹 `deleted: a.txt` 就是被误删的文件。 + +**恢复误删文件(未 add)** + +```bash +git restore a.txt +``` + +> 这会从 **最近一次 commit** 恢复文件到工作区。 + + + +**检查文件是否恢复成功** + +``` + +git status +``` + +- 文件会出现在工作区 +- `git status` 不再显示 `deleted` + + + +# 分支操作 + +## 本地创建分支 + +```bash +git branch test +``` + + + +## 查看分支 + +命令: + +```bash +git branch # 查看本地分支 +git branch -r # 查看远程分支 +git branch -a # 查看本地 + 远程分支 +``` + +示例输入: + +```bash + master +* test +================================================= +origin/HEAD -> origin/master +origin/master +origin/test +================================================= + master +* test + remotes/origin/HEAD -> origin/master + remotes/origin/master + remotes/origin/test +``` + + + +## 切换分支 + +命令: + +```bash +git checkout test +``` + +示例输入: + +```bash +Switched to branch 'test' +``` + +## 推送分支到远程 + +假设本地分支名为 `test`,远程仓库名为 `origin`: + +```bash +git push -u origin test +``` + +解释: + +- `origin` → 远程仓库 +- `feature/login` → 分支名 +- `-u` → 设置 **上游分支**(tracking branch),即本地分支会自动跟踪远程分支 +- 之后可以直接 `git pull` 或 `git push`,Git 会知道对应的远程分支 + + + +## 拉取分支 + +命令: + +```bash +git checkout -b test origin/test +``` + +这将: + +1. 从远程获取 `test` 分支; +2. 在本地创建一个同名分支 `test` 并切换过去; +3. 本地分支会追踪远程的 `origin/test` 分支。 + + + +## 合并分支 + +```bash +# 切换到 master 分支 +git checkout master + +# 更新 master 分支(可选,确保是最新的) +git pull origin master + +# 合并 test 分支到 master +git merge test + +# 如果有冲突,解决冲突后: +git add . +git commit + +# 推送到远程仓库 +git push origin master +``` + diff --git a/notes/前端开发/pnpm/assets/pnpm依赖安装失败/6a073d02f8b273ff5662e61b84205b76.png b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/6a073d02f8b273ff5662e61b84205b76.png new file mode 100644 index 00000000..bfa04df1 Binary files /dev/null and b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/6a073d02f8b273ff5662e61b84205b76.png differ diff --git a/notes/前端开发/pnpm/assets/pnpm依赖安装失败/6c3a3b402b47e6e5998e6239da67188a-1754458316963-17.png b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/6c3a3b402b47e6e5998e6239da67188a-1754458316963-17.png new file mode 100644 index 00000000..8db14c3e Binary files /dev/null and b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/6c3a3b402b47e6e5998e6239da67188a-1754458316963-17.png differ diff --git a/notes/前端开发/pnpm/assets/pnpm依赖安装失败/6c3a3b402b47e6e5998e6239da67188a.png b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/6c3a3b402b47e6e5998e6239da67188a.png new file mode 100644 index 00000000..8db14c3e Binary files /dev/null and b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/6c3a3b402b47e6e5998e6239da67188a.png differ diff --git a/notes/前端开发/pnpm/assets/pnpm依赖安装失败/94964db230daf6e6a349cee3652d90f7.png b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/94964db230daf6e6a349cee3652d90f7.png new file mode 100644 index 00000000..047dc57f Binary files /dev/null and b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/94964db230daf6e6a349cee3652d90f7.png differ diff --git a/notes/前端开发/pnpm/assets/pnpm依赖安装失败/a56241f28b0f24d39eca14fa0193e348-1754458408503-20.png b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/a56241f28b0f24d39eca14fa0193e348-1754458408503-20.png new file mode 100644 index 00000000..128e6d1d Binary files /dev/null and b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/a56241f28b0f24d39eca14fa0193e348-1754458408503-20.png differ diff --git a/notes/前端开发/pnpm/assets/pnpm依赖安装失败/a56241f28b0f24d39eca14fa0193e348.png b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/a56241f28b0f24d39eca14fa0193e348.png new file mode 100644 index 00000000..128e6d1d Binary files /dev/null and b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/a56241f28b0f24d39eca14fa0193e348.png differ diff --git a/notes/前端开发/pnpm/assets/pnpm依赖安装失败/c7d9e09d22a867a60add460abf35c54a-1754458408503-22.png b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/c7d9e09d22a867a60add460abf35c54a-1754458408503-22.png new file mode 100644 index 00000000..45dc8a01 Binary files /dev/null and b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/c7d9e09d22a867a60add460abf35c54a-1754458408503-22.png differ diff --git a/notes/前端开发/pnpm/assets/pnpm依赖安装失败/c7d9e09d22a867a60add460abf35c54a.png b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/c7d9e09d22a867a60add460abf35c54a.png new file mode 100644 index 00000000..45dc8a01 Binary files /dev/null and b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/c7d9e09d22a867a60add460abf35c54a.png differ diff --git a/notes/前端开发/pnpm/assets/pnpm依赖安装失败/d61e42363bea1077e984b3828827eea1.png b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/d61e42363bea1077e984b3828827eea1.png new file mode 100644 index 00000000..06bc06f1 Binary files /dev/null and b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/d61e42363bea1077e984b3828827eea1.png differ diff --git a/notes/前端开发/pnpm/assets/pnpm依赖安装失败/e0f8eee47c0d3b8fd9f7569f1c2b4352.png b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/e0f8eee47c0d3b8fd9f7569f1c2b4352.png new file mode 100644 index 00000000..25b4b38d Binary files /dev/null and b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/e0f8eee47c0d3b8fd9f7569f1c2b4352.png differ diff --git a/notes/前端开发/pnpm/assets/pnpm依赖安装失败/ef071d1e5ba8e5d0a496bfa2e2d66adb.png b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/ef071d1e5ba8e5d0a496bfa2e2d66adb.png new file mode 100644 index 00000000..e8d48daa Binary files /dev/null and b/notes/前端开发/pnpm/assets/pnpm依赖安装失败/ef071d1e5ba8e5d0a496bfa2e2d66adb.png differ diff --git a/notes/前端开发/pnpm/pnpm依赖安装失败.md b/notes/前端开发/pnpm/pnpm依赖安装失败.md new file mode 100644 index 00000000..39f14079 --- /dev/null +++ b/notes/前端开发/pnpm/pnpm依赖安装失败.md @@ -0,0 +1,62 @@ +# 1 软链接问题解决 + +**问题**: `pnpm` 使用硬链接或符号链接来管理 `node_modules` 中的依赖项。如果链接路径在新的文件夹或文件系统中失效,可能会导致依赖解析失败。 + +**解决方法**: 尝试删除并重新安装所有依赖,确保链接正确创建。 + +```bash +rm -rf node_modules pnpm-lock.yaml +``` + + + +# 2 文件路径过长问题 + +**问题**: 在 Windows 系统上,文件路径过长(超过 260 个字符)可能导致文件系统问题,导致文件无法被正确访问。 + +**解决方法**: 尝试将项目目录移动到一个路径较短的位置,比如 `C:\Projects\my-project`,然后重新安装依赖。 + +node_modules文件夹里面的内容路径会很长,所以整个项目文件夹所在路径不宜过长,否则路径可能会超过260个字符。 + +![image-20240830135718984](./assets/pnpm%E4%BE%9D%E8%B5%96%E5%AE%89%E8%A3%85%E5%A4%B1%E8%B4%A5/6c3a3b402b47e6e5998e6239da67188a-1754458316963-17.png) + + + +# 3 pnpm缓存问题 + +**问题**: `pnpm` 的缓存可能导致一些包没有被正确更新或安装。 + +**解决方法**: 清除 `pnpm` 的缓存: + +依次执行下面命令 + +- 清理未使用的缓存包 + +```bash +pnpm store prune +``` + +- 清空整个 pnpm 的缓存存储库 + +```bash +pnpm store clear +``` + + + +# 4 pnpm缓存深度清理 + +执行下面这句话: + +```bash +pnpm store path +``` + +然后我们看到这个路径 + +![image-20240830140127029](./assets/pnpm%E4%BE%9D%E8%B5%96%E5%AE%89%E8%A3%85%E5%A4%B1%E8%B4%A5/a56241f28b0f24d39eca14fa0193e348-1754458408503-20.png) + +进入这个目录,将这3个文件夹都手动删除 + +![image-20240830140240181](./assets/pnpm%E4%BE%9D%E8%B5%96%E5%AE%89%E8%A3%85%E5%A4%B1%E8%B4%A5/c7d9e09d22a867a60add460abf35c54a-1754458408503-22.png) +