##### 整体认识
- 整体认识
- 远程仓库
- 使用一个包含 `README.md` 的[GitHub 仓库](https://github.com/new), 这代表已经被[[Git.仓库|初始化]]可以被克隆
- `https://github.com/<user>/<repository>.git`
- 克隆仓库
- 首先将[[Git.仓库|远程仓库]][[git clone|克隆]]到本地, 并进入目录
- `git clone https://github.com/<user>/<repository>.git`
- `cd repository`
- 创建新分支
- 为了避免直接在 `main` [[Git.分支|主分支]]上进行开发, 通常会[[git branch|创建]]一个新的分支, 并[[git switch|切换]]到这个新分支然后设置上游分支, 可以[[git branch|查看]]分支信息
- `git branch new-readme`
- `git branch -vv`
- `git switch new-readme`
- `git branch -vv`
- `git branch -u origin/main`
- 编辑工作区
- 在[[Git.分区|工作区]]中进行编辑, 为 `README.md` 新增内容, 可[[git status|查看]]文件状态
- `echo 说明 >> README.md`
- `git status`
- 暂存文件
- 将修改过的文件[[git add|添加]]到[[Git.分区|暂存区]], 以便进行下一步的提交操作
- `git add README.md`
- 或者添加所有修改的文件
- `git add .`
- 提交更改
- 将暂存区的更改[[git commit|提交]]到[[Git.分区|版本库]], 并添加提交信息, 可[[git log|查看]]提交记录
- `git commit -m "Add new readme"`
- `git log`
- 拉取最新更改
- 在推送本地更改之前, 最好从远程仓库[[git pull|拉取]]最新的更改, 以避免[[Git.分支|冲突]], 因为远程仓库可能先被别人更新
- `git pull origin main`
- 推送更改
- 将本地的提交[[git push|推送]]到远程仓库 `main` 分支
- `git push origin HEAD:main`
- 更新本地主分支, 如果不再需要新功能分支, 可以将其[[git branch|删除]]
- `git switch main`
- `git pull origin main`
- `git branch -d new-readme`
- 分叉仓库
- 分叉仓库
- 如果远程仓库是别人项目仓库的分叉 `fork`, 则可以通过拉取请求 Pull Request (PR) 对项目做出贡献
- 分叉拉取最新更改
- 这首先需要与被分叉的仓库保持同步, 首先新[[git remote|添加]]被分叉仓库的上游跟踪, 然后[[git pull|拉取]]更改
- `git remote add upstream <forkurl>`
- `git pull upstream main`
- 推送更改
- 将本地的提交[[git push|推送]]到远程仓库 `main` 分支
- `git push origin HEAD:main`
- 拉取请求
- 在 GitHub 上创建 PR, 邀请团队成员进行代码审查. PR 合并后, 你的更改就会合并到项目分支. 不能像自己仓库一样直接推送
- 合并更改
- 在 PR 审核通过并合并后, 可以将被分叉远程仓库的主分支[[git pull|合并]]到本地主分支
- `git switch main`
- `git pull origin upstream`
- `git branch -d new-readme`