fluid_27’s blog

勉強した内容をアウトプットするためのブログ

githubのForkってなんぞや?っていう状態から実際に

初学者同士で共同開発してみようという話になり、その過程でまず「gitをクローンする前にフォークして」って言われ、「はい???」

となったので、まずは「フォークとは」というところから始めてみました。

 

 

Forkとは

フォークは、リポジトリのコピーです。

リポジトリをフォークすると、元のプロジェクトに影響を与えずに自由に変更を試すことができます。

最も一般的には、フォークは他人のプロジェクトへの変更を提案するか、

他人のプロジェクトを自分のアイデアの出発点として使用するために使用されます。

 githubドキュメントよりー

https://docs.github.com/ja/github/getting-started-with-github/fork-a-repo

 

はい。ということで共同開発にあたりForkとやらを使おう。ということになったみたいっす。

 

 

で、実際やってみる。

 

実際にFork ~ git clone ~ プルリクするまでの手順

 1. まず、クローンしたい大元のレポジトリがあるgithubのページにいき、ページ右上にある「Fork」のボタンを押す。

f:id:fluid_27:20210504013419p:plain

 

 2. Forkされたレポジトリのページが新しく開かれる。そのレポジトリのURLをコピーする

f:id:fluid_27:20210504013615p:plain       

 3. ターミナルで先ほどコピペしたURLをクローンする。

$ git clone https://github.com/USERNAME/Sample

($ git clone コピーしたURL)

 

 

 

 4.クローンしたディレクトリの場所に移動する

$ cd Sample

(上記のクローンの際に ~USERNAME/Sample としているので、Sample というディレクトリをクローンしていることになります)

※Qiitaやブログなどの記事で、たまにこのcdでディレクトリ移動する手順が抜けてる記事がありますが、初学者の自分はそこで案の定、躓きました(泣)

 

ここでremote -v で確認してみると

$ git remote -v

> origin https://github.com/USERNAME/Sample_FORK.git (fetch)

> origin https://github.com/USERNAME/Sample_FORK.git (push)

 

 5. remoteにupstreamを追加する 

まず、大元のレポジトリのgithubページにいき、レポジトリのURLをコピーする。

(Forkして作られたレポジトリでなく、あくまで大元。自分は一度、間違えてForkされた作られたレポジトリのURLをコピーしてしまいました、、)

f:id:fluid_27:20210504015533p:plain

コピーしたらターミナルで

$ git remote add upstream https://github.com/Original/Sample.git

($ git remote add upstream  コピーしたURL)

 と打つ。

 

で、git remote -v で確認してみると

$ git remote -v > origin https://github.com/USERNAME/Sample_FORK.git (fetch) > origin https://github.com/USERNAME/Sample_FORK.git (push) > upstream https://github.com/Original/Sample.git (fetch) > upstream https://github.com/Original/Sample.git (push) 

 とoriginalとupstream両方設定されているのがわかる。

 

このupstreamを追加するって、つまりどういうこと?

Forkした自分のレポジトリはFork元である大元のリポジトリの変更内容を自動更新しません。

なので、Fork元のリポジトリの最新情報を自分のリポジトリに反映させる必要があります。

http://kik.xii.jp/archives/179

 

f:id:fluid_27:20210504020615p:plain

はい。上記の説明+図が理解に助かります。

 

 

んで、いったん 

 6. ブランチを切ります。

$ git checkout -b feature/test

 

 

もろもろ作業したら、

 7. 変更をプッシュ

$ git add .

$ git commit -m "コメント"

$ git push origin test

 

 8. githubのページでプルリクする

f:id:fluid_27:20210504022137p:plain

 

です。お疲れ様でした。

 

 

ちなみに、

pullする際の手順

まだ、実際にやってないのですが

githubのドキュメントによると

 

 1. fetch

$ git fetch upstream

> remote: Counting objects: 75, done.

・・・

 

 2. マスターブランチに移動

$ git checkout master > Switched to branch 'master'

 

 3. マージ

$ git merge upstream/master

 

https://docs.github.com/ja/github/collaborating-with-issues-and-pull-requests/syncing-a-fork

 という流れで、いけるみたいです。

ま、普段使っているgitとほぼ一緒すな。

 

 

 

 

番外編 間違えてupstreamを設定してしまったら。。

 

upstreamを間違えて追加してしまった。。

初学者である自分は間違えて

$ git remote add upstream 大元となるオリジナルのレポジトリURL

とするところを

$ git remote add upstream ForkしてできたレポジトリのURL

としてしまいました。。

 

そんな慌てん坊な方は

$ git remote rm upstream

 

で、いったん削除して、改めて

$ git remote add upstream 大元となるオリジナルのレポジトリURL

 

$ git remote -v

で確認してupstreamのURLが大元となるレポジトリになっていれば大丈夫。

はい、お騒がせしました!