【iDempiere Lab】GitHubでフォークしたiDempiereのリポジトリを最新の状態にする

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