🏹
Gitコマンド入門::Gitオブジェクト(update-ref,remote)第五十八回
みなさんこんにちは! 今回もGit本家のサイトを参考にして進めていきます。そして今回はリモートです。リモート追跡ブランチとして、ここまでも取り上げ来ましたね。そして、いつもの事ですが、中身は、只のコミットのハッシュ値です。それでは、早速、試して行きましょう!
前回、第五十七回の記事はこちらから!
git本家本元の情報はこちらから!
今日の課題も前回同様、ここを参考にしています!
10.3 Gitの内側 - Gitの参照
git clone で取得!
環境が無い方は、こちらから、clone してください!
git clone https://github.com/shiozumi-makoto/20210319.git <任意のフォルダ名>
$ git clone https://github.com/shiozumi-makoto/20210319.git test0323
cd test0323
// フォルダ名、test0323 で作成して移動!
$ ls -a
. .. .git bak new.txt test.txt
// ファイルは、このような状態ですね。
$ git branch -avv
* master 1e3f489 [origin/master] third commit
remotes/origin/HEAD -> origin/master
remotes/origin/master 1e3f489 third commit
// リモート追跡ブランチ origin/masterがあります。
// remotes/origin/HEAD ファイルがあり、同じく、origin/master を指しています。
$ cat .git/refs/remotes/origin/HEAD
ref: refs/remotes/origin/master
// ファイルの中身も確認して置きます!
$ cat .git/refs/remotes/origin/master
cat: .git/refs/remotes/origin/master: そのようなファイルやディレクトリはありません
// あちゃ~、エラーになりました。ファイルが無いようです。
$ ls .git/refs/remotes/origin/
HEAD
// HEADファイルのみで、master がありませんね。
git push -u origin master
とりいそぎ、new.txt を編集して、add,commit,pushしてみます。
$ vi new.txt
// ファイルを追加編集して、Esc + wq
$ git add new.txt
$ git commit -m "new.txt add"
[master 7ceaea0] new.txt add
1 file changed, 1 insertion(+), 1 deletion(-)
// add, commit
7ceaea0 (HEAD -> master, origin/master, origin/HEAD) new.txt add
1e3f489 third commit
514ff38 second commit
8cab88d first commit
// そして、GitHubのリモートリポジトリーへ、push
$ git push -u origin master
To https://github.com/shiozumi-makoto/20210319.git
1e3f489..7ceaea0 master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
$ git branch -avv
* master 7ceaea0 [origin/master] new.txt add
remotes/origin/HEAD -> origin/master
remotes/origin/master 7ceaea0 new.txt add
$ cat .git/refs/remotes/origin/master
7ceaea00d2240e3dc83be5c44cb190615d4b5114
// 今度は、無事にリモート追跡ブランチが作成されました!
git remote add TEST <リポジトリ名>
$ git remote add TEST https://github.com/shiozumi-makoto/20210323.git
// このURLは、みなさんのGitHubのアドレスになりますよ!
$ git remote -v
TEST https://github.com/shiozumi-makoto/20210323.git (fetch)
TEST https://github.com/shiozumi-makoto/20210323.git (push)
origin https://github.com/shiozumi-makoto/20210319.git (fetch)
origin https://github.com/shiozumi-makoto/20210319.git (push)
// TEST エイリアス名で、新しいリポジトリが追加されました!
https://github.com/shiozumi-makoto/20210323.git この部分のURLは、各自、みなさんのGitHubで作成した、リポジトリ名になりますね! 私も、20210323 のリポジトリ名で、追加してみました。
git push -u TEST master
先ほど追加した、TESTに対して、push してください!
$ git push -u TEST master
// 中略~
To https://github.com/shiozumi-makoto/20210323.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'TEST'.
$ git branch -avv
* master 7ceaea0 [TEST/master] new.txt add
remotes/TEST/master 7ceaea0 new.txt add
remotes/origin/HEAD -> origin/master
remotes/origin/master 7ceaea0 new.txt add
// remotes/TEST/master リモート追跡ブランチが作成されました。
cat .git/refs/remotes/TEST/master
7ceaea00d2240e3dc83be5c44cb190615d4b5114
// これで、ハッシュ値も合っていますね!
一度、git push -u オプションを着ければ、リモート追跡ブランチを自動で作成してくれることは、以前にも学習していましたね。
今回のまとめ
これで、.git/refs フォルダーの中身については、一通り学習が済みましたね。heads,tags,remotes の3つのフォルダーの中に、ブランチ名でファイルが作成され、その中身は、コミットのハッシュ値となります。いままで、ブランチやタグという存在感が、あまりにも大きかったのですけど、ただの誇大妄想でしたね。中身は、只のハッシュ値です。それこそ、linuxコマンドのcatでも作成できる代物でした~(^▽^;)
それでは、今回はここまで、お疲れ様でした!
Discussion