vscode + git bash 的协作任务执行
机械跨考,纯新手来的,上课遇到协同作业,用到了 GitHub 项目的协同任务(branch);随便记录一下遇到的一些问题,后续可能还会用到。
0. GitHub 项目和VS Code
(1)命令行 / 图形化按键操作
VS Code 中通过调用 Git 的相关命令完成各类相关操作,因此可以直接使用命令行。
CTRL + ~ 可在 VS Code 快速启动命令行
(2)GitHub 项目拉取
使用 git clone 而非 download zip ,协作项目需要多次上传/更新本地的项目库;git clone这类指令才能得到一个潜在的 .git 文件夹:包含 origin URL。
git clone URL
# 在你想存放项目的位置(通过cd进入),输入 GitHub 项目的 URL
git remote -v
# origin 作为 remote 可以得到你的GitHub项目的 URL ;该命令会输出你的项目库的 URL
download zip 只是下载了一个“ 死的 ”文件夹,没有更新的功能。
1. GitHub 项目的协作思路
clone 项目,更新项目的 main / master 分支;开辟新分支并修改,合并分支并再次上传内容审查;
在 branch 中,拥有一份和 main 一样的内容,但在“平行时空”对其进行编辑,最后可以逐步放回去
2. 为什么要用branch?
branch是另一个分支,对同一个项目的操作分离;(AI得到原因如下)
-
安全地开发新功能或修复 Bug,不污染主代码。
-
高效地与团队成员并行工作,互不阻塞。
-
规范地通过 Pull Request 进行代码审查,保证质量。
-
清晰地管理项目的不同版本和发布周期。
3. 如何进行协同开发?
首先要保证的就是,准备开发时的 main 分支与GitHub上的最新状态保持一致。防止更新时的变化过大,引起相关的问题。(合并错误/更新错误)
通过执行指令进行更新。(建议多次进行,减少不同处)
# 1. 切换到你的本地 main 分支
git switch main
# git switch 表示切换分支
# 2. 从远程仓库(origin)的 main 分支拉取最新的代码
git pull origin main
建议在要对项目进行修改时再建立新的分支,防止你的旧分支和新的本地 main 分支内容不符合等问题。
# 从当前的 main 分支创建并立即切换到新分支 feature-login
git switch -c feature-login
在新建的分支 feature-login 中进行新的编辑,合并前不会影响到原先的内容,且在本地;会新建/修改文件内容,并且可以提交(不是合并,仍然在自己的分支内) 内容,也可以加上相关的注释。
# 1. 查看当前文件状态,会看到你新建或修改的文件
git status
# 2. 将你想要提交的所有文件添加到暂存区
git add .
# "." 代表所有文件,你也可以指定具体文件,如 git add login.html
git add file1.js
git add file2.html
# 具体文件
git add src/
# 整个目录
git add -p
# 或者 git add --patch
# 逐条提问是否保存修改
# 3. 提交你的修改,并写下清晰的提交信息
git commit -m "feat: 实现登录页面基本布局"
# -m表示添加简短消息
# 不添加消息则,会有默认的提交信息
git status:展示了文件的所有状态:包含新建的,删除的,修改的,在其中都有对应状态;
git add:对现在的文件进行一次快照,发生变化就放入暂存区,准备提交不同种的修改;
git commit:将暂存区的内容全部上传;
当你的分支开发完毕,就需要将自己的分支进行本地合并/上传 GitHub 中央仓库
# -u 参数会自动将本地分支与远程分支关联起来,之后再推送这个分支时只需 git push 即可
git push -u origin feature-login
# 后续对相同的分支不再需要 -u
git push
在 GitHub 仓库中会多出一个新的分支,也就是个人上传的分支;( -u 只需一次),后续只需要找到这个分支名(已经有索引关系);
而后在 GitHub 中会提示 Pull Request (PR),进行审查/合并工作;可以根据实际情况进行再次 commit/push 等操作。
4. 如何更新分支?
应对在干活时突然发现GitHub中的项目有变化了
一般有两种形式,git merge (合并) / git rebase (变基);
# 1. 确保你现在在自己的功能分支上 (例如 feature-avatar-upload)
git switch feature-avatar-upload
# 2. 从远程拉取所有最新的更新信息,但暂时不修改任何本地分支
git fetch origin
# 二选一
# 3. 将远程的 main 分支合并到你当前的分支中
git merge origin/main
# 3. 执行变基
git rebase origin/main
不同之处在于:
merge :直接融入 main 分支中新的变化,不重构(可能会很混乱);
rebase :保留分支修改记录,先更新main再更新自己的操作记录(修改 git 修改记录)
merge 的流程:


rebase 的流程:


若一个功能由一个人开发,更适合用 git rebase
一般在分支中进行编辑时,可以使用,但最好也进行本地 main 分支的更新,防止遗漏;同样的,在已经更新本地 main 分支后,本地 main 同样可以进行分支的合并(merge / rebase);将代码进行变化即可;
# main 的同步和上面一样
# 1. 切换回你正在开发的功能分支
git switch feature-x
# 2. 选择一种方式,用最新的 main 分支来更新当前分支
# 方式A: Rebase (推荐用于个人分支)
git rebase main
# 方式B: Merge
# git merge main
有关 rebase :rebase 的过程是对内容和上下文的记录,而非代码行数的记录;可以自行根据提示修改;可以有以下冲突情况:
# 解决后,保存文件,然后执行 git add . 来告诉 Git 你已经解决了冲突。
git add .
# 最后,执行 git rebase --continue,Git 就会继续尝试应用你的下一个提交。
git rebase --continue
# 如果中途你觉得情况太混乱,想放弃这次 Rebase,可以随时执行 git rebase --abort,你的分支会立刻回到 Rebase 开始前的状态。
git rebase --abort
5. 结束
当一切完成,这个分支的使命到此结束,通过命令删除分支
# 首先,切回 main 分支
git switch main
# 删除本地的 feature-login 分支
git branch -d feature-login
# GitHub 分支的删除在网页上有提示
更多推荐


所有评论(0)