个人开发工作流程
个人开发的 Git 基础工作流其实非常简单,没有那些条条框框的团队规范。最核心的开发节奏只需三步:打包本地修改、归档版本,然后同步到云端。
1. 暂存本地修改
在本地编辑器中写完一段代码或完成一个小功能后,我们需要先将这些散落的修改收集起来。
你可以通过在项目根目录的终端执行以下命令,将当前目录下所有新增或修改的文件全部放入暂存区:
git add .此时相当于把修改的代码放进暂存队列,在未提交前,你依然可以继续调整。
2. 提交本地历史
将文件放入暂存区后,我们需要正式为这次修改生成一个本地的提交记录。
执行以下命令,为这次提交打上清晰的备注标签并正式封存:
git commit -m "feat: 完成用户登录页面"此时提交的 ID 已经生成,你的代码已经绝对安全地保存在你本地的电脑里了。
3. 推送远程备份
本地封存只能保证本地电脑的数据安全,为了防止硬件损坏、或需要在多台设备上同步,我们需要将本地的历史记录推送到云端仓库(如 GitHub / Gitee)。
在终端执行以下推送命令:
git push origin main确认终端返回 Everything up-to-date 或推送成功的进度条后,说明云端已同步成功。
辅助扩展具体操作
仅凭上面的三个核心命令虽然能跑通,但在 “逻辑异常需要回退” 或者 “想同时做多个实验性尝试” 的场景下往往捉襟见肘。Git 所有的分支与回退机制,都是为了让我们能更便利地使用基础的核心命令。
1. 建立独立分支
如果你直接在主分支 main 上编写不确定的代码,一旦新逻辑出现严重逻辑错误,回退过程会极其繁琐。我们需要在编写新功能前,给自己开辟一个安全的隔离带。
在开始新功能前,在终端执行以下命令建立并切换到新分支:
git checkout -b feat/my-feature在这个新分支里,你依然可以重复 add -> commit -> push 。如果成功编写代码,切回主分支将其合并:
git checkout maingit merge feat/my-feature如果开发失败或方案被废弃,随时切换回主分支,执行以下命令直接把这个实验分支删掉,主干代码完好无损:
git checkout maingit branch -D feat/my-feature2. 撤销暂存变更
有时候手太快执行了 git add . ,结果发现把一些垃圾文件或者没写完的代码也一起打包进去了。
此时无需手动删代码,直接在终端执行以下命令即可撤销暂存:
git restore --staged .执行后,文件会从准备提交的队列里原封不动地拿出来,回到未打包状态。
3. 取消本地提交
刚敲完 git commit,突然发现备注字打错了,或者少改了一行代码,想重新组织这次提交。
在终端执行以下命令,即可实现本地历史的回退:
git reset --soft HEAD~1这一步会直接撤销上一次的本地提交,代码文件原封不动地退回到你的工作区,允许你修改后重新 commit。
4. 撤销远程推送
如果代码已经推送到云端仓库,直接在本地强行抹除历史会导致云端和本地冲突。此时我们需要使用安全且不破坏云端历史记录的方式来修正错误。
先在终端通过一行流查看刚才提交的短 ID:
git log --oneline找到那串 7 位的提交 ID 后,执行反向撤销命令:
git revert <刚刚提交的ID>Git 会非常聪明地生成一次反向修改的提交,把你刚才推上去的错误代码抵消,保证历史记录完整且绝不冲突。
团队开发工作流程
当从个人开发过渡到团队协作时,Git 的核心骨架依然是基础的核心命令,但为了保证多人同时修改代码时不发生冲突,并确保主干代码的稳定性,我们需要引入更严格的分支管理和代码合并规范。
1. 同步远程主干
在团队开发中,主分支(通常为 main 或 master )由全体成员共同维护。在开始一天的开发工作或编写新功能之前,必须先将本地的主分支与远程仓库同步到最新状态。
在本地主分支终端执行以下命令拉取最新代码:
git checkout maingit pull origin main这样可以避免基于过时的代码进行开发,从而减少后续合并时发生冲突的概率。
2. 推送功能分支
团队开发中严格禁止直接向主分支提交代码。所有新功能、需求或缺陷修复,都必须在独立的本地分支中进行完整的核心三连操作,完成后推送到远程仓库。
执行以下命令可以创建分支、进行本地开发并推送功能分支:
# 创建并同时切换到新分支git checkout -b feat/user-oauth
git add .git commit -m "feat: 完成用户登录页面"git push origin feat/user-oauth此时,你的代码仅存在于远程的独立分支中,不会对主干网络产生任何影响。
3. 发起合并请求
代码推送至远程后,需要通过代码托管平台(如 GitHub / Gitee)发起合并请求(Merge Request)。这一步通常需要配置项目的自动化测试流水线,并由团队内的其他成员进行代码评审(Code Review)。
审查通过且自动化测试无误后,由项目负责人或通过平台权限将其合并入主分支。
4. 清理本地分支
当远程的合并请求完成后,意味着该功能已经正式并入主干。为了保持本地工作区和远程仓库的整洁,需要及时清理已经完成历史使命的分支。
切回主分支,同步最新的合并结果,并删除本地和远程的旧分支:
git checkout maingit pull origin main
# 安全删除本地分支git branch -d feat/user-oauth
# 删除远程仓库中的分支git push origin --delete feat/user-oauth冲突处理具体操作
多人协作中最常见的问题就是团队成员修改了同一个文件的同一行代码,导致在合并时产生冲突。Git 无法自动判断保留哪一份修改,此时需要人工介入解决。
1. 定位冲突位置
当你尝试执行 git merge 或 git pull 提示有冲突(CONFLICT)时,Git 会暂停合并流程,并在冲突文件中插入特定的标记。
使用编辑器打开冲突文件,寻找以下格式的冲突区域:
<<<<<<< HEAD这里是你当前分支修改的内容=======这里是远程分支或其他成员修改的内容>>>>>>> feat/user-oauth2. 挑选保留代码
根据团队的业务需求,删除 <<<<<<< 、======= 、>>>>>>> 这些标记符号,在编辑器中手动将代码调整为最终期望保留的正确状态(可以是仅保留其中一方,也可以是双方代码的结合)。
3. 重新提交历史
冲突文件人工修正并保存后,需要向 Git 宣告冲突已解决。重新将其放入暂存区并完成提交:
git add .git commit -m "fix: 解决 index.html 中的合并冲突"git push origin main执行完毕后,主干的冲突即被完美消除,团队工作流重回正轨。