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

news/2025/2/23 6:36:56

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

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

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

  • 新建仓库复制https

  • 在这里插入图片描述

  • git init

  • git remote add origin 粘贴https

一、推送代码到远程仓库

  1. 查看远程仓库信息:使用 git remote -v 命令查看远程仓库的信息。
git remote -v
  • 你会看到类似以下的输出:
origin  https://github.com/company/project.git (fetch)
origin  https://github.com/company/project.git (push)
  • 这表示你的本地仓库已经与远程仓库 origin 关联。
  1. 推送代码:使用 git push 命令将本地仓库的代码推送到远程仓库。
git push origin feature/login
  • 这会将本地仓库的 feature/login 分支推送到远程仓库,并在远程仓库创建一个同名的分支。
  1. 查看远程仓库:在代码托管平台 (例如 GitHub、GitLab) 上,找到你刚刚推送的分支 feature/login,确认代码已经成功推送。

二、团队协作场景模拟

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

  1. Alice 克隆仓库并创建分支:Alice 克隆远程仓库到本地,并创建自己的开发分支 feature/login-alice
git clone https://github.com/company/project.git
cd project
git checkout -b feature/login-alice
  1. Alice 开发功能并推送代码:Alice 在自己的分支上开发登录功能,并推送代码到远程仓库。
# 修改代码
git add .
git commit -m "Alice: 完成登录表单样式开发"
git push origin feature/login-alice
  1. 你拉取最新代码:在开始开发之前,你需要拉取远程仓库的最新代码,确保你的代码是基于最新的代码进行开发。
git checkout main
git pull origin main
git checkout feature/login
git merge main
  • 这会将远程仓库 main 分支的最新代码合并到你的 feature/login 分支。
  1. 你开发功能并推送代码:你在自己的分支上开发登录功能,并推送代码到远程仓库。
# 修改代码
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 分支。

git branch -d feature/login
git branch -d feature/login-alice

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

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

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

一、案例背景

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

二、同步分支代码的步骤

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

当前处在feature-branch分支

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. 推送更新到远程仓库
git push origin feature-branch --force-with-lease
  • --force-with-lease:安全地强制推送你的本地分支到远程仓库,确保不会覆盖其他人的提交。

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

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

示例:

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

git_rebase__156">四、git rebase 的优势

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

视频案例

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


rebase前后的直观图例:

  • 身处master分支,使用
    git rebase dev
    在这里插入图片描述

在这里插入图片描述


https://github.com/0voice


http://www.niftyadmin.cn/n/5861506.html

相关文章

LeetCode 热题 100_搜索插入位置(63_35_简单_C++)(二分查找)(”>>“ 与 “/” 对比)

LeetCode 热题 100_搜索插入位置&#xff08;63_35&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;二分查找&#xff09;&#xff1a; 代码实现代码实现&#xff08;思路一&#xff08;二分查找&#xff09…

2025年2月一区SCI-海市蜃楼搜索优化算法Mirage search optimization-附Matlab免费代码

引言 本期介绍了一种基于海市蜃楼物理原理的元启发式优化算法——海市蜃楼搜索优化算法Mirage search optimization&#xff0c;MSO。该算法于2025年2月在线发表在JCR 一区、中科院2区SCI期刊 Advances in Engineering Software 海市蜃楼是一种常见的物理现象。海市蜃楼的形成…

视觉分析之边缘检测算法

9.1 Roberts算子 Roberts算子又称为交叉微分算法&#xff0c;是基于交叉差分的梯度算法&#xff0c;通过局部差分计算检测边缘线条。 常用来处理具有陡峭的低噪声图像&#xff0c;当图像边缘接近于正45度或负45度时&#xff0c;该算法处理效果更理想。 其缺点是对边缘的定位…

数字人面试

rnn作用 循环神经网络&#xff08;RNN&#xff09;是一种深度学习模型&#xff0c;特别适用于处理序列数据。以下是RNN的主要作用&#xff1a; 序列建模&#xff1a;RNN能够处理任意长度的序列数据&#xff0c;这使得它们在时间序列分析、语音识别、语言模型等任务中非常有用。…

2025最新面试自用题库---面试使用

2025最新面试自用题库---面试使用 1、css中如何实现水平垂直居中方法一&#xff1a;flex&#xff1a;方法二&#xff1a;绝对定位margin:auto:方法三&#xff1a;已知子元素宽高(200*200) 绝对定位 负margin方法四&#xff1a;已知子元素宽高(200*200) 绝对定位 calc方法五…

[AI相关]生成视频-第一个项目,20k星开源MoneyPrinterTurbo

还是之前文章介绍过地几个工具之一 [AI相关]各平台AI使用对比&#xff0c;包含大模型学习&#xff0c;生成视频等-CSDN博客 问问AI其结构&#xff0c;框架等&#xff0c;虽然不太完全对&#xff0c;但真地DeepSeek已经回答得很好了&#xff1a; 重点关注就两个类 video_eng…

JavaE E基础之 Tomcat与Http (上)

目录 1.Java WEB前奏 1.1. C/S 结构 1.2. B/S 结构 1.3. 静态网页和动态网页 1.4. 常见的网页 1.5. Web 服务器 2. Tomcat 安装(熟练) 2.1. Tomcat 概述 2.2. Tomcat 的作用 2.3 Tomcat 安装 2.4. Tomcat 测试 3. Tomcat 分析(熟练) 3.1. Tomcat 目录结构 3.2. Tomc…

Linux----Makefile基础

Makefile 是自动化构建工具 make 的配置文件&#xff0c;用于定义编译规则和依赖关系&#xff0c;实现高效增量编译。 初识makefile 1. 什么是 make&#xff1f; 定义&#xff1a; make 是一个命令行工具&#xff08;可执行程序&#xff09;&#xff0c;用于解析并执行 Makef…