我假设你所说的“Git补丁”是指
git format-patch
和
git apply
。Github PR使用这些工具吗?不使用。
Git补丁工具用于当某些原因导致您无法访问某人的存储库时。它们最常见的用途是基于电子邮件的工作流,使用
git am
等工具来管理通过电子邮件发送的补丁。接收您的补丁的人可以使用它们来重建您的历史记录。这实际上是推送、拉取和获取命令的笨拙替代品。
Github PR使用正常的Git分支和合并命令(或rebase)。您将分支的完整历史记录推送到Github,然后由Github为您执行合并。您也可以自己执行它们。如果您单击“查看命令行说明”,Github将向您提供要运行的等效命令。
![enter image description here](https://istack.dev59.com/O6jhE.webp)
我将解释每个命令。
步骤1:从您的项目存储库中获取更改并进行测试。
- git fetch origin
- git checkout -b issue/#1761 origin/issue/#1761
- git merge master
Git不会在未经您同意的情况下与网络通信。git fetch origin有效地下载名为“origin”的远程存储库的更新快照。在这种情况下,它是Github上的存储库。
现在,您可以检出用于PR的本地分支。在这种情况下,它是issue/#1761。origin/issue/#1761是您的“远程跟踪分支”,即您上次提取时分支issue/#1761所在位置的本地快照。
然后,您将master合并到本地版本的issue/#1761中,以使其保持最新状态。现在,您可以对其进行测试,以确保它与最新版本的master一起正常工作。奇怪的是,Github没有执行此来自master的更新的最后一步。
第二步:合并更改并在GitHub上更新。
- git checkout master
- git merge --no-ff issue/#1761
- git push origin master
现在分支已经更新,您可以检出本地的master
分支,使用--no-ff
合并您本地的issue/#1761
版本以确保即使可以快进,也会有一个合并提交, 然后将更改推送到Github的master
分支。
你不需要Github来做这件事。你可以使用ssh搭建自己的远程Git服务器
(设置方法)。虽然它没有所有功能,也没有PR界面,但你可以给人们ssh登录权限进行推送、拉取和所有基本的远程分支合并操作。
Github使用普通的Git合并工具,尽管可能经过了大规模修改以扩展规模。Github带来的主要是一种简单的方法,让每个人都可以从中央远程存储库推送和拉取,并添加标准化的身份验证、审核和操作流程。
而Github并不是唯一一个提供额外流程工具的托管服务。还有Gitlab、Bitbucket和其他Git托管服务,以及各种独立服务器,如Gitea和GitBucket。
git format-patch
和git apply
这样的工具? - Schwern