【git】工作流实战:从本地仓库到远程仓库,git pull 与git rebase使用讲解,案例解析

Git 工作流实战:从本地仓库到远程仓库

将代码从本地仓库推送到远程仓库,并模拟公司团队协作的场景。

  • 如果还没有连接远程仓库可以注册一下Gitee https://gitee.com/

  • 新建仓库复制https

  • git init

  • git remote add origin 粘贴https

一、推送代码到远程仓库

  1. 查看远程仓库信息 :使用 git remote -v 命令查看远程仓库的信息。
bash 复制代码
git remote -v
  1. 推送代码 :使用 git push 命令将本地仓库的代码推送到远程仓库。
bash 复制代码
git push origin feature/login
  • 这会将本地仓库的 feature/login 分支推送到远程仓库,并在远程仓库创建一个同名的分支。
  1. 查看远程仓库 :在代码托管平台 (例如 GitHub、GitLab) 上,找到你刚刚推送的分支 feature/login,确认代码已经成功推送。

二、团队协作场景模拟

假设你和你的同事 Alice 一起开发登录功能,你们分别负责不同的部分。

  1. Alice 克隆仓库并创建分支 :Alice 克隆远程仓库到本地,并创建自己的开发分支 feature/login-alice
bash 复制代码
git clone https://github.com/company/project.git
cd project
git checkout -b feature/login-alice
  1. Alice 开发功能并推送代码:Alice 在自己的分支上开发登录功能,并推送代码到远程仓库。
bash 复制代码
# 修改代码
git add .
git commit -m "Alice: 完成登录表单样式开发"
git push origin feature/login-alice
  1. 你拉取最新代码:在开始开发之前,你需要拉取远程仓库的最新代码,确保你的代码是基于最新的代码进行开发。
bash 复制代码
git checkout main
git pull origin main
git checkout feature/login
git merge main
  • 这会将远程仓库 main 分支的最新代码合并到你的 feature/login 分支。
  1. 你开发功能并推送代码:你在自己的分支上开发登录功能,并推送代码到远程仓库。
bash 复制代码
# 修改代码
git add .
git commit -m "完成登录表单验证逻辑开发"
git push origin feature/login
  1. 创建 Pull Request (PR) :你和 Alice 分别完成开发后,在代码托管平台上创建 PR,请求将各自的开发分支合并到 main 分支。

  2. 代码审查:你和 Alice 互相审查对方的代码,提出修改意见。

  3. 合并代码 :通过审查后,将 feature/loginfeature/login-alice 分支的代码合并到 main 分支。

  4. 删除开发分支 :合并完成后,删除本地的 feature/loginfeature/login-alice 分支。

bash 复制代码
git branch -d feature/login
git branch -d feature/login-alice

实际工作中不推荐git pull 而是使用git fetch和gitrebase

Git 分支同步实战:git fetchgit rebase 的完美搭配

在团队协作开发中,保持本地分支与远程主分支 (mainmaster) 的同步至关重要。git fetchgit rebase 是完成这一任务的黄金组合,它们可以帮助你优雅地同步代码,避免不必要的合并提交

一、案例背景

假设你正在开发一个名为 feature-branch 的功能分支,而你的同事已经将一些更改推送到了远程主分支 origin/main。你需要将这些更改同步到你的 feature-branch 分支,以确保你的代码基于最新的代码库。

二、同步分支代码的步骤

1. 切换到你的功能分支
bash 复制代码
git checkout feature-branch
2. 拉取远程仓库的所有更新
bash 复制代码
git fetch origin
  • git fetch origin :从远程仓库 origin 拉取所有分支的最新提交,但不会自动合并到你的本地分支。
  • git fetch origin main :如果你只想拉取 main 分支的更新,可以使用这个命令。
3. 将你的本地提交基于远程 main 分支重新排列

当前处在feature-branch分支

bash 复制代码
git rebase origin/main
  • git rebase origin/main :将 feature-branch 分支的本地提交"重新放"在 origin/main 分支的最新提交之上。
  • git pull --rebase origin main :这个命令等同于 git fetch origin main 加上 git rebase origin/main,但更推荐分开执行,以便更好地控制流程。
4. 解决冲突(如果有)

如果在 rebase 过程中发生冲突,Git 会提示你解决冲突。你需要:

  1. 手动编辑冲突文件,解决冲突。
  2. 使用 git add <文件名> 将解决冲突后的文件标记为已解决。
  3. 使用 git rebase --continue 继续 rebase 过程。
5. 推送更新到远程仓库
bash 复制代码
git push origin feature-branch --force-with-lease
  • --force-with-lease:安全地强制推送你的本地分支到远程仓库,确保不会覆盖其他人的提交。

三、为什么不推荐直接 git pull

直接使用 git pull 相当于 git fetch 加上 git merge,如果远程仓库和本地仓库都有新的提交,就会产生一个合并提交,使得提交历史变得臃肿。

示例:

bash 复制代码
git pull origin main
  • 如果远程 main 分支和本地 feature-branch 分支都有新的提交,Git 会自动创建一个合并提交,将两个分支的历史合并在一起。
  • 这种合并提交通常是不必要的,而且会使提交历史变得难以阅读git log很臃肿。

四、git rebase 的优势

  • 保持提交历史的线性git rebase 会将你的本地提交"重新播放"在远程分支的最新提交之上,保持提交历史的线性,更容易阅读和理解。
  • 避免不必要的合并提交git rebase 不会创建合并提交,使得提交历史更加简洁。

视频案例

可以看b站技术蛋老师的视频,很直观清晰
Git工作流和核心原理 | GitHub基本操作 | VS Code里使用Git和关联GitHub


rebase前后的直观图例:

  • 身处master分支 ,使用
    git rebase dev


https://github.com/0voice

相关推荐
枫叶落雨22211 小时前
Git 使用规范指南
git
德育处主任16 小时前
聚沙成塔,三步成书:GitBook极简入门教程
前端·git·电子书
m0_6356474817 小时前
git管理github上的repository
git·github
Jiude17 小时前
基于开源项目开发公司项目,如何同步开源仓库的最新更新(以vben为例)
git·开源·github
PAK向日葵17 小时前
【软件工程】如何使用Git Rebase同步团队开发进度
git·面试
枫叶落雨22220 小时前
git checkout C1解释
git
Dontla20 小时前
git stash介绍(临时保存当前工作目录中尚未提交的修改)
git
黎相思1 天前
Git多人协作
git
一只名叫Me的猫1 天前
Git 常用命令 - 服务器用
git
黎相思1 天前
Git基本操作
git