こわくない Git

こわくない



Presented by Kota Saito @ksaito
こんな人が対象者
一応ブラン チ作ってコミットしてるけど
実は、マー ジとかよくわかってない……

   エラーが出た時に対処できない……

 rebase しちゃダ
             メって何でな   の?
Git よくわかんない!

  怖い!!
\怖くないよ/
#1 コミットとブランチ

#2 二種類のマージ

#3 リベースの功罪
コミットとブランチ
そもそも、コミットって
なんだっけ……?
コミットに入ってる情報
 リビジョン (SHA-1 ハッシュ)
 例: 23cdd334e6e251336ca7dd34e0f6e3ea08b5d0db

 Author (コミットを作成した人)
 例: オープンソースプロジェクトにパッチを送った人

 Committer (コミットを適用した人)
 例: 受け取ったパッチを取り込んだ人

 ファイルのスナップショット (tree)
 コミットで変更されたファイルを含むツリー(説明は省略)

 1つ前のコミットのリビジョン
 例: 4717e3cf182610e9e82940ac45abb0d422a76d77
コミットに入ってる情報
 リビジョン (SHA-1 ハッシュ)
 例: 23cdd334e6e251336ca7dd34e0f6e3ea08b5d0db

 Author (コミットを作成した人)
 例: オープンソースプロジェクトにパッチを送った人

 Committer (コミットを適用した人)
                  これ重要!!
 例: 受け取ったパッチを取り込んだ人

 ファイルのスナップショット (tree)
 コミットで変更されたファイルを含むツリー(説明は省略)

 1つ前のコミットのリビジョン
 例: 4717e3cf182610e9e82940ac45abb0d422a76d77
コミット   A   があれば
コミット   A   があれば


その前の   B   をたどれる
A

B

C
こわくない Git
最新のコミット




    たどれる!!



最古のコミット
この概念=
コミットグラフ


 \テストに出るぞ/
で、ブランチって
なんだっけ……?
new
      例えば master に
      コミットが4回されたあとの
      こんなコミットグラフ


old
new   =   master   イマココ!!




old
new

      さらに master にもう1回
      コミットがされると…



old
new!   =   master   イマココ!!




old
つまり

      =

ブランチは最新コミットの別名!!
ブランチ名の代わりに
リビジョンを指定したり
git checkout -b foo master


                     =
git checkout -b foo 4717e3cf1826
リビジョンの代わりに
ブランチ名を指定したり
 git show 4717e3cf1826
           =
 git show master
できる!!
あれ? 枝分かれする
ブランチの話は?


てか、masterって
ブランチだったのか
git branch topic master
git branch    topic   master



master   から   topic   を作る
例えば master に
new   コミットが3回されたあとの
      こんなコミットグラフ


old
new   =   master   イマココ!!




old
git branch      topic   master

             してみると……

new      =   master




old
!?
new   =   master   =   topic




old
つまり

   =     =

   ブランチを作る=
コミットのさらなる別名を作る
枝分かれしてなくね?
スルーですか?
この状態から            topic     に
      コミットしてみると……

new    =   master   =     topic




old
new!       =        topic   伸びた!!

       =   master




old
master       にコミットしてみると…

new!                =       topic


               =   master




old
new!   =   master


           =        topic



                    枝分かれ!!


old
Point
初めてコミットした時点で
枝分かれになります。
コミットとブランチ
・コミットには「1つ前のコミット」が
 含まれるので、最古までたどっていける
 → コミットグラフ

・ブランチは、そのブランチでの
 最新のコミットの別名に過ぎない

・枝分かれは、それぞれのブランチで
 コミットされて初めて発生する
二種類のマージ
Question
gitのマージには
 2種類ある事
知ってましたか?
Fast-Forward
       and
Non Fast-Forward
Fast-Forward = 早送り
?
例えばこんなコミットグラフ

    =        topic




=   master
topic ブランチに
3回コミットした

    3   =        topic

 2

    1

=       master
git merge topic

    3   =        topic

2

    1
                         マージ!!
=       master
git merge topic

    3   =        topic

2

    1
                         マージ!!
                         グラフはどうなる?
=       master
3   =   topic   =   master

2

1


                    !?
3   =        topic

2

    1

=       master
                         ←これが
3   =   topic   =   master

2       ここに↑
1       移動しただけ
Why?
topic    =   master   +   1   +   2   +   3




master
topic    =       master   +   1   +   2   +   3

                                  マージ!!
master   +   1    +   2   +   3   =       ?
topic    =       master   +   1   +   2   +   3




master   +   1    +   2   +   3   =       topic
topic   =   master     +   1   +   2   +   3




マージ後の                master    =       topic
中の人「どうせ同じ内容になるなら
いちいちマージしなくてよくね?」
中の人「マージ後に topic と同じ内容になるなら
  topic のところまで進めちゃおうぜww」


         3   =        topic   =   master

      2

         1                    進める

     =       master
これが Fast-Forward
Fast-Forward

マージのかわりに早送り。
\ドヤァ…/
Non Fast-Forward
さっきのコミットグラフから
    にコミットすると…
master



    =        topic




=   master
=   master


    =        topic


               枝分かれ!!
マージ後の   master   ≠   topic
中の人「早送りできない><」
中の人「ちゃんとマージするかー」
git merge topic
=       master


    3   =        topic

    2

    1
                         マージ!!
〜中の人計算中〜

「えーと master の内容と
 topic のコミットを比較して…」
         「衝突してたら教えてあげなきゃ…」
master   +   1   +   2   +   3




中の人「全部まぜちゃえー」
master   +   1   +   2   +   3   =   M




中の人「マージ結果ができたよ!」
=       master


    3   =        topic

    2
                         M
    1
                    中の人「そぉい!!」
M   =       master           <スポッ




        3   =        topic

        2

        1
M   =       master           ←マージの結果
                              作られたコミット


        3   =        topic

        2

        1
M   =       master           ←マージの結果
                              作られたコミット
                       マージコミット
        3   =        topic

        2

        1

                     \テストに出るぞ/
Non Fast-Forward
Non Fast-Forward

早送りじゃないマージ。
\ドヤヤヤァ…/
ちなみに
git merge topic
Fast-Forward                      Non Fast-Forward

早送りできればする、無理なら普通のマージ


git merge --no-ff topic
               Non Fast-Forward

常に普通のマージ


git merge --ff-only topic
        Fast-Forward

常に早送りする(できなければエラーとする)
ところが
議論がある
常に git merge --no-ff すべきだ!


 訳: 早送りマージすんな!
\えっ/
Why?
3   =   topic   =   master

2

1
        早送りした後の状態から
             を消すと…
          topic
3   =   master

2

1
                 ん?
3   =   master

2

1
                 あれ?
=   master




     直接コミットしたのと
     変わらない!!
\    の霊圧が消えた…!?/
  topic


  =   master
Fast-Forward の弊害①

「ブランチをマージした」という事実が
 歴史(コミットグラフ)に残らない
=   master




     おっと、間違って
     マージしちゃった (>ω・)
=   master




     えーと、マージを
     元に戻すにはっと…
git revert <commit>
<commit> (リビジョン) のコミットを
取り消すためのコミットを作る


git reset --hard <commit>
<commit> (リビジョン) 時点の状態まで
完全に巻き戻す
=   master




    おkおk
    コミットを指定すればいいのか
=   master




    で、どれが topic の
    コミットだっけ……
Fast-Forward の弊害②

  「ブランチのマージ」を
    取り消しづらい
Point
マージの種類を意識して
マージしましょう!
二種類のマージ
・Fast-Forward = 早送り
 ・コミットグラフ的に結果が同じなら
  同じコミットまで進めてしまうこと
 ・「マージした」という記録が残らない
 ・マージを取り消しづらい

・Non Fast-Forward = 普通のマージ
 ・Git ががんばって計算するマージ
リベースの功罪
git 初心者が陥りがちな罠

    第1位
     (個人的に)
リベーーーーーース

git rebase
ブランチ を master に追従するときに
使ってま す!! マージはなんか怖いし…


   rebase すると、コミットログが
   キレイになって見やすいよね!!


 merge よりも
           rebase の方が
 マージコミット
           もなくて楽でし
                      ょ?
Question
そもそも rebase が
 なにをするのか
理解していますか?
2   =       master


1

        2   =        topic


        1
                              topic
                      この状態から     で
                      git rebase master すると…
topic

   2      2
   1      1

まず、コミットの変更内容を
それぞれパッチにする
2   =       master     =     topic


1                             移動
        2   =        topic


        1        次に topic を master と
                 同じコミットに移動させる
                 (元々の topic ブランチでの
                  変更は含まなくなる)
ここまで来たら、作っておいた
    パッチを1つずつ順に適用して
    コミットしていく


2   =   master   =    topic


1

                       1  2
                     (  と  は省略)
差分を適用してコミット              1



2   =   master   =   topic


1
A   ←    1 から作られたコミット

2   =   master   =   topic


1
A   =    topic


2   =   master


1
2


    A   =    topic


2   =   master


1
B   ←    2 から作られたコミット

    A   =    topic


2   =   master


1
B   =    topic


    A

2   =   master


1
重要
   2        B

   1
       ≠    A

rebase で作られたコミットは
元のコミットと同じ内容だけど
別のコミットになります!!
重要
   2        B

   1
       ≠    A
                本当?
rebase で作られたコミットは
元のコミットと同じ内容だけど
別のコミットになります!!
コミットに入ってる情報
 リビジョン (SHA-1 ハッシュ)
 例: 23cdd334e6e251336ca7dd34e0f6e3ea08b5d0db

 Author (コミットを作成した人)
 例: オープンソースプロジェクトにパッチを送った人

 Committer (コミットを適用した人)
 例: 受け取ったパッチを取り込んだ人

 ファイルのスナップショット (tree)
 コミットで変更されたファイルを含むツリー(説明は省略)

 1つ前のコミットのリビジョン
 例: 4717e3cf182610e9e82940ac45abb0d422a76d77
コミットに入ってる情報
 リビジョン (SHA-1 ハッシュ)
 例: 23cdd334e6e251336ca7dd34e0f6e3ea08b5d0db

 Author (コミットを作成した人)
 例: オープンソースプロジェクトにパッチを送った人

 Committer (コミットを適用した人)
 例: 受け取ったパッチを取り込んだ人

 ファイルのスナップショット (tree)
 コミットで変更されたファイルを含むツリー(説明は省略)

 1つ前のコミットのリビジョン
 例: 4717e3cf182610e9e82940ac45abb0d422a76d77
2    B

   1    A

        2


1つ前のコミットが違う!!
2      B

  1      A

         2

1つ前のコミットが変わると
 リビジョンも変わります
  (だから別物になる)
Point
rebaseで作られるコミットは
 元のコミットとは別物
別物でも、同じ変更が
されるから問題ない気が
git push origin topic
git push origin           topic



  topic   を origin (サーバー) に同期
local              origin

2   =   topic

                push
1
local       origin

2   =   topic   2   =   topic

1               1
local        origin
3   =    topic


2       commit   2   =   topic

1                1
local              origin
3   =   topic

                push
2                      2   =   topic

1                      1
origin「お、pushがきたぞ?
どれどれ、内容を見てみよう」
origin「新しいコミットは1つだけか」


          3



「さて、こいつの前のコミットは…」
3

         2

origin「お、2番なら知ってるぞ!」
local       origin
3   =   topic


2               2   =   topic

1               1
local       origin
3   =   topic   3   =    topic


2               2       よし、2番の
                        後ろに追加
1               1
local       origin
3   =   topic   3   =   topic


2               2

1               1
push after rebase
local       origin

2   =   topic   2   =   topic

1               1

0               0
local        origin

B   =    topic   2   =   topic

A       rebase   1

0                0
local              origin

B   =   topic          2   =   topic

                push
A                      1

0                      0
origin「お、pushがきたぞ?
どれどれ、内容を見てみよう」
origin「新しいコミットは2つか」

         B

         A


「さて、こいつの前のコミットは…」
B

       A

       0

origin「あれ? 0番か…」
B      2

     A      1

     0      0

origin「もう0番には次のコミットが
あるし、1とAはリビジョンも違う!!」
local       origin
                      ダメダメ!!
                    受け付けないよ!!
B   =   topic   2   =   topic

A               1

0               0
Point
push されているブランチを
   rebase すると
  push できなくなる
Point

よって、共有のブランチでは
rebase してはいけない !!
push -f ダメ! 絶対!!

  push -f で強制的に上書き push できますが
他の人が pull する時にマージする必要があったり
コミットログがおかしな事になるのでやめましょう
ブ ランチを master に追従するときに
使ってます !! マージはなんか怖いし…
\怖くないよ/
こわくない Git
M   git merge master
M
M   git merge master



M
M



M
M       git merge topic


    M



    M
M


    M

          と  で衝突する修正を

    M   しない限り、マージ時には
        一切コンフリクトしません!
Point

git のマージは
相当かしこい
rebase すると、コミットログが
キレイになって見やすいよね!!
M


    M


        この一連の流れを
    M   もし rebase でやっていると
確かに一直線でキレイ
お気づきだろうか…
ヒソヒソ…
(なあ、もしかして
 俺たち忘れられてないか?)
        M   M   M
マージの記録は残らない
えっ

M   M    M
Point
rebase でコミットグラフは
 一直線にキレイになるが
その陰で失われる情報がある
Point
  そもそも git で
入り組んだグラフになっても
そんなに気にすることはない
merge よりも
          rebase の方が
マージコミット
          もなくて楽でし
                     ょ?
ここから git rebase master すると…



                    ←a.txtの1行目を修正

a.txtの1行目を修正→
                    ←a.txtの1行目を修正
コミットがそれぞれパッチになって…



                2

a.txtの1行目を修正→
                1
1つ目のパッチを適用


     a.txtの1行目を修正するパッチ1つ目↓

                         1
a.txtの1行目を修正→
コンフリクト!


     a.txtの1行目を修正するパッチ1つ目↓

                         1
a.txtの1行目を修正→
コンフリクトを解消



                ←a.txtの1行目を修正

a.txtの1行目を修正→
2つ目のパッチを適用

     a.txtの1行目を修正するパッチ2つ目↓

                         2

                   ←a.txtの1行目を修正

a.txtの1行目を修正→
コンフリクト!


     a.txtの1行目を修正するパッチ2つ目↓

                          2

                    ←a.txtの1行目を修正

a.txtの1行目を修正→
コンフリクトを解消



                ←a.txtの1行目を修正


                ←a.txtの1行目を修正

a.txtの1行目を修正→
Point
   rebase だと
コミットそれぞれについて
コンフリクトの解消が必要
ちなみに git merge master だと…




                    ←a.txtの1行目を修正

a.txtの1行目を修正→
                    ←a.txtの1行目を修正
コンフリクトを解消


                M


                    ←a.txtの1行目を修正

a.txtの1行目を修正→
                    ←a.txtの1行目を修正
Point
   merge だと
コミットがいくつあろうと
コンフリクト解消は1回だけ
Point
   したがって
rebase よりもむしろ
merge の方が楽です
リベースの功罪
           Good
・コミットグラフがキレイになる
 → マージ後のログがキレイになるので
   master にマージする直前にやるのは
   OK とする事がある
 → GitHub などのオープンソースプロジェクトに
   プルリクエストを送る場合は
   rebase してから送るのがマナーとされている
リベースの功罪
          Bad
・push されたブランチをリベースすると
 push できなくなる

・「マージした」という事実は失われる

・マージに比べるとコンフリクト解消が面倒
すこしは git の
 理解の手助けに
なれたでしょうか?
\怖くないよ/
\ズッ友だょ……!!/
Have a Nice Git!
References
Pro Git book
http://git-scm.com/book/ja/

git merge or rebase, ff or no-ff - Togetter
http://togetter.com/li/407277

A successful Git branching model
http://nvie.com/posts/a-successful-git-
branching-model/
1 of 186

Recommended

SQLアンチパターン 幻の第26章「とりあえず削除フラグ」 by
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
148.7K views45 slides
いつやるの?Git入門 v1.1.0 by
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0Masakazu Matsushita
231.7K views211 slides
マイクロにしすぎた結果がこれだよ! by
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
132.6K views32 slides
Java ORマッパー選定のポイント #jsug by
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
90.1K views66 slides
例外設計における大罪 by
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
68.6K views37 slides
Dockerからcontainerdへの移行 by
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
16.7K views36 slides

More Related Content

What's hot

Git flowの活用事例 by
Git flowの活用事例Git flowの活用事例
Git flowの活用事例Hirohito Kato
50.5K views63 slides
DockerコンテナでGitを使う by
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
18.8K views8 slides
SPAセキュリティ入門~PHP Conference Japan 2021 by
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
99.5K views107 slides
それはYAGNIか? それとも思考停止か? by
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
29.3K views41 slides
世界一わかりやすいClean Architecture by
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
47.1K views77 slides
実運用して分かったRabbit MQの良いところ・気をつけること #jjug by
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
24.3K views49 slides

What's hot(20)

Git flowの活用事例 by Hirohito Kato
Git flowの活用事例Git flowの活用事例
Git flowの活用事例
Hirohito Kato50.5K views
DockerコンテナでGitを使う by Kazuhiro Suga
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga18.8K views
SPAセキュリティ入門~PHP Conference Japan 2021 by Hiroshi Tokumaru
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru99.5K views
それはYAGNIか? それとも思考停止か? by Yoshitaka Kawashima
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima29.3K views
世界一わかりやすいClean Architecture by Atsushi Nakamura
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura47.1K views
15分でわかるGit入門 by to_ueda
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門
to_ueda55.8K views
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか? by naoki koyama
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
naoki koyama91.3K views
イベント駆動プログラミングとI/O多重化 by Gosuke Miyashita
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita15.4K views
シリコンバレーの「何が」凄いのか by Atsushi Nakada
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada183.9K views
マイクロサービス 4つの分割アプローチ by 増田 亨
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨41.4K views
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える by pospome
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome65.3K views
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話 by Koichiro Matsuoka
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka88.2K views
Dockerからcontainerdへの移行 by Akihiro Suda
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda7.6K views
GoによるWebアプリ開発のキホン by Akihiko Horiuchi
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi61K views
エンジニアの個人ブランディングと技術組織 by Takafumi ONAKA
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA23.4K views
イミュータブルデータモデルの極意 by Yoshitaka Kawashima
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima23.8K views
イミュータブルデータモデル(入門編) by Yoshitaka Kawashima
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima185.8K views

Viewers also liked

いつやるの?Git入門 by
いつやるの?Git入門いつやるの?Git入門
いつやるの?Git入門Masakazu Matsushita
435.1K views204 slides
デザイナのためのGit入門 by
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門dsuke Takaoka
252.8K views37 slides
はじめようGit by
はじめようGitはじめようGit
はじめようGittechscore
34.6K views118 slides
はじめてのGit forデザイナー&コーダー by
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーSaeko Yamamoto
72.1K views119 slides
Gitのよく使うコマンド by
Gitのよく使うコマンドGitのよく使うコマンド
Gitのよく使うコマンドYUKI Kaoru
165.5K views42 slides
Java初心者がJava8のラムダ式をやってみた by
Java初心者がJava8のラムダ式をやってみたJava初心者がJava8のラムダ式をやってみた
Java初心者がJava8のラムダ式をやってみたAya Ebata
2.6K views38 slides

Viewers also liked(20)

デザイナのためのGit入門 by dsuke Takaoka
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門
dsuke Takaoka252.8K views
はじめようGit by techscore
はじめようGitはじめようGit
はじめようGit
techscore34.6K views
はじめてのGit forデザイナー&コーダー by Saeko Yamamoto
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダー
Saeko Yamamoto72.1K views
Gitのよく使うコマンド by YUKI Kaoru
Gitのよく使うコマンドGitのよく使うコマンド
Gitのよく使うコマンド
YUKI Kaoru165.5K views
Java初心者がJava8のラムダ式をやってみた by Aya Ebata
Java初心者がJava8のラムダ式をやってみたJava初心者がJava8のラムダ式をやってみた
Java初心者がJava8のラムダ式をやってみた
Aya Ebata2.6K views
社内Java8勉強会 ラムダ式とストリームAPI by Akihiro Ikezoe
社内Java8勉強会 ラムダ式とストリームAPI社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
Akihiro Ikezoe54.9K views
一人でもはじめるGitでバージョン管理 by Takafumi Yoshida
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
Takafumi Yoshida221.8K views
やりなおせる Git 入門 by Tomohiko Himura
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門
Tomohiko Himura85.1K views
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜 by Takashi Uemura
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura197.8K views
Gitはじめの一歩 by Ayana Yokota
Gitはじめの一歩Gitはじめの一歩
Gitはじめの一歩
Ayana Yokota54.5K views
ノンプログラマでも今日から使える「Git」でバージョン管理 by H2O Space. Co., Ltd.
ノンプログラマでも今日から使える「Git」でバージョン管理ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理
H2O Space. Co., Ltd.44.2K views
Spring Bootの本当の理解ポイント #jjug by Masatoshi Tada
Spring Bootの本当の理解ポイント #jjugSpring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada40K views
今年の卒論はGithubで決まり! by From Atom
今年の卒論はGithubで決まり!今年の卒論はGithubで決まり!
今年の卒論はGithubで決まり!
From Atom20.1K views
バージョン管理のワークフロー by add20
バージョン管理のワークフローバージョン管理のワークフロー
バージョン管理のワークフロー
add20158.7K views
インフラエンジニアのこれまでとこれから by Kumano Ryo
インフラエンジニアのこれまでとこれからインフラエンジニアのこれまでとこれから
インフラエンジニアのこれまでとこれから
Kumano Ryo15.6K views
AbemaTV モバイルアプリの開発体制と開発プロセスの話 by Yuji Hato
AbemaTV モバイルアプリの開発体制と開発プロセスの話AbemaTV モバイルアプリの開発体制と開発プロセスの話
AbemaTV モバイルアプリの開発体制と開発プロセスの話
Yuji Hato8.2K views
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会 by Takayuki Shimizukawa
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
Takayuki Shimizukawa37.8K views

Recently uploaded

光コラボは契約してはいけない by
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけないTakuya Matsunaga
24 views17 slides
Windows 11 information that can be used at the development site by
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development siteAtomu Hidaka
89 views41 slides
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
23 views38 slides
SSH応用編_20231129.pdf by
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdficebreaker4
366 views13 slides
定例会スライド_キャチs 公開用.pdf by
定例会スライド_キャチs 公開用.pdf定例会スライド_キャチs 公開用.pdf
定例会スライド_キャチs 公開用.pdfKeio Robotics Association
127 views64 slides
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 by
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
85 views26 slides

Recently uploaded(10)

光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga24 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka89 views
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4366 views
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.73 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda420 views

こわくない Git