惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
Webroot Blog
Webroot Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Threat Research - Cisco Blogs
V2EX - 技术
V2EX - 技术
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
Recorded Future
Recorded Future
S
Schneier on Security
I
InfoQ
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The GitHub Blog
The GitHub Blog
S
Security @ Cisco Blogs
O
OpenAI News
W
WeLiveSecurity
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
Simon Willison's Weblog
Simon Willison's Weblog
人人都是产品经理
人人都是产品经理
Cloudbric
Cloudbric
The Last Watchdog
The Last Watchdog
The Hacker News
The Hacker News
Google Online Security Blog
Google Online Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
NISL@THU
NISL@THU
T
Tailwind CSS Blog
V
Visual Studio Blog
PCI Perspectives
PCI Perspectives
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
D
DataBreaches.Net
B
Blog RSS Feed
N
News and Events Feed by Topic
N
News and Events Feed by Topic
H
Heimdal Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
腾讯CDC
Latest news
Latest news
V
Vulnerabilities – Threatpost
Hacker News: Ask HN
Hacker News: Ask HN
WordPress大学
WordPress大学
V
V2EX
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Register - Security
The Register - Security
Help Net Security
Help Net Security

博客园 - xiashengwang

Rocky Linux 9 安装docker Rocky Linux 9 与Centos区别,以及软件安装dnf命令 《Linux 基础点滴》:(17)SSH 密钥生成与管理 – 免密登录的利器 Linux服务器安全登录:从入门到实践 putty 基础 《Linux 基础点滴》:(16)firewalld 防火墙管理命令 《Linux 基础点滴》:(15)用户管理 – 创建、删除、权限与 sudo 《Linux 基础点滴》:(14)定时任务 – 用 crontab 自动化 《Linux 基础点滴》:(13)文本编辑入门 – 使用 Vim 《Linux 基础点滴》:(12)tldr – 简化版命令手册 《Linux 基础点滴》:(11)系统信息与资源监控 – 掌握服务器状态 《Linux 基础点滴》:(10)压缩与打包 – tar 的艺术 《Linux 基础点滴》:(9)查找与过滤 – find, grep, 管道 《Linux 基础点滴》:(8)网络基础 – 查看 IP、连通性与端口 《Linux 基础点滴》:(7)进程管理 – 查看与控制运行中的程序 《Linux 基础点滴》:(6)文件权限与所有者 – 保护你的文件 《Linux 基础点滴》:(5)文件与目录操作 – 增删改查必会命令 《Linux 基础点滴》:(4)磁盘空间查看 – df 和 du 的妙用 《Linux 基础点滴》:(3)Linux 文件系统概览 – 一切皆文件 《Linux 基础点滴》:(2)SSH 连接与基础命令 – 从登录到第一次操作 《Linux 基础点滴》:(1)初识 Linux 大家族 – 发行版分类与选择 docker学习(7)-docker compose 文件 docker学习(11)- 容器的日志(log) docker学习(10)-利用Github Action 自动化部署 docker学习(9)-Docker Swarm + Nginx 跨机器负载均衡 docker学习(8)-从 Windows 开发到 Linux 部署 docker学习(6)-数据持久化与网络通信 学会 Git Tag,让版本管理不再混乱 docker学习(5)-Dockerfile docker学习(4)-Docker常用命令 docker学习(3)-一个简单的例子 docker学习(2)-安装 docker学习(1)-基本概念 Github 使用 Self-hosted Runner 实现服务器自动化部署 Git Rebase vs Git Merge:深入理解与实战选择 Git 系统学习教程:从零到团队协作 AI学习笔记(2)-OpenClaw安装 windbg分析dmp文件 docker desktop 和 Vmware冲突的解决办法
github创建分支 + Pull Request 合并
xiashengwang · 2026-04-15 · via 博客园 - xiashengwang

2026-04-15 17:50  xiashengwang  阅读(49)  评论()    收藏  举报

整体流程

  1. 在本地从 main 分支创建 dev 分支,并推送到 GitHub
  2. 从 dev 分支创建 feature/update-home 分支,修改代码
  3. 推送 feature/update-home 分支到 GitHub
  4. 在 GitHub 上创建 Pull Request:feature/update-home → dev,合并
  5. 在 GitHub 上创建 Pull Request:dev → main,合并(触发自动部署)
  6. 本地同步最新代码

第一步:在本地创建 dev 分支并推送

打开 PowerShell,进入项目目录:

cd D:\flask-ci-demo

确保当前在 main 分支且是最新代码:

git checkout main
git pull origin main

从 main 创建 dev 分支:

git checkout -b dev

将 dev 分支推送到远程仓库(GitHub):

git push origin dev

现在 GitHub 上就有了 dev 分支。

第二步:从 dev 创建功能分支 feature/update-home

git checkout dev
git pull origin dev          # 确保 dev 是最新的
git checkout -b feature/update-home

第三步:修改代码(模拟添加功能)

编辑 app.py,例如修改首页返回的消息:

@app.route('/')
def hello():
    return f'{greeting} from Docker and CI! (Feature branch update)'

保存文件。

第四步:提交并推送功能分支

git add app.py
git commit -m "Update home page message"
git push origin feature/update-home

第五步:创建 Pull Request 合并到 dev

  1. 打开浏览器,进入你的 GitHub 仓库页面。
  2. 点击 Pull requests 标签 → New pull request。
  3. base 选择 dev,compare 选择 feature/update-home。
  4. 点击 Create pull request,填写标题(如 “Update home message”),然后创建。
  5. 点击 Merge pull request → Confirm merge。
  6. 合并后,点击 Delete branch 删除远程的 feature/update-home(可选)。
  7. 本地删除feature/update-home
git checkout dev
git branch -d feature/update-home

第六步:同步本地 dev 分支

回到 PowerShell,拉取最新的 dev(包含刚才的合并):

git checkout dev
git pull origin dev

第七步:创建 Pull Request 从 dev 合并到 main

  1. 回到 GitHub 仓库页面,再次点击 New pull request。
  2. base 选择 main,compare 选择 dev。
  3. 点击 Create pull request,标题例如 “Release dev to main”。
  4. 点击 Merge pull request → Confirm merge。

第八步:自动部署

由于你之前配置的 GitHub Actions 监听 main 分支,合并后会触发自动构建和部署。等待 Actions 完成。

第九步:验证部署

打开浏览器访问 http://你的服务器IP:5000,应该看到新的消息 (Feature branch update)。

第十步:本地同步 main 分支

git checkout main
git pull origin main

现在你的本地 main 和 dev 都是最新的。

第十一步:保护 main 分支

保护main分支,不能被update,delete,只能通过pull request的方式吧代码合并到main分支。这是基于对生产代码主线分支的保护。这个功能需要项目是public项目,或者账号是github team账号(付费)。我用一个public的项目来演示如何保护main分支。
github 开发项目主页 -> Settings -> Branches-> Branch protection rules -> Add branch ruleset
image
image
以下这几个必须勾上。
image
image
image
点Create就可以了。

之后,修改source就不能push到main了,只能通过github的request来合并。
image

总结命令速查

操作场景 执行命令 / 操作
从 main 创建 dev git checkout -b dev → git push origin dev
从 dev 创建 feature git checkout -b feature/xxx
推送 feature 到远程 git push origin feature/xxx
合并 feature 到 dev GitHub PR 操作
拉取最新 dev 代码 git checkout dev → git pull origin dev
合并 dev 到 main GitHub PR 操作
拉取最新 main 代码 git checkout main → git pull origin main