GitHub上でフォークしたiDempiereのリポジトリを最新の状態にする方法について調査及び研究し、その成果をまとめています。
iDempiereコミュニティーのリポジトリからフォークする
iDempiereコミュニティーが管理しているGitHubのリポジトリは下記になります。
【フォーク元リポジトリ】https://github.com/idempiere/idempiere
このリポジトリをこのコンテンツでは「フォーク元リポジトリ」と言う事にします。
GitHubのサイトにログインし(※アカウントが無い人はアカウントを作成して下さい)、Forkボタンを押すと、自分のアカウントに「フォーク元リポジトリ」がクローン(clone)されます。
このコンテンツの説明上のシナリオとしては、JPiereというアカウントを作成し、iDempiereのリポジトリをcloneしてフォークしています。
そして、JPiereアカウントにフォークしてきたiDempiereのリポジトリを「フォーク先リポジトリ」と言う事にします。
【フォーク先リポジトリ】https://github.com/jpiere/idempiere
自分のサイトにクローンされているiDempiereのソースコードは、フォークした時点のソースコードです。
このままの状態で日が経つと、iDempiereのソースコードは日々メンテンナンスされていきますので、その分iDempiereのコミュニティーが管理している本家のソースコードと、自分のアカウントにフォークして持ってきたソースコードの状態が乖離していきます。
フォークしたiDempiereのリポジトリをPCにクローンする
GitHub上で、自分のアカウントにフォークして持ってきたiDempiereのリポジトリを、自分のPCにクローンします。Gitをまだインストールされていない方は、先にGitをインストールしてください。
ここでは、JPiereのアカウントにフォークしたiDempiereのリポジトリを、Windows10のCドライブの直下に"src"というフォルダを作成して、クローンして持ってきます。
”src”フォルダの所で、下記のコマンドを実行します。
git clone https://github.com/JPiere/idempiere.git
これで、JPiereアカウントにフォークしてきたiDempiereのソースコードを自分のPCのハードディスク上にさらにクローンしてきた事になります。このコンテンツでは、「フォーク先リポジトリ」から自分のPCのハードディスク上にクローンしてきたリポジトリを「ローカルリポジトリ」という事にします。
【ローカルリポジトリ】C:\src\idempiere
「フォーク元リポジトリ」を、「ローカルリポジトリ」のリモートのリポジトリに加える
git remote add upstream https://github.com/idempiere/idempiere.git
◆[コマンド説明] git remote add リモートリポジトリ名 リポジトリURL
上記のコマンド例では、upstreamという名前で、フォーク元リポジトリである、iDempiereコミュニティーが管理しているリポジトリをリモートのリポジトリとして追加しています。
「フォーク元リポジトリ」の更新を「ローカルリポジトリ」に取り込む
ローカルリポジトリに、iDempiereのコミュニティーが管理している「フォーク元リポジトリ」の更新を取得しマージします。
やり方としてはフェッチする方法と、プルする方法の2つの方法があります。
【補足説明】「プル」と「フェッチ」の違い
「プル」もしくは「フェッチ」を行うと、指定したリモートのリポジトリの内容をローカルリポジトリに取り込む事ができます。プルとフェッチの違いは、ワークツリーの内容が変更されるかどうかにあるようです。プルをした場合、リモートリポジトリの内容がワークツリーまで反映され、フェッチした場合は、ワークツリーには反映されないとの事です。なので、フェッチした場合は、マージする必要があります。
「プル = フェッチ + マージ」という表現式があるようです。
どちらを行うにも、まずはmasterブランチに切り替えておきましょう!!
git checkout master
【方法1】フェッチする方法
git fetch upstream
git merge upstream/master
【方法2】プルする方法
git pull upstream master
◆[コマンド説明] git pull リモートリポジトリ名 ブランチ名
上記のコマンド例では、upstreamという名前でフォーク元リポジトリである、iDempiereコミュニティーが管理しているリポジトリをリモートリポジトリとして登録してある前提です。
フォーク先リポジトリにプッシュする
ローカルリポジトリにフォーク先リポジトリの更新分を取り込んだら、それをフォーク元リポジトリにプッシュします。
git push origin master