目的
自己学習中にgitやgithubの操作に慣れるためにやったことの備忘録。
今日はforkとupstreamについて。
参照元
[1] 'GitHubでFork/cloneしたリポジトリを本家リポジトリに追従する', https://qiita.com/xtetsuji/items/555a1ef19ed21ee42873, 2019
[2] 'Gitのフォークとクローンの違いをわかりやすく', https://qiita.com/morioka1206/items/6f777c060b88f4a7f3ce, 2021
[3] 技術ブログ, http://kik.xii.jp/archives/179 ,2012
forkとcloneの違い [2]
cloneはリモートレポジトリをローカルレポジトリに"複製"。複製だと、そのレポジトリ自身は自分の物ではなく複製元のままなので、権限が無いと編集できない。
forkは他人のリモートレポジトリの自分のアカウントへのコピペ。コピーなので、変更しても元のレポジトリーに反映されることはなく、自由に編集できる。
そのため、他人のレポジトリの編集手順として、[3]
1.github上で他人のレポジトリをfork(自分のレポジトリにコピペ, github上で実施)
2.git cloneでコピペしたレポジトリーをローカルに複製
3.ブランチ作成して編集してcommitしてpushして、、、
fork内容の編集、upstreamの保存[1]
upstreamとして保存することで、fork先の内容が変更された際に、更新内容をpullで持ってこれるようになります。
簡単にコードを載せますが、[1]の方が詳しく書いております。
windows11でGit Bash上で操作。
まず、他人のレポジトリーから自分のアカウントにforkしたtwitter_bert_2304_forkレポジトリをローカルにクローンします。(git@~は自分のアカウントのforkしたレポジトリ)
$ git clone git@github.com:GoGoGonda/twitter_bert_2304_fork.git
ブランチを確認します。デフォルトの状態になっています。
forkするときにmainブランチのみを持ってきています。
$ git branch -a
* main
remotes/origin/HEAD -> origin/main
remotes/origin/main
次にupstreamを設定します。設定した時には何も反応が返ってきませんでした。
(fork元のアカウント情報は[fork元~]として以下書いています。)
$ git remote add upstream [fork元のssh]
ここでbranchを確認すると先程と何も変わっておらず。
ただリモートレポジトリでは反映されています。
$ git remote -v
origin git@github.com:GoGoGonda/twitter_bert_2304_fork.git (fetch)
origin git@github.com:GoGoGonda/twitter_bert_2304_fork.git (push)
upstream [fork元のssh] (fetch)
upstream [fork元のssh] (push)
また[1]に載っているとおり、fetchすることでブランチを確認することが出来ました。
この時、fork元の全部のブランチが新しく追加されました。
$ git fetch upstream
From [fork元]
* [new branch] branchA -> upstream/branchA
* [new branch] main -> upstream/main
$ git branch -a
* main
remotes/origin/HEAD -> origin/main
remotes/origin/main
remotes/upstream/branchA
remotes/upstream/main
fork元へpull requestを送る
ローカルレポジトリでの変更内容をfork元へ反映させます。
まず、fork元の最新の状態をpullします。
$ git pull upstream main
今回はtxtファイルを一つ作成し、この変更を反映させました。
$ vim test1.txt
$ git add .
$ git commit -m 'practice fork'
pushしてリモートレポジトリに反映させます。
$ git push origin main
あとはgithub上の操作で、自分のレポジトリー上のPull requestsからNew pull requestを押すと、fork元に移りpull requestが進んでいきます。
学び
Git,Githubのforkとupstreamの基本操作。