将fork仓库合并到原始仓库

本文详细介绍了如何从Facebook的React仓库fork到个人仓库,接着在本地dev分支进行开发,最后将代码提交并发起MergeRequest到原仓库的过程。包括添加原始仓库源、本地代码提交、合并代码及解决冲突、提交至远程仓库以及发起合并请求等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们举例:从facebook/react.gitfork到自己的仓库yoohoeh/react.git,然后在本地的dev分支开发,现在想将这个分支代码发起合并请求到facebook/react.gitdev分支上。

1. 在本地仓库添加原始仓库源

git remote add upstream github.com/facebook/react.git

添加完之后可以使用git remote -v查看目前的远程仓库指向列表

2. 提交到本地代码仓库

git add .
git commit -m 'code message'

本地暂存代码可以用来恢复代码

3. 本地合并代码并处理冲突

git pull upstream dev

之后git会自动拉取原始仓库新代码和合并代码,若遇到无法无法自动合并的则需要手动处理冲突。

4.提交到自己的远程仓库

git add .
git commit -m 'merge and resolve conflic'

5.发起代码 Merge Request

这里需要根据不同的代码仓库平台做对应的处理,因此不再叙述。

<think>我们正在讨论的是Git中的fork和pullrequest工作流程。用户的问题核心是:fork仓库如何将更改推送到原始仓库(上游仓库)。根据引用内容,fork仓库不能直接推送到原始仓库(除非你有原始仓库的写入权限),而是通过创建pullrequest(PR)的方式请求原始仓库维护者合并你的更改。关键点:1.fork仓库是独立于原始仓库的副本,你拥有fork仓库的完全控制权,但原始仓库通常只有读取权限。2.要将更改合并原始仓库,必须通过pullrequest流程。步骤:1.在GitHub上fork原始仓库,这样你就在自己的账号下创建了一个副本。2.克隆你自己的fork仓库到本地。3.在本地进行修改并提交(最好在单独的分支上进行)。4.将你的更改推送到你自己的fork仓库GitHub上的远程仓库)。5.在GitHub上,从你的fork仓库原始仓库发起pullrequest。6.原始仓库的维护者会审查你的PR,并决定是否合并。引用[1]和[3]都提到了pullrequest是贡献代码的方式,特别是当你没有直接提交权限时[^1][^3]。引用[2]提到了如何添加上游仓库原始仓库)以便同步其变更到你的fork仓库[^2]。因此,回答应围绕如何通过PR流程将更改合并原始仓库。另外,用户的问题中提到了“分支仓库”,但根据上下文,这里更关注的是fork仓库(即派生仓库)与原始仓库的关系。我们将按照以下结构回答:1.解释fork仓库原始仓库的关系。2.详细步骤说明如何通过pullrequest将更改推送到原始仓库。3.注意事项(如同步上游变更等)。同时,根据引用[4]提供的链接,我们可以补充一些最佳实践。注意:用户的问题中提到了“gitpullrequestworkflow”,所以我们要重点描述工作流程。由于问题中要求参考站内引用,我们将引用标记为[^1]、[^2]、[^3]。</think>### Fork仓库提交到原始仓库的完整工作流程 Fork仓库原始仓库的**独立副本**,你拥有完全控制权,但无法直接推送代码到原始仓库(除非被授予权限)。通过 Pull Request (PR) 机制可实现代码贡献,以下是详细流程及原理: --- #### 一、核心关系图解 ```mermaid graph LR A[原始仓库] -->|Fork| B[你的Fork仓库] B -->|克隆| C[本地仓库] C -->|修改/提交| B B -->|创建PR| A A[维护者] -->|审核/合并| A ``` #### 二、分步操作指南 1. **初始化本地环境** - 克隆你的Fork仓库: ```bash git clone https://github.com/你的用户名/仓库名.git cd 仓库名 ``` - 添加上游仓库原始仓库)[^2]: ```bash git remote add upstream https://github.com/原始作者/仓库名.git ``` 2. **开发新功能** - 基于上游最新代码创建分支(避免冲突): ```bash git fetch upstream # 获取原始仓库更新 git checkout -b new-feature upstream/main ``` - 修改代码后提交到**你的Fork仓库**: ```bash git add . git commit -m "添加新功能" git push origin new-feature # 推送到你的Fork仓库 ``` 3. **发起Pull Request** - 在GitHub页面操作: 1. 进入你的Fork仓库 → 点击 **“Pull Request”** → 选择 `new-feature` 分支 2. 填写PR描述(说明修改原因和影响)[^3] - 命令行创建(需GitHub CLI): ```bash gh pr create --base 原始仓库分支 --head 你的用户名:new-feature ``` 4. **维护者处理流程** - 原始仓库维护者收到PR通知 - 审核代码 → 运行测试 → 讨论修改 - 通过后点击 **“Merge pull request”** 合并原始仓库[^1][^3] --- #### 三、关键注意事项 1. **权限控制** - 你只能直接推送代码到**自己的Fork仓库** - 原始仓库的修改必须通过PR由维护者合并[^1] 2. **同步上游更新** - 避免PR因过时被拒绝: ```bash git fetch upstream git merge upstream/main # 合并原始仓库最新代码 git push origin new-feature ``` 3. **分支策略** - **临时分支**:每个功能/修复用独立分支(如 `fix-bug-1`) - **长期分支**:Fork仓库的 `main` 分支仅用于同步上游 - 分支命名规范:`feat/xxx`, `fix/xxx`, `docs/xxx` --- #### 四、工作流优势 | 特性 | 说明 | |--------------------|----------------------------------------------------------------------| | **隔离性** | 你的实验性代码不会污染原始仓库[^1] | | **异步协作** | 维护者可并行审核多个PR,开发者独立工作 | | **权限安全** | 原始仓库代码仅维护者可修改 | | **历史追溯** | PR讨论记录和代码变更永久关联 | > 此流程是GitHub开源协作的**核心机制**,被Linux、React等大型项目广泛采用[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值