目的
学習用の更新できないリポジトリをクローンし、自分のリポジトリに反映する方法整理する為作成しました。
本来なら修正した内容のプルリクエストを作成してマージする流れなので、自分用のメモです。
以下を整理します
- クローンとは何なのか
- クローン実行後の状態
- push先を変更する理由
クローンとは何なのか
リモートリポジトリの全内容を、新規でローカルリポジトリにそのままコピーしてくること
コードなどのファイル、コミット履歴、ブランチ情報などが含まれている
フォークを使ったクローンとの違い、どちらを使うか
フォーク
コピー元リポジトリを自分のリモートリポジトリにコピーすること。学習目的以外にOSSの改修でも使用される。
フォーク後、ローカルへクローンすることでpush先が自分のリポジトリに切り替わる。
利点 ⇛ push先のoriginを変更する作業が不要になる
注意点 ⇛ フォークしたことがクローン元に通知される
今回は通知が不要なのでフォークしない方法で作業しました
クローン実行
1. GitHub上の操作:クローンしたいリポジトリのアドレスをコピー
- クローンしたいリポジトリのページに移動し、ファイルの一覧の上にある「<> Code」をクリック
- 「HTTPS」タグのURLの右側をクリックしてコピー
2. ターミナル上の操作:クローン実行
- クローン先のディレクトリに移動
- リポジトリをローカルリポジトリにクローン
$ git clone https://github.com/他のユーザー/他のリポジトリ.git
確認: git clone
実行後の状態
- ローカルリポジトリ(.gitディレクトリ)が作成され、コミット履歴、ブランチ情報などがコピーされる
- クローン元のリポジトリ名のついたディレクトリが、内容とともにコピーされる
- クローン元のリモートリポジトリが、originという名前でfetch元とpush先に登録される
$ git remote -v
origin https://github.com/他のユーザー/他のリポジトリ.git (fetch)
origin https://github.com/他のユーザー/他のリポジトリ.git (push)
分かった事
このままpushしたら内容がクローン元に反映されてしまうので、push先を変更する。
コミット後の履歴に知らない履歴があっても、クローン元の履歴をローカルにコピーした為であり、push先を変えればクローン元に反映されない。
3. GitHub上の操作:自分のgithubにリポジトリを作成
- マイページのヘッダー右上隅で「+」を選択し、「New repository」をクリック
- 「Repository name」を作成
- 画面下、緑色の「Create repository」をクリック
4. ターミナル上の操作:作成したoriginをpush先に変更
$ git remote set-url origin https://github.com/自分のユーザー名/自分のリポジトリ名.git
リモートリポジトリのpush先を変更するコマンド。
push先のoriginを、クローン元のリモートリポジトリから自分のリモートリポジトリに変更する。
確認:push先を変更する理由
ここで代わりに
$ git remote add origin
とすると、originは既に登録済みと言われてエラーになる
error: remote origin already exists
上記は新規にリモートリポジトリを追加するためのコマンドで、クローン元をoriginに登録済みであることが原因
5. push先が変更されていることを確認
$ git remote -v
origin https://github.com/自分のユーザー名/自分のリポジトリ名.git(fetch)
origin https://github.com/自分のユーザー名/自分のリポジトリ名.git (push)
6. コードを修正
7. 変更をリモートリポジトリに反映
$ git add .
$ git status
$ git commit -m "修正内容のコミットメッセージ"
$ git log
$ git push origin main
参照URL
https://docs.github.com/ja/repositories/creating-and-managing-repositories/cloning-a-repository
https://docs.github.com/ja/get-started/getting-started-with-git/managing-remote-repositories
https://qiita.com/nt-7/items/c5ea999a2638e03ee418
https://docs.github.com/ja/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo