🗝️

Gitコマンド入門::clone(fetch,pull,push,--no-track)「第四十七回」

2021/03/16に公開

みなさんこんにちは! 今回は何もないところから、前回の環境を作成してみましょう! やり方もいろいろあると思いますが、今回は、fetch と、branch コマンドで環境作成してみます。その他、pull や、clone などでも勿論可能ですから、余裕のある人は、是非、お試しください。今回は私としては珍しく、一番オーソドックスなやり方で学習しますね。

前回の記事はこちらから!

https://zenn.dev/shiozumi/articles/d19268dc797db7

git本家本元の情報はこちらから!

https://git-scm.com/book/ja/v2

それでは今日は、前回の学習用環境を、fetch します!

$ mkdir func0047 && cd $_
// フォルダー作成と移動を同時に実行、
// 第47回なので、func0047 命名!

$ git init
// 毎度のイニシャル!

$ git remote add origin https://github.com/shiozumi-makoto/20210316_2.git
// リモートリポジトリーは、前回、第四十六回のものを使います!

$ git remote -v
origin  https://github.com/shiozumi-makoto/20210316_2.git (fetch)
origin  https://github.com/shiozumi-makoto/20210316_2.git (push)
// 一応、確認して置きましょう!
// origin と、GitHubのリポジトリーのURLが、
// 紐づいていれば、設定完了です!

git fetch ※最初は省略形で、fetchします!

  1. git fetch origin main ・・・こちらがフルコマンドの場合ですね!
  2. git fetch origin temp_1 ・・・こちらがフルコマンドの場合ですね!
$ git fetch
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/shiozumi-makoto/20210316_2
 * [new branch]      main       -> origin/main
 * [new branch]      temp_1     -> origin/temp_1

$ git branch -avv
  remotes/origin/main   1bd77d3 1st
  remotes/origin/temp_1 1bd77d3 1st
  
$ git branch main origin/main
Branch 'main' set up to track remote branch 'main' from 'origin'.
// リモートmainブランチから、ローカルmainブランチを作成して、
// リモート追跡remotes/origin/mainブランチとの紐づけを行います。

$ git branch temp_1 origin/temp_1
Branch 'temp_1' set up to track remote branch 'temp_1' from 'origin'.
// リモートtemp_1ブランチから、ローカルtemp_1ブランチを作成して、
// リモート追跡remotes/origin/temp_1ブランチとの紐づけを行います。

$ git branch -avv
  main                  1bd77d3 [origin/main] 1st
  temp_1                1bd77d3 [origin/temp_1] 1st
  remotes/origin/main   1bd77d3 1st
  remotes/origin/temp_1 1bd77d3 1st
// これで、前回と同じ環境になりましたね!

git branch --no-track temp_2 origin/temp_1

今度は、temp_2 を作成するときに、トラッキングしないようにブランチを作成してみます。

$ git branch --no-track temp_2 origin/temp_1
$ git branch -avv
  main                  1bd77d3 [origin/main] 1st
  temp_1                1bd77d3 [origin/temp_1] 1st
  temp_2                1bd77d3 1st <!-- これで、紐づけされていませんね!
  remotes/origin/main   1bd77d3 1st
  remotes/origin/temp_1 1bd77d3 1st

git branch --set-upstream-to=origin/temp_1 temp_2

では、後から、上流ブランチの設定を追加してみましょう!

$ git branch --set-upstream-to=origin/temp_1 temp_2
$ git branch -avv
  main                  1bd77d3 [origin/main] 1st
  temp_1                1bd77d3 [origin/temp_1] 1st
  temp_2                1bd77d3 [origin/temp_1] 1st <!-- 設定完了!
  remotes/origin/main   1bd77d3 1st
  remotes/origin/temp_1 1bd77d3 1st

さらに、前々回のリポジトリーも追加します!

$ git remote add Rep0045 https://github.com/shiozumi-makoto/20210316.git
// 名称は、Rep0045 としました!

$ git remote -v
Rep0045 https://github.com/shiozumi-makoto/20210316.git (fetch)
Rep0045 https://github.com/shiozumi-makoto/20210316.git (push)
origin  https://github.com/shiozumi-makoto/20210316_2.git (fetch)
origin  https://github.com/shiozumi-makoto/20210316_2.git (push)
// 2つ目のリポジトリが追加されているのが分かりますね。

$ git fetch Rep0045
warning: no common commits
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/shiozumi-makoto/20210316
 * [new branch]      main       -> Rep0045/main
 * [new branch]      temp       -> Rep0045/temp
 * [new branch]      temp_1     -> Rep0045/temp_1
 // fetch したら3つほど、リモート追跡ブランチが作成されました。
 // 勿論、みなさんの環境によって、異なりま~す!
 
$ git branch -avv
  main                   1bd77d3 [origin/main] 1st
  temp_1                 1bd77d3 [origin/temp_1] 1st
  temp_2                 1bd77d3 [origin/temp_1] 1st
  remotes/Rep0045/main   3abef4b 1st <!-- 新しく追加!
  remotes/Rep0045/temp   3abef4b 1st <!-- 新しく追加!
  remotes/Rep0045/temp_1 3abef4b 1st <!-- 新しく追加!
  remotes/origin/main    1bd77d3 1st
  remotes/origin/temp_1  1bd77d3 1st

まあ~、一度にたくさんのブランチを、どう操作するのかは、その状況にならないと想像がつきませんけど、このようなことが出来るっていうことだけは、経験置きましょう! 尚、二つ目のリポジトリーを追加するときは、origin ではなく、任意の名称にする必要がありますので、ご注意ください。また、コマンドの省略形のデフォルトは、origin となりますから、新しくGitHubのリモートリポジトリーを追加した場合は、どのコマンドにも、ここでいうなら、Rep0045 を追加しないと指定どおりに動作しませんので悪しからず!

それでは、今回はここまで、お疲れ様でした!

https://zenn.dev/shiozumi/articles/a257df583f197a
https://twitter.com/esmile2013

Discussion