【Git基礎】GitHubでテンプレートプロジェクトを利用するときの手順と注意点

目次

はじめに

GitHubなどで公開されているテンプレートプロジェクトを git clone して開発を始めるときは、
元のリポジトリの履歴やリモート設定がそのまま残っています。
そのため、最初に 「リモートとの紐づけを解除して、新規に管理し直す」 という作業が必要になります。

以下に、元の履歴を引き継ぐ場合と、完全に新規リポジトリとして定義する場合の手順をまとめます。

前提

前提として、以下のようなコマンドを実行し、何らかのテンプレートプロジェクトをクローンしており、ターミナルでそのフォルダに移動しているものとします。

git clone https://github.com/someone/template-project.git
cd template-project

元のコミット履歴を引き継ぐ場合

元のコミット履歴も引き継ぎたい場合は以下の手順で作業を進めていきます。

接続先リモートリポジトリ情報の削除

  1. まずは以下コマンドで現在紐づいているリモートリポジトリの情報を取得します
git remote -v
  1. git remote -v実行時、先頭に表示されているリモートブランチ名を確認します
    (多くの場合、デフォルト値の「origin」となっているはずです)
  2. 以下コマンドで、接続先として設定されているリモートリポジトリの情報を削除します
    (originの位置は、2. で確認したリモートブランチ名に差し替えてください)
git remote remove origin

これで、リモート設定は削除(配布元と「つながりを持たない」状態)となり、
誤って配布元に git push するような心配はなくなります。

配布元の更新を取り込みたい場合

配布元テンプレートが更新された場合に、更新を自身のプロジェクトにも取り込みたい場合は少し対応が異なります。

上記ではgit remote removeで、配布元のリモート情報を削除していますが、以下のようなコマンドで名前を変えて残しておくこともできます。

git remote rename origin upstream

上記は、元々 origin という名前であったブランチを upstream という名前に変更しています。

これによって、配布元との接続情報は残り、後に配布元が更新されたときに、
git fetch upstream で更新を取り込める状態になります。

この場合は、自身のリポジトリをoriginなどで新規追加しておくと良いと思います

git remote add origin <リモートリポジトリURL>

最終的には、

  • origin = 自分のリポジトリ(push 先)
  • upstream = 配布元リポジトリ(更新を取り込む用)

という構成になります。

上記のような構成で更新を行う際の流れは以下のようになります

# 配布元から最新を取ってくる
git fetch upstream
# 自分の main に切り替え
git checkout main

# マージ(または rebase)
git merge upstream/main
# あるいは
git rebase upstream/main

# 統合した結果を自分のリポジトリへ push
git push origin main

自分用のリポジトリの作成・登録

  1. 自分のGitHub(またはGitLab等)に新しいリポジトリを作成

2. 新しいリモートを登録

git remote add origin https://github.com/yourname/yourproject.git

3. プッシュ

git push -u origin main
# ブランチ名が master の場合は main を master に置き換える

→これで履歴を残したまま、自分の管理下で開発できます。

Gitを削除して「新規リポジトリ」として始める場合

履歴を引き継がず、自分の最初のコミットから始めたい場合は以下の手順で操作します。

既存のGit管理を削除

rm -rf .git

新しくGitを初期化

git init
git add .
git commit -m "Initial commit (based on template)"

自分のリポジトリに紐付け

git remote add origin https://github.com/yourname/yourproject.git
git branch -M main   # 必要ならブランチ名をmainに統一
git push -u origin main

→これで履歴は完全にリセットされ、「自分のプロジェクトの最初のコミット」からスタートできます。

補足:配布元への影響について

結論から言うと、上述の各種対応は、配布元に一切影響しません
内容について以下にまとめます。

git clone と権限

  • git clone の時点で、配布元リポジトリ(GitHub 上の公開リポジトリ)はただのコピー元です。
  • clone するとローカルに「コピー」が作られますが、基本的に配布元の操作権限はありません。

影響が出るケースは、 配布元のリポジトリに「push」できる権限を持っている場合 です。
 ・例えば、権限がある状態で git push origin main を実行すると、配布元が更新されます。
 ・ただし、普通は fork していない限り「push権限」はありません
  (public repo を clone しただけでは権限なし)

リモート削除・変更について

  • git remote remove origingit remote add origin ... などの操作は、
    自分のローカルリポジトリの「接続先情報」を変更しているだけ です。
  • 配布元には通知も送られず、影響は全くありません。

.git ファイルの削除

  • .git フォルダを削除すると、ローカルで「履歴の記録」が消えるだけです。
  • 配布元とは無関係なので、元のリポジトリに何かが反映されることはありません。

参考になるページ

その他、参考になるページを以下にまとめます。

Qiita
Githubに保存したHTMLテンプレートを開発ごとにcloneして複製利用したい - Qiita やりたいこと ウェブサイトを制作するとき、毎回ファイルを一から準備するのは面倒です。 そこで、githubにHTMLテンプレートのリポジトリを作っておき、プロジェクトのごと...
Qiita
Git ローカルリポジトリをリモートリポジトリの紐付けを解除する - Qiita 方法 リポジトリ内部で下記コマンドを実行して現在のリモートリポジトリアドレスを表示する。 $ git remote -v 前のコマンドの出力に記載されているリモートブランチ名をコ...

おすすめの本:

おすすめの本:


ここまでお読みいただき、ありがとうございます。
今回紹介した内容が、皆さんの開発のヒントになれば幸いです。

記事が役に立ったと感じていただけましたら、OFUSE にてご支援いただけますと今後の運営の励みになります。

OFUSEで応援を送る

今後もゲーム制作に関するさまざまな情報や、そこから得られた知見を共有していく予定ですので、引き続き当ブログをよろしくお願いいたします。

  • URLをコピーしました!
目次