机械跨考,纯新手来的,上课遇到协同作业,用到了 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 分支的删除在网页上有提示

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐