返回

从代码仓库合入Pull Request

前端

GitHub fork 仓库拉取请求合并全流程

创建拉取请求

在 GitHub 的仓库中,你可以创建一个拉取请求,将你在 fork 仓库中所做的更改合并到原始仓库中。以下是创建拉取请求的步骤:

  • 选择目标仓库:这是你想将更改合并到的原始仓库。
  • 选择基准分支:这是原始仓库中你希望将更改合并到的分支。
  • 选择要合并的分支:这是你在 fork 仓库中包含更改的分支。
  • 填写标题和说明:提供有关你的更改的简洁,并解释你对仓库做出了哪些更改。

代码审查和讨论

一旦你创建了一个拉取请求,仓库维护者和其他协作者就可以对你的更改进行审查和讨论。他们可以发表评论、提出问题并要求修改。

  • 查看修改记录:仔细检查你的更改,确保它们与目标分支兼容。
  • 讨论代码变更:参与评论和讨论,回答问题并解决反馈。
  • 要求修改:如有必要,根据反馈提出更改请求。

合并拉取请求

在代码审查并解决所有反馈意见后,你可以将拉取请求合并到目标分支。有两种合并方式:

合并拉取请求

  • 将本地仓库与远程仓库同步:使用 git fetch 命令从远程仓库获取最新更改。
  • 切换到目标分支:使用 git checkout <target_branch> 命令切换到目标分支。
  • 执行 git merge 命令:使用 git merge <pull_request_branch> 命令将拉取请求分支合并到目标分支。
  • 推送合并结果到远程仓库:使用 git push origin <target_branch> 命令将合并后的更改推送到远程仓库。

重新定位拉取请求

  • 将本地仓库与远程仓库同步:使用 git fetch 命令从远程仓库获取最新更改。
  • 切换到目标分支:使用 git checkout <target_branch> 命令切换到目标分支。
  • 执行 git fetch 命令:使用 git fetch --all 命令获取所有远程分支。
  • 执行 git rebase 命令:使用 git rebase <pull_request_branch> 命令将你的更改重新定位到目标分支。
  • 推送合并结果到远程仓库:使用 git push origin <target_branch> 命令将合并后的更改推送到远程仓库。

处理冲突

如果你在合并拉取请求时遇到冲突,你需要解决这些冲突。

  • 解决冲突:在文本编辑器中打开冲突的文件,并手动解决冲突。
  • 提交解决冲突后的代码:使用 git add <file_name>git commit -m "Fix conflicts" 命令将解决冲突后的代码添加到暂存区并提交。
  • 继续合入过程:按照上述步骤继续合入拉取请求。

完成拉取请求

合并拉取请求后,你就可以完成它了。

  • 合入拉取请求:通过单击 GitHub 界面上的“合并拉取请求”按钮或使用 git merge --no-ff 命令将拉取请求合并到目标分支。
  • 关闭拉取请求:通过单击 GitHub 界面上的“关闭拉取请求”按钮或使用 git pull --rebase 命令关闭拉取请求。

两种合入方式的对比

合并拉取请求

  • 优点:
    • 操作简单
    • 不改变提交历史
  • 缺点:
    • 合并后的提交记录会更乱
    • 容易产生冲突

重新定位拉取请求

  • 优点:
    • 合并后的提交记录更清晰
    • 不容易产生冲突
  • 缺点:
    • 操作相对复杂
    • 会改变提交历史

注意事项

  • 确保在进行拉取请求操作之前,本地仓库和远程仓库是同步的。
  • 在合并拉取请求之前,仔细检查代码是否有冲突。
  • 在处理冲突时,请确保解决所有冲突并提交解决后的代码。
  • 在完成拉取请求后,记得关闭拉取请求。

常见问题解答

  1. 我无法创建拉取请求。该怎么办?

    • 确保你有权限向目标仓库提交拉取请求。
    • 检查你的本地仓库是否与远程仓库同步。
    • 尝试使用不同的浏览器或清除浏览器缓存。
  2. 拉取请求中出现冲突。我该怎么做?

    • 在文本编辑器中打开冲突的文件。
    • 手动解决冲突并保存更改。
    • 将解决冲突后的代码提交到暂存区并再次尝试合并。
  3. 我应该使用合并拉取请求还是重新定位拉取请求?

    • 如果合并记录不重要,且冲突可能性较低,请使用合并拉取请求。
    • 如果合并记录很重要且冲突可能性较高,请使用重新定位拉取请求。
  4. 如何在GitHub中关闭拉取请求?

    • 单击拉取请求页面上的“关闭拉取请求”按钮。
    • 使用 git pull --rebase 命令关闭拉取请求。
  5. 我收到一个拉取请求,但我无法查看更改。该怎么办?

    • 检查拉取请求是否来自受信任的来源。
    • 确保你已将 fork 仓库克隆到本地计算机。
    • 尝试使用不同的浏览器或清除浏览器缓存。