如何同步分叉的 GitHub 存储库

如何同步分叉的 GitHub 存储库
如何同步分叉的 GitHub 存储库

保持你的叉子是最新的

保持分叉存储库与原始存储库同步对于维持无缝工作流程至关重要。当您分叉项目、进行更改并提交拉取请求时,保持主存储库中最新提交的更新也很重要。

在本指南中,我们将引导您完成使用已添加到原始存储库的新提交来更新您的分叉的步骤。这可以确保您的分叉保持最新状态,并避免在将来做出贡献时出现任何潜在的冲突。

命令 描述
git remote add upstream 将原始存储库添加为名为“upstream”的远程存储库以跟踪更新。
git fetch upstream 从上游存储库获取更新而不合并它们。
git merge upstream/main 将上游存储库主分支的更改合并到当前分支。
git checkout main 切换到存储库的本地主分支。
git push origin main 将更新的本地主分支推送到 GitHub 上的分支。
cd path/to/your/fork 将目录更改为本地分叉存储库。

解释同步过程

要使分叉存储库与原始存储库保持同步,您可以使用多个 Git 命令。第一个脚本示例使用基本的 Git 命令来实现此目的。通过将原始存储库添加为名为的远程存储库 upstream 用命令 git remote add upstream,您可以跟踪原始来源的更改。接下来,您使用以下命令获取这些更改 git fetch upstream,它会下载提交而不将它们合并到本地分支中。

该过程继续检查您当地的主要分支机构 git checkout main 然后将获取的更改与 git merge upstream/main。这会将原始存储库中的更新合并到您的分支中。最后,您使用以下命令将这些更新推送到您的 GitHub 分支: git push origin main。这些步骤可确保您的分叉与最新更改同步,从而防止进一步贡献时发生冲突。

将分叉存储库与原始存储库同步

使用 Git 命令

# Step 1: Add the original repository as a remote
git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

# Step 2: Fetch the latest changes from the original repository
git fetch upstream

# Step 3: Check out your fork's local main branch
git checkout main

# Step 4: Merge the changes from the original repository into your local main branch
git merge upstream/main

# Step 5: Push the updated local main branch to your fork on GitHub
git push origin main

通过对原始版本的更改来更新您的分叉

使用 GitHub 桌面

# Step 1: Open GitHub Desktop and go to your forked repository

# Step 2: Click on the 'Fetch origin' button to fetch the latest changes

# Step 3: Click on the 'Branch' menu and select 'Merge into current branch...'

# Step 4: In the dialog, select the branch from the original repository you want to sync with

# Step 5: Click 'Merge' to merge the changes into your current branch

# Step 6: Click 'Push origin' to push the updates to your fork on GitHub

将您的分叉与上游存储库同步

使用 Bash 脚本实现自动化

#!/bin/bash
# Script to sync forked repository with the upstream repository

# Step 1: Navigate to your local repository
cd path/to/your/fork

# Step 2: Add the upstream repository
git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

# Step 3: Fetch the latest changes from upstream
git fetch upstream

# Step 4: Merge the changes into your main branch
git checkout main
git merge upstream/main

# Step 5: Push the updates to your fork
git push origin main

让您的前叉与先进技术保持同步

除了基本的 Git 命令之外,还有更高级的技术可以有效管理分叉存储库。一种有用的方法是使用变基而不是合并。虽然合并合并了来自上游存储库的更改,但 rebase 会在来自上游的新提交之上重播您的更改。这可以创建更清晰的项目历史记录。为此,请使用 git fetch upstream, 然后 git rebase upstream/main。解决任何冲突后,您可以使用以下命令推送更改 git push --force

另一种高级技术是设置 cron 作业或 CI/CD 管道来自动执行同步过程。这对于频繁更新的项目特别有用。通过编写 fetch 和 merge 或 rebase 命令的脚本,您可以确保您的 fork 保持更新而无需手动干预。这种自动化可以节省时间并降低重要更新落后的风险。

有关 Fork 同步的常见问题和解答

  1. GitHub 中的分叉是什么?
  2. 分叉是其他人项目的个人副本,允许您自由地进行更改而不影响原始存储库。
  3. 如何从原始存储库获取更新?
  4. 使用 git fetch upstream 从上游存储库下载最新更改。
  5. 合并和变基有什么区别?
  6. 合并合并来自不同分支的更改,而变基则在另一个分支的历史记录之上重新应用您的更改,从而创建线性历史记录。
  7. 如何设置上游遥控器?
  8. 将原始存储库添加为远程存储库 git remote add upstream [URL]
  9. 我可以自动化同步过程吗?
  10. 是的,您可以使用 cron 作业或 CI/CD 管道将其自动化,以定期运行获取、合并或变基命令。
  11. 什么是 cron 作业?
  12. cron 作业是类 Unix 操作系统中基于时间的调度程序,用于在指定时间运行脚本。
  13. 为什么我应该同步我的分叉存储库?
  14. 使您的分叉保持最新可确保与原始项目的兼容性,并有助于避免贡献时发生冲突。
  15. 如何解决 rebase 期间的冲突?
  16. Git 会提示你手动解决冲突,解决后,你可以继续 rebase git rebase --continue
  17. 什么是 git push --force 做?
  18. 它用本地分支强制更新远程分支,这是在 rebase 后必需的,因为提交历史记录已更改。

了解同步技术

除了基本的 Git 命令之外,还有更高级的技术可以有效管理分叉存储库。一种有用的方法是使用变基而不是合并。虽然合并合并了来自上游存储库的更改,但 rebase 会在来自上游的新提交之上重播您的更改。这可以创建更清晰的项目历史记录。为此,请使用 git fetch upstream, 然后 git rebase upstream/main。解决任何冲突后,您可以使用以下命令推送更改 git push --force

另一种高级技术是设置 cron 作业或 CI/CD 管道来自动执行同步过程。这对于频繁更新的项目特别有用。通过编写 fetch 和 merge 或 rebase 命令的脚本,您可以确保您的 fork 保持更新而无需手动干预。这种自动化可以节省时间并降低重要更新落后的风险。

有关 Fork 同步的常见问题和解答

  1. GitHub 中的分叉是什么?
  2. 分叉是其他人项目的个人副本,允许您自由地进行更改而不影响原始存储库。
  3. 如何从原始存储库获取更新?
  4. 使用 git fetch upstream 从上游存储库下载最新更改。
  5. 合并和变基有什么区别?
  6. 合并合并来自不同分支的更改,而变基则在另一个分支的历史记录之上重新应用您的更改,从而创建线性历史记录。
  7. 如何设置上游遥控器?
  8. 将原始存储库添加为远程存储库 git remote add upstream [URL]
  9. 我可以自动化同步过程吗?
  10. 是的,您可以使用 cron 作业或 CI/CD 管道将其自动化,以定期运行获取、合并或变基命令。
  11. 什么是 cron 作业?
  12. cron 作业是类 Unix 操作系统中基于时间的调度程序,用于在指定时间运行脚本。
  13. 为什么