2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Githubのforkとupstreamの操作について

Last updated at Posted at 2023-08-17

目的

自己学習中に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が進んでいきます。
image.png

学び

Git,Githubのforkとupstreamの基本操作。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?