在開發過程中,你可能會需要讓自己的專案繼承另一個專案的某個分支,並且希望當這個分支有更新時,能自動合併到自己的專案中。這篇教學文會用簡單的步驟教你怎麼做到這件事。

需要準備的東西

  1. 兩個 GitHub 專案:

    • 繼承來源的專案(我們叫它 source-repo
    • 目標專案(我們叫它 target-repo
  2. 基本的 Git 和 GitHub 操作知識。

第一步:Fork source-repo 並添加遠端倉庫

首先,先把 source-repo 專案 fork 到你的 GitHub 帳戶,接著把要繼承的分支(這裡假設分支名稱是 feature-branch)添加為 target-repo 專案的一個遠端分支。

在本地端操作如下:

# 克隆 target-repo 專案
git clone https://github.com/你的帳戶名稱/target-repo.git
cd target-repo

# 添加 source-repo 為遠端倉庫
git remote add source-repo https://github.com/你的帳戶名稱/source-repo.git

# 抓取 source-repo 的所有分支
git fetch source-repo

# 檢查 feature-branch 分支
git checkout -b feature-branch source-repo/feature-branch

# 推送 feature-branch 分支到 target-repo
git push origin feature-branch

完成這些步驟後,你的 target-repo 專案就包含了 source-repofeature-branch 分支。

第二步:設置 GitHub Actions 自動合併更新

為了實現當 source-repofeature-branch 分支有更新時自動合併到 target-repo,我們可以使用 GitHub Actions 來自動化這個過程。

target-repo 專案中創建一個 GitHub Actions 工作流程文件 .github/workflows/auto-merge.yml,內容如下:

name: 自動合併 feature-branch 分支

on:
  schedule:
    - cron: '0 * * * *' # 每小時檢查一次
  push:
    branches:
      - feature-branch

jobs:
  merge:
    runs-on: ubuntu-latest
    steps:
      - name: 檢出目標專案
        uses: actions/checkout@v2

      - name: 設置 Git 配置
        run: |
          git config --global user.name 'github-actions[bot]'
          git config --global user.email 'github-actions[bot]@users.noreply.github.com'

      - name: 添加 source-repo 遠端倉庫
        run: git remote add source-repo https://github.com/你的帳戶名稱/source-repo.git

      - name: 抓取 source-repo 的 feature-branch 分支
        run: git fetch source-repo feature-branch

      - name: 合併 source-repo 的 feature-branch 分支到本地 feature-branch 分支
        run: git merge source-repo/feature-branch

      - name: 推送變更
        run: git push origin feature-branch

這個 GitHub Actions 工作流程會每小時檢查一次 source-repofeature-branch 分支是否有更新,並自動將更新合併到 target-repofeature-branch 分支。如果你希望調整檢查頻率,可以修改 cron 表達式。

結論

透過以上步驟,我們成功設置了 target-repo 專案繼承 source-repofeature-branch 分支,並實現了自動合併更新。這樣可以大大減少手動合併的工作量,保持專案的同步性。

希望這篇教學對你有所幫助,如果有任何問題,歡迎在下方留言討論。

---git forkgit fork 教學

更多常用 Docker 技巧

最後修改日期: 2024 年 5 月 27 日

作者