diff --git a/notes/assets/Pasted image 20260415192621.png b/notes/assets/Pasted image 20260415192621.png new file mode 100644 index 0000000..1230918 Binary files /dev/null and b/notes/assets/Pasted image 20260415192621.png differ diff --git a/notes/assets/Pasted image 20260415201156.png b/notes/assets/Pasted image 20260415201156.png new file mode 100644 index 0000000..2f57a4f Binary files /dev/null and b/notes/assets/Pasted image 20260415201156.png differ diff --git a/notes/assets/Pasted image 20260415201527.png b/notes/assets/Pasted image 20260415201527.png new file mode 100644 index 0000000..f470b73 Binary files /dev/null and b/notes/assets/Pasted image 20260415201527.png differ diff --git a/notes/assets/Pasted image 20260415201626.png b/notes/assets/Pasted image 20260415201626.png new file mode 100644 index 0000000..dbd7396 Binary files /dev/null and b/notes/assets/Pasted image 20260415201626.png differ diff --git a/notes/assets/Pasted image 20260415202442.png b/notes/assets/Pasted image 20260415202442.png new file mode 100644 index 0000000..d9f3ff1 Binary files /dev/null and b/notes/assets/Pasted image 20260415202442.png differ diff --git a/notes/assets/Pasted image 20260415202608.png b/notes/assets/Pasted image 20260415202608.png new file mode 100644 index 0000000..1014027 Binary files /dev/null and b/notes/assets/Pasted image 20260415202608.png differ diff --git a/notes/assets/Pasted image 20260415202758.png b/notes/assets/Pasted image 20260415202758.png new file mode 100644 index 0000000..c47c7b2 Binary files /dev/null and b/notes/assets/Pasted image 20260415202758.png differ diff --git a/notes/assets/Pasted image 20260415202931.png b/notes/assets/Pasted image 20260415202931.png new file mode 100644 index 0000000..e9f9182 Binary files /dev/null and b/notes/assets/Pasted image 20260415202931.png differ diff --git a/notes/assets/Pasted image 20260415230956.png b/notes/assets/Pasted image 20260415230956.png new file mode 100644 index 0000000..c88a5f5 Binary files /dev/null and b/notes/assets/Pasted image 20260415230956.png differ diff --git a/notes/assets/Pasted image 20260415232911.png b/notes/assets/Pasted image 20260415232911.png new file mode 100644 index 0000000..b299770 Binary files /dev/null and b/notes/assets/Pasted image 20260415232911.png differ diff --git a/notes/assets/Pasted image 20260415233225.png b/notes/assets/Pasted image 20260415233225.png new file mode 100644 index 0000000..0d3ccb1 Binary files /dev/null and b/notes/assets/Pasted image 20260415233225.png differ diff --git a/notes/assets/Pasted image 20260415233620.png b/notes/assets/Pasted image 20260415233620.png new file mode 100644 index 0000000..8dc5241 Binary files /dev/null and b/notes/assets/Pasted image 20260415233620.png differ diff --git a/notes/git.md b/notes/git.md index 5a793f7..85e7d54 100644 --- a/notes/git.md +++ b/notes/git.md @@ -1,56 +1,103 @@ -## 从自己的分支开始 +## 工作流 -1. 拉取分支 +- 大家在自己的「个人分支」工作,互不干扰 +- 通过「提交」,有选择性地确认改动到「个人分支」(个人审核 AI) +- 不时地,接收其他人在「主分支」的改动 +- 通过「合并请求」,有监督地把确认改动到「主分支」(团队审核个人) -```bash -git clone [repo.git] -cd [repo-name] +```mermaid +flowchart LR + 文件改动 -- 提交 --> 个人分支 -- 合并请求 --> 主分支 ``` -2. 创建自己的分支 -```bash -git checkout -b [your-name]/[do-something] # 比如 manan/dev -``` +## 在自己的「个人分支」工作 -3. 首次推送分支到远程 +**1. 下载仓库** -```bash -git push -u origin [branch-name] -``` +浏览器打开仓库地址 ,点右上的 Code 按钮,点击 Open with VS Code -4. 本地一些改动 +![](notes/assets/Pasted%20image%2020260415192621.png) -```bash -git add . -git commit -m [message] -``` +> 或 Bash 执行 `git clone [repo.git]` -5. 推送改动 -```bash -git push -``` +**2. 创建自己的「个人分支」** -## 合并到`main` +点左下角的`main`,点击`Create new branch...`,然后输入分支名`[your-name]/[do-something]`(比如`manan/dev`) -确保自己的东西和`main`别差太远了,合并前,先从`main`来取并合并到自己的分支 +![](notes/assets/Pasted%20image%2020260415201156.png) -```bash -git checkout main -git pull # origin main -git checkout [branch-name] # 回到特征分支 -git merge main -``` +> 或 Bash 执行 `git checkout -b [your-name]/[do-something]` -或者直接 +创建后,首次推送分支到远程。这样远程也有属于你的分支了 -```bash -# 确保在特征分支 -git pull origin main -``` +![](notes/assets/Pasted%20image%2020260415201626.png) -如果冲突,会进入`([branch-name]|MERGING)` 状态 +> 或 Bash 执行 `git push -u origin [branch-name]` + + +## 通过「提交」来确认改动到「个人分支」 + +**1. 添加到 Staged Changes** + +仓库的任何改动都会罗列在 Changes 下,此时它们都是暂时的。点击 + 来添加到 Staged Changes 下(你可以只添加部分改动) + +![](notes/assets/Pasted%20image%2020260415202442.png) + +> 或 Bash 执行 `git add [file]` + +**2. 提交 Staged Changes** + +手动输入 Commit Message 来说明改动了什么,或者点击小星按钮让 AI 来帮忙总结。最后点击 Commit,完成「提交」。至此改动才被确认,记录到了 Git History 中。 + +![](notes/assets/Pasted%20image%2020260415202608.png) + +> 或 Bash 执行 `git commit -m [message]` + +最后,你需要「推送」到远程仓库来完成和远程的同步,点击 Push。至此远程仓库也同步为了最新的版本。 + +**3. 同步到远程的「个人分支」** + +![](notes/assets/Pasted%20image%2020260415202931.png) + +> 或 Bash 执行 `git push` + +这是工作中最常见的循环,一边制作,一边 commit + push + +## 接收其他人在「主分支」的改动 + +当你在自己的分支工作的时候,其他人也在不断更新「主分支」`main`。有时需要对齐一下,同步并合并来自`main`的改动到你自己的分支。 + +点击 Pull from...,并选择`origin/main`(注意不是`main`分支,它是本地的,并非最新) + +![](notes/assets/Pasted%20image%2020260415230956.png) + +> 或 Bash 执行 `git pull origin main` + +如果冲突,会进入`([branch-name]|MERGING)` 状态,具体查看 [解决冲突](#解决冲突) + +## 通过「合并请求」来确认改动到「主分支」 + +「主分支」`main`通过这样方式来接收大家的更新,这一步叫「合并请求」(Pull Request,简称 PR)。 + +浏览器访问仓库主页,切换到「个人分支」,点击 New Pull Request 按钮(3) + +![](notes/assets/Pasted%20image%2020260415232911.png) + +确认一下合并方向是否正确,然后填写 PR 标题和内容(改了什么,加了什么),最后点击 Create Pull Request + +![](notes/assets/Pasted%20image%2020260415233225.png) + +PR 会加入队列,等待审核通过。通过后就会合并到`main` + +![](notes/assets/Pasted%20image%2020260415233620.png) + +> 注意,如果在提 PR 后,如果你又更新了你的分支,不必再次提 PR + +> 注意,在提 PR 前,一定要在本地执行[同步「主分支」的改动](#同步「主分支」的改动)(并 push 到了远程) + +## 解决冲突 解决完冲突后,继续