最近学到了git三剑客与github上的pull request,适用于多人多次修改的项目。其实询问AI,就会发现TA讲解得很详细了,而我这里主要做个总结与记录。以下为Linux使用场景。

目录
[Git / GitHub 协作主要流程](#Git / GitHub 协作主要流程)
[1. 获取仓库(git clone)](#1. 获取仓库(git clone))
[2. 查看仓库状态](#2. 查看仓库状态)
[3. 添加文件到暂存区](#3. 添加文件到暂存区)
[4. 提交到本地仓库](#4. 提交到本地仓库)
[5. 推送到远程仓库](#5. 推送到远程仓库)
[6. 拉取远程最新代码](#6. 拉取远程最新代码)
Git / GitHub 协作主要流程
即获取项目(Clone/Fork) → 本地开发(Branch) → 提交(Commit) → 推送(Push) → 合并(Pull Request)
- 获取项目代码
- 如果是自己的仓库或拥有写权限的仓库,直接
git clone到本地。 - 如果是他人的 GitHub 仓库且没有写权限,先 Fork 到自己的 GitHub 账号,再
git clone自己 Fork 后的仓库到本地。
- 如果是自己的仓库或拥有写权限的仓库,直接
- 本地开发
- 新建一个开发分支(
git checkout -b <branch-name>)。【可灵活选择执行】 - 修改代码、测试功能。
- 新建一个开发分支(
- 提交修改
- 使用
git add将修改加入暂存区。 - 使用
git commit提交到本地仓库,并编写清晰的提交信息。
- 使用
- 推送到远程仓库
- 使用
git push将本地提交推送到远程仓库。 - 如果是 Fork 的仓库,则推送到自己 GitHub 账号下的仓库。
- 使用
- 合并修改(GitHub 协作)
- 如果修改的是自己的项目,可直接合并到主分支(通常通过 Pull Request)。
- 如果修改的是他人的项目,则向原项目发起 Pull Request(PR),等待项目维护者审核并合并。
Git中主要命令
1. 获取仓库(git clone)
bash
git clone /path/to/repository<即仓库地址>
作用: 将远程仓库克隆到本地。
例:仓库地址为.git结尾的一串。
找到项目中的download/clone处,例如:
阿里云
Github
2. 查看仓库状态
git status
作用: 查看当前仓库状态,包括:
- 哪些文件被修改(Modified)
- 哪些文件未被 Git 跟踪(Untracked)
- 哪些文件已加入暂存区(Staged)
- 当前所在分支
如果clone到本地的库无更新,用上述命令则会显示'nothing to commit'的状态,即如下所示:

反之,则是'modified something',且提示后续做git add的操作,如下:
仅更改,未递交保存
3. 添加文件到暂存区
bash
git add <文件名>
# 或
git add .
作用: 将修改加入暂存区(Stage),等待提交。
递交保存后,查看状态会显示如下:

4. 提交到本地仓库
bash
git commit -m "提交说明"
# 可将所有被修改或者已删除的且已经被git管理的文档提交到仓库,但不会提交新产生的文件,只能修改
git commit -a
# 用 -a 参数时可以省略 git add .,会自动进行递交。
# 可以连用,即:
git commit -am "提交说明"
作用: 将暂存区内容提交到本地 Git 仓库。
添加更新备注说明,如下示例:

5. 推送到远程仓库
git push
作用: 将本地提交同步到远程仓库(GitHub、GitLab 等)。
首次推送新分支通常需要:
git push -u origin master/
例图如下:
阿里云推送结果
这时候尝试输出状态,则显示'nothing',表明已同步成功。
6. 拉取远程最新代码
开发前通常建议先执行一遍,避免与他人的修改发生冲突。
git pull
作用: 获取远程仓库最新修改,并合并到当前分支。
其他相关命令
|-------------------------|----------------------------------|
| 命令 | 作用 |
| git branch branchname | 查看或创建分支 (-d 删除分支) |
| git checkout | 切换分支、创建新分支 |
| git add filename | 添加文件 |
| git rm filename | 删除库中文件 (--cached 仅删除库中文件,保留本地文件) |
| git init newrepo | 制定文件夹(newrepo)作为本地库目录 |
Github中clone前的步骤
因为是别人的项目无权限更改,所以需要fork到自己主页中变成自己的项目,拥有该项目的读写权限。
点击 ' fork ',创建一个新的fork后,相当于直接复制到你的主页中。接着拷贝自己主页中的库。使用Git 三剑客(add/commit/push)进行更新。

更新过后的操作,需要与原创作者进行申请,要求并入修改代码,由原创作者进行检查同意后,该库的项目就更新啦!申请之后会在' Pull request '中显示。()

注意事项
1、首选SSH访问协议进行clone。
SSH访问协议中需要配置公钥,阿里云说明文档中有详细介绍(2min可生成)。其他库类似。
如何配置SSH密钥及自定义SSH认证密钥的路径-云效(Alibaba Cloud DevOps)-阿里云帮助中心
因为我用的SSH算法类型为RSA,接下来就讲解这个类型公共秘钥的生成方式(ED25519类型的可查看链接 类似)
bash
# 查看已有密钥(一般来说没做过就是没有的)
cat ~/.ssh/id_rsa.pub
# 检查标准:返回一长串以 ssh-ed25519 或 ssh-rsa 开头的字符串,且对应邮箱或者登录名。
# 生成密钥(<注释内容>可为邮箱或者登录名)
ssh-keygen -t rsa -C "<注释内容>"
# 返回一长串以 ssh-ed25519 或 ssh-rsa 开头的字符串,且对应邮箱或者登录名。
# 将密钥拷贝至公共库中
生成密钥示例图:(完整拷贝本机中公钥从ssh- 开始直到邮箱为止的内容。)
其他库需要的时候可以直接复制相同的公钥附在密码本< ~/.ssh/id_rsa.pub >后面,仅需要更改对应的邮箱名(或登录信息)。

2、第一次使用Git时,需要指明姓名与邮箱。
如未指明,在提交备注时,会出现如下提示:(执行红框部分就ok)
