オープンソース(本家)の Gitlab リポジトリ(upstream)を fork し,upstream のアップデートを自身の Github リポジトリ(origin)に手動で取得して同期し,運用する方法の備忘録です.詳しくは こちらの記事 を参照頂きたいのですが,記事内容の違いは本家が Github ではなく Gitlab であるため,fork を手動で行う点です.この方法は Gitlab だけでなく,一般に適用できます.
upstream の対象ブランチは master (永続ブランチ)とし,その純粋なコピーを origin の master で維持する方針とします.
origin では master から分岐した main を永続ブランチとして Github-flow で管理し,main から分岐した feature ブランチ(名前は適宜変更)で開発・修正を行い,Githubのプルリクエストで main にマージします.本家の master がアップデートされたら origin の master に同期し,main に merge します.
空の Github リポジトリを作成
Gitlab のリポジトリと同名の空のリポジトリを Github で作成しておきます.
Gitlab のリポジトリをローカルに取得
Gitlab リポジトリをローカルにクローンします.
git clone git@gitlab.com:<user-group>/<repo>.git
cd <repo>
origin と upstream を登録
Github(origin)と Gitlab(upstream)を登録します.Gitlab リポジトリをクローンしたため,その origin には Gitlab のリポジトリが設定されています.これを Github に変更します.
git remote set-url origin git@github.com:<user>/repo>.git
git remote add upstream git@gitlab.com:<user-group>/<repo>.git
git remote -v
upstream をローカルリポジトリに取得
upstream をローカルリポジトリに取得し,現在のブランチが意図したブランチであることを確認してから merge し,origin に push します.
git fetch upstream
git checkout master
git merge upstream/master
git push origin master
main ブランチを作成し,デフォルトブランチに設定
origin での永続ブランチとして,main ブランチを作成します.
git checkout -b main
git push origin main
この状態では origin (Github)のデフォルトリポジトリは master のままですので,main に変更します.
Github の当該リポジトリにおいて,Settings をクリックして現れる左側のメニューから Branches をクリックします.Default branch に現れる master の右端にある両方向矢印 ⇄
をクリックするとボックスが現れます.その master プルダウンから main を選択し,update
をクリックします.
Gitlab SSH接続エラーへの対応
Ubuntu 20.04LTS でGitlabへのSSH接続において,以下のようなエラーが現れるようになりました.
fatal: unable to access '': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
以下を実行したところ,解決しました.
sudo apt update
sudo apt install --reinstall ca-certificates