核心协作流程概览
团队协作的核心逻辑是:不要直接在主分支(main/master)上修改代码。每个人都在自己的'功能分支'上开发,完成后通过'Pull Request (PR)'合并回主分支。
本文介绍了 Git 团队协作的核心流程,包括项目初始化、分支开发、日常提交及代码审查。重点对比了 Git Merge 和 Rebase 的区别:Merge 保留完整历史记录但可能产生分叉,适合公共分支;Rebase 保持历史线性整洁但会修改提交 ID,仅推荐用于本地分支或拉取代码时。文章提供了常见冲突解决方法和最佳实践建议,帮助开发者安全高效地进行版本控制协作。

团队协作的核心逻辑是:不要直接在主分支(main/master)上修改代码。每个人都在自己的'功能分支'上开发,完成后通过'Pull Request (PR)'合并回主分支。
如果你是新加入项目的成员,首先需要将远程仓库的代码下载到本地。
git clone <url>
在开发任何新功能或修复 Bug 之前,必须创建一个独立的分支。
**git checkout -b <branch-name>** (或者新版命令 git switch -c <branch-name>)
-b 表示 "branch" (创建),<branch-name> 是你起的分支名(例如 feature-login-page 或 fix-bug-101)。这是你每天重复频率最高的步骤。
git status
git add <file> 或 git add .
. 代表当前目录下的所有文件。git commit -m "提交信息"
"提交信息" 要清晰明了,例如 "完成登录页面的前端布局",不要写 "update" 这种无意义的话。当你完成了功能,需要把代码传到 GitHub 上给队友看。
git pull origin main (推荐在 push 前做)
main 分支的最新代码拉下来,合并到你当前的分支中。git push origin <branch-name>
<branch-name> 分支上传到远程仓库(GitHub)。这一步主要在 GitHub 网页端进行,不涉及命令行:
main 分支。在协作过程中,最容易遇到的几个问题:
git pull 或在 GitHub 上合并 PR 时,提示 "Conflict"。这意味着你和队友修改了同一个文件的同一行代码,Git 不知道该听谁的。<<<<<<< HEAD 这样的标记)。git add . 和 git commit 重新提交。git push 时报错,提示远程仓库包含你本地没有的工作。git pull 拉取最新代码,解决可能出现的冲突,然后再 git push。git checkout . (或 git restore .):丢弃所有未提交的修改(慎用!会找不回来)。git stash:把当前的修改'藏'起来,让工作区变干净,以后可以用 git stash pop 拿出来。| 命令 | 作用 | 通俗理解 |
|---|---|---|
git clone [url] | 克隆仓库 | "把项目抄一份回家" |
git checkout -b [分支名] | 创建并切换分支 | "开个新副本练级" |
git status | 查看状态 | "看看我刚才干了啥" |
git add . | 添加到暂存区 | "把改好的文件放到待发箱" |
git commit -m "..." | 提交更新 | "盖章确认,存入档案" |
git pull | 拉取代码 | "看看队友更新了什么" |
git push | 推送代码 | "把我的作业交上去" |
git merge [分支名] | 合并分支 | "把副本的经验值合到大号上" |
简单来说,它们都是把一个分支的代码合并到另一个分支,但结果的历史记录(Log)长得完全不一样。
我们可以把 Git 的提交历史想象成一串珍珠项链。
这是最标准、最安全的方式。
Rebase 的意思是'重新设定基底'。
假设你从主干 C2 处切出分支开发了 C4,通过 Git 协作:
初始状态:
A---B---C4 (你的分支 feature) / D---E---F---G (主分支 main)
使用 Merge 后:
A---B---C4------H (新的 Merge Commit) / / D---E---F---G-------/ (main)
*结果:保留了分叉结构,多了一个 H 提交。
使用 Rebase 后:
D---E---F---G---A'---B'---C4' (feature 变基到了 main 后面)
*结果:原本的 A、B、C4 被'搬运'到了 G 后面,变成了一点直线。注意:提交 ID 变了,所以叫 A'。
在团队协作中,推荐遵循 "Local Rebase, Remote Merge" 原则:
当你准备把本地代码 push 上去之前,发现远程 main 分支已经更新了。不要用 git pull (它默认是 fetch + merge),而是用:git pull --rebase origin main
你在开发功能时,可能为了保存进度提交了 10 次(比如 "fix typo", "save work")。在合并进主分支前,你可以用交互式 rebase (git rebase -i) 把这 10 个提交合并成 1 个漂亮的提交,然后再推送到远程。
永远不要在公共分支(如 main/master)或者别人正在使用的分支上执行 Rebase!
git merge 和普通的 git pull。虽然历史记录乱一点,但绝对安全,不会丢代码。rebase 来保持历史整洁。git pull --rebase。
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online