SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
ハンズオン
200階(カストロ、ヒソカレベル)
基本ルール
● コミットのたびにオブジェクトの図をノー
トに書く
● リポジトリの内部を見る
1. リポジトリの作成
ハンズオン用のリポジトリ、作業ディレクトリを作成
する
$ mkdir hh_git
$ cd hh_git
$ git init
1. リポジトリの作成
.git/ の中身を見る
● objects/ は info/ と pack/ だけ
● HEAD の中身が master になっている
● refs/heads/ の中身が空
● refs/tags/ の中身が空
2. READMEを作る
空のファイルをコミットしてみる
$ touch README
$ git add README
$ git commit -m "add README"
3. リポジトリの状態を見る
まずはログを見る
$ git log
ここでコミットのハッシュ値(sha-1)をメモる。
3. リポジトリの状態を見る
1. commitオブジェクトの中身を見る
$ git cat-file -p <sha-1>
2. 更にtreeオブジェクトの中身を見る
$ git cat-file -p <sha-1>
3. .git/objects/ の中身を見る
3. リポジトリの状態を見る
4. リポジトリの状態を図に書く
 (↓な感じの図をノートに書く)
commit
tree
blob5f97f 543b9 e69de
blobのsha-1はファ
イル内容で決まるた
め、同じになるはず
commit, treeのsha-1は環境
によって変わる
4. 別のファイルを作る
その前に、一作業。
masterブランチは邪魔なので、ブランチを外す。
commitのsha-1をチェックアウトする。
$ git checkout <sha-1>
※ この資料だと 5f97f になる
ブランチを外した理由は後ほど説明。
4. 別のファイルを作る
課題: 今日の勉強会の内容をメモに書く
1. ファイルを作成し、add & commit をしてみる
2. cat-file -pで先ほどと同じくノートに図を書く
3. 今作成したファイルを更に編集し、 もう1回 add
& commit をする。
4. cat-file -p で同じくノートに図を書く。
4. 別のファイルを作る
5.図がこんな感じになる
● e69de が同じオブジェクト
を参照している
66e82
5f97f 543b9 e69de
8ed4f
89c43
97671
1b92b
e69de
e69de
e3cbd
commit, treeのsha-1は環境
によって変わる
5. (無名)ブランチを作る
1. READMEを作った<sha-1>をcheckoutする
$ git checkout <sha-1>
※ この資料だと 5f97f 。先ほど作成したファイル
がディレクトリから消えればOK
2. README を編集して、commit & 図を書く
5. (無名)ブランチを作る
3.図がこんな感じになる
● gitは自然に分岐する
66e82
5f97f 543b9 e69de
8ed4f
89c43
97671
1b92b
e69de
e69de
e3cbd
commit, treeのsha-1は(ry
5226ddc1f7 06931
6. マージコミットを作る
今日の勉強会のメモを書いていたsha-1をマージ
する
$ git merge --no-ff <sha-1>
※ この資料だと 8ed4f
6. マージコミットを作る
図がこんな感じになる
● マージコミットは親が2
つある
● blobが上手くマージさ
れている
66e82
5f97f 543b9 e69de
8ed4f 89c43
97671
1b92b
e69de
e69de
e3cbd
commit, treeのsha-1は(ry
5226d
dc1f7 06931
5e5de
dc1f7
97671
bce2d
休憩: fast-forward
図で分かるgit-mergeの--ff, --no-ff, --
squashの違い
http://d.hatena.ne.
jp/sinsoku/20111025/1319497900
7. 手作りブランチ
1. 現在のブランチの状況を見てみる
$ git branch
2. .git/refs/heads/master を見てみる
$ cat .git/refs/heads/master
7. 手作りブランチ
3. 勉強会のメモからブランチを作ってみる
$ echo "<sha-1>" > .git/refs/heads/piyo
※ この資料だと 8ed4f... の40桁
4. 作成したブランチが表示される事を確認
$ git branch
5. チェックアウトしてみる
$ git checkout piyo
7. 手作りブランチ
6. .git/HEAD を見てみる
=> ブランチに変わっている
7. cherry-pickでREADMEの変更を取得してみる
$ git cherry-pick <sha-1>
※ この資料だと 5226d
8. ノートに図を書いてみる
7. 手作りブランチ
図がこんな感じになる
66e82
5f97f 543b9 e69de
8ed4f 89c43
97671
1b92b
e69de
e69de
e3cbd
commit, treeのsha-1は(ry
5226d
dc1f7 06931
5e5de
dc1f7
97671
bce2d
...
...
...
7. 手作りブランチ
9. .git/refs/heads/piyo の中身を見てみる
ブランチをcheckout した状態でコミッ
トするとsha-1が更新される
8. リモートの変更を取得する
1. リモートにあるリポジトリから変更を取得してみ
る。
$ git fetch git://github.com/sinsoku/banana
※もし自分のリポジトリを持っていれば、そちらで
試してもOK
8. リモートの変更を取得する
2. コミットオブジェクトの有無を確認する。
$ git show <sha-1>
※ この資料だと 73c99
リモートの変更が取得できている。ただ、この方法で
は<sha-1>が分からないとログを表示できない。
9. リモートに名前をつける
1. URLに名前を付けることができる
$ git remote add <name> <url>
例:
$ git remote add sinsoku 
git://github.com/sinsoku/banana
9. リモートに名前をつける
2. リモートの変更を取得する
$ git fetch sinsoku
3. .git/refs/remotes/, .git/refs/tags/ を見てみる。
4. git branch -a でブランチを表示する
リモートリポジトリのブランチがローカルに複製さ
れている事が確認できる
9. リモートに名前をつける
補足
● リモートのタグも .git/refs/tags/ に入るため、ローカルとリ
モートのタグは混ざる
● リモートのブランチの複製はfetchのタイミングで更新される
(リモートが別の人に更新されても、ローカルに複製された
ブランチは古いまま)
● git clone <url> は git init の後に、git remote add
origin <url> している事と同じ
10. ブランチの履歴
ブランチは更新履歴を持つ
$ git reflog show piyo
● rebaseやresetを使用した時に重宝する
● 基本的に git gcが走るまでオブジェクトが消え
たりしない

Mais conteúdo relacionado

Semelhante a Git天空闘技場_ハンズオン

Semelhante a Git天空闘技場_ハンズオン (13)

Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
git 初めの一歩
git 初めの一歩git 初めの一歩
git 初めの一歩
 
今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 GitLab 14対応版
 
gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編
 
Gitを使ってみよう
Gitを使ってみようGitを使ってみよう
Gitを使ってみよう
 
今さら聞けない人のためのGit超入門 OSC2018広島版
今さら聞けない人のためのGit超入門 OSC2018広島版今さら聞けない人のためのGit超入門 OSC2018広島版
今さら聞けない人のためのGit超入門 OSC2018広島版
 
Git
GitGit
Git
 
コード読経会報告書
コード読経会報告書コード読経会報告書
コード読経会報告書
 
今さら聞けない人のためのGit超入門 2019/11/21
今さら聞けない人のためのGit超入門 2019/11/21今さら聞けない人のためのGit超入門 2019/11/21
今さら聞けない人のためのGit超入門 2019/11/21
 
Git 道場 心:Git総論、心構え
Git 道場 心:Git総論、心構え Git 道場 心:Git総論、心構え
Git 道場 心:Git総論、心構え
 
Git 実践入門
Git 実践入門Git 実践入門
Git 実践入門
 
今さら聞けない人のためのgit超入門
今さら聞けない人のためのgit超入門今さら聞けない人のためのgit超入門
今さら聞けない人のためのgit超入門
 
Git
GitGit
Git
 

Mais de sinsoku listy

Rails6にいつ上げるか?
Rails6にいつ上げるか?Rails6にいつ上げるか?
Rails6にいつ上げるか?sinsoku listy
 
Rails Testing on Fargate
Rails Testing on FargateRails Testing on Fargate
Rails Testing on Fargatesinsoku listy
 
Search Form for Rails
Search Form for RailsSearch Form for Rails
Search Form for Railssinsoku listy
 
自己修復的なインフラ -Self-Healing Infrastructure-
自己修復的なインフラ -Self-Healing Infrastructure-自己修復的なインフラ -Self-Healing Infrastructure-
自己修復的なインフラ -Self-Healing Infrastructure-sinsoku listy
 
毎日gemをアップグレードする生活
毎日gemをアップグレードする生活毎日gemをアップグレードする生活
毎日gemをアップグレードする生活sinsoku listy
 
Rails 5.2: credentials
Rails 5.2: credentialsRails 5.2: credentials
Rails 5.2: credentialssinsoku listy
 
Randomly Failing Specs
Randomly Failing SpecsRandomly Failing Specs
Randomly Failing Specssinsoku listy
 
技術的負債とリファクタリング
技術的負債とリファクタリング技術的負債とリファクタリング
技術的負債とリファクタリングsinsoku listy
 
Git 初心者講座 by forkwell
Git 初心者講座 by forkwellGit 初心者講座 by forkwell
Git 初心者講座 by forkwellsinsoku listy
 
ES2015のカバレッジ計測
ES2015のカバレッジ計測ES2015のカバレッジ計測
ES2015のカバレッジ計測sinsoku listy
 
CSSのカバレッジツール
CSSのカバレッジツールCSSのカバレッジツール
CSSのカバレッジツールsinsoku listy
 
本当にあった怖い話 7つの幽霊 7つの成仏
本当にあった怖い話 7つの幽霊 7つの成仏本当にあった怖い話 7つの幽霊 7つの成仏
本当にあった怖い話 7つの幽霊 7つの成仏sinsoku listy
 
Awsでwindowsゲームを動かす
Awsでwindowsゲームを動かすAwsでwindowsゲームを動かす
Awsでwindowsゲームを動かすsinsoku listy
 
Action pack variantsの話
Action pack variantsの話Action pack variantsの話
Action pack variantsの話sinsoku listy
 
LT_Gitのfast fowardと継続的デリバリー
LT_Gitのfast fowardと継続的デリバリーLT_Gitのfast fowardと継続的デリバリー
LT_Gitのfast fowardと継続的デリバリーsinsoku listy
 
20101001 5分でわかるtrac pluginの作り方_slideshare
20101001 5分でわかるtrac pluginの作り方_slideshare20101001 5分でわかるtrac pluginの作り方_slideshare
20101001 5分でわかるtrac pluginの作り方_slidesharesinsoku listy
 

Mais de sinsoku listy (18)

Rails6にいつ上げるか?
Rails6にいつ上げるか?Rails6にいつ上げるか?
Rails6にいつ上げるか?
 
Rails Testing on Fargate
Rails Testing on FargateRails Testing on Fargate
Rails Testing on Fargate
 
Search Form for Rails
Search Form for RailsSearch Form for Rails
Search Form for Rails
 
ENGINEER WORK!!
ENGINEER WORK!!ENGINEER WORK!!
ENGINEER WORK!!
 
自己修復的なインフラ -Self-Healing Infrastructure-
自己修復的なインフラ -Self-Healing Infrastructure-自己修復的なインフラ -Self-Healing Infrastructure-
自己修復的なインフラ -Self-Healing Infrastructure-
 
毎日gemをアップグレードする生活
毎日gemをアップグレードする生活毎日gemをアップグレードする生活
毎日gemをアップグレードする生活
 
Rails 5.2: credentials
Rails 5.2: credentialsRails 5.2: credentials
Rails 5.2: credentials
 
Randomly Failing Specs
Randomly Failing SpecsRandomly Failing Specs
Randomly Failing Specs
 
技術的負債とリファクタリング
技術的負債とリファクタリング技術的負債とリファクタリング
技術的負債とリファクタリング
 
Git 初心者講座 by forkwell
Git 初心者講座 by forkwellGit 初心者講座 by forkwell
Git 初心者講座 by forkwell
 
Swift on Docker
Swift on DockerSwift on Docker
Swift on Docker
 
ES2015のカバレッジ計測
ES2015のカバレッジ計測ES2015のカバレッジ計測
ES2015のカバレッジ計測
 
CSSのカバレッジツール
CSSのカバレッジツールCSSのカバレッジツール
CSSのカバレッジツール
 
本当にあった怖い話 7つの幽霊 7つの成仏
本当にあった怖い話 7つの幽霊 7つの成仏本当にあった怖い話 7つの幽霊 7つの成仏
本当にあった怖い話 7つの幽霊 7つの成仏
 
Awsでwindowsゲームを動かす
Awsでwindowsゲームを動かすAwsでwindowsゲームを動かす
Awsでwindowsゲームを動かす
 
Action pack variantsの話
Action pack variantsの話Action pack variantsの話
Action pack variantsの話
 
LT_Gitのfast fowardと継続的デリバリー
LT_Gitのfast fowardと継続的デリバリーLT_Gitのfast fowardと継続的デリバリー
LT_Gitのfast fowardと継続的デリバリー
 
20101001 5分でわかるtrac pluginの作り方_slideshare
20101001 5分でわかるtrac pluginの作り方_slideshare20101001 5分でわかるtrac pluginの作り方_slideshare
20101001 5分でわかるtrac pluginの作り方_slideshare
 

Último

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Último (9)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

Git天空闘技場_ハンズオン