SlideShare a Scribd company logo
1 of 53
z
gitを学ぼう
(バージョン管理システムについて)
z
今までの開発を
思い出してください
z
この場面に心当たりが・・・
データが入ったUSBの忘れや故障
z
この場面に心当たりが・・・2
別のPC
復旧困難なデータの破損
z
この場面に心当たりが・・・3
統合
バックアップフォルダが大量に・・・
backup1 backup2
backupFinal backupFinal(1)
一番新しいのはどれ・・・?
z
この場面に心当たりが・・・4
他の人が作業出来なくなる、地道な統合時間
z
この場面に心当たりが・・・5
さっきまで動いてたんですけどぉぉぉぉぉぉ
先に言ってよ・・・
ねぇ、今見せて
z
gitが
全てを
解決してくれます
z
これだけ便利なので
IT業界に入る際には
必須知識です
z
そもそもgitとは・・・?
バージョン管理システムである!
z
調べてみた
バージョン管理システムの最も基本的な機能は、ファイルの作成日時、変更日時、変更点などの履歴を
保管することである。これにより、何度も変更を加えたファイルであっても、過去の状態や変更内容を確
認したり、変更前の状態を復元することが容易になる。更に、多くのバージョン管理システムでは、複数
の人間がファイルの編集に関わる状況を想定している。商業的なソフトウェア開発やオープンソース
プロジェクトなどでは、複数の人間が複数のファイルを各々編集するため、それぞれのファイルの最新の
状態が分からなくなったり、同一ファイルに対する変更が競合するなどの問題が生じやすいが、バージョン
管理システムは、このような問題を解決する仕組みを提供する。ただし、バージョン管理システムを
個人のファイル管理に使用することも可能であるし、ソフトウェアのソースコードだけでなく、設定ファイル
や原稿の管理などにも使うことも可能である。
by Wikipedia ( ・´ー・`)
z
要約すると
・過去の変更・状態の履歴を辿れる
・いつ、誰が変更したか一目瞭然
・統合を楽にしてくれる!
(さっきの文には書いてなかったけど・・・)
z
実際の例で見てみよう
z
・コミット名
・日時
・変更内容
・現状のデータ
仕組み (1/3) : リポジトリ
repo
z
仕組み (2/3) : コミット
repo
作業中の
フォルダ
ステージング
Project.pde Character.pde
Enemy.pde Stage.pde
git add ファイル名
Character.pde
Stage.pde
git commit –m “コメント”
Add Commit
z
仕組み (3/3) : リモートとローカルの違い
repo
リモートリポジトリ
(http://remote.com)
repo repo repo
ローカルリポジトリ
&
作業フォルダー
Push
Pull
z
git init
git add
git commit
やってみよう!
(git status, git log)
z
ブランチシステム
z
ブランチシステムとは
作業の枝分かれ
z
master initした時に出来る最初のブランチ
プレイヤーの動きを実装
プレイヤーの見た目変更
Enemy Stage
Checkout
git checkout –b ブランチ名
敵の動きを実装
敵の見た目変更
ステージの見た目変更
プレイヤーとの
当たり判定実装
z
git branch
git checkout
やってみよう!
z
マージシステム
z
マージシステムとは
ブランチの統合
z
master
Enemy Stage
敵の見た目変更 プレイヤーとの
当たり判定実装
Merge
git merge 元ブランチ名
Merge branch “Stage”
EnemyブランチとStageブランチを
mergeツールが自動的に統合。
その結果生成されるコミット
z
git merge やってみよう!
z
コンフリクト
z
コンフリクトとは
統合での衝突
z
master
a.txtの変更
B C
b.txtの追加 c.txtの追加
a.txtの変更 a.txtの変更
コンフリクト
z
コンフリクトの解決方法
1.どちらかのファイル毎の変更を優先
2.マージツールで行毎の差分調整
z
git checkout --theirs
やってみよう!
git checkout --ours
z
ロールバック
z
master
a.txtの変更
間違った
Reset
git reset --hard コミット名(HEAD)
※戻せないので注意
Roll back
git checkout コミット名
戻す奴はこっち
z
git reset --hard
やってみよう!
z
リモートリポジトリを使おう
z
リモートリポジトリを確認
今回はGithubを使用
https://github.com/Yujiro-Ito/GitClass
にアクセスしてみよう
z
git clone やってみよう!
z
仕組みの再確認 : リモートとローカルの違い
repo
リモートリポジトリ
(http://remote.com)
repo repo repo
ローカルリポジトリ
&
作業フォルダー
Push
Pull
z
まずは自分のブランチ作成
git checkout –b ブランチ名
自分のブランチをリモートへpushしよう
git push origin ブランチ名
git push origin ブランチ名:リモートブランチ名
z
git push やってみよう!
z
他人の作業内容を確認する
他の人のブランチをpullしよう
z
git pull やってみよう!
z
他人の作業内容のままがいい
自分の作業内容を含めたくない場合
git checkout -b ブランチ名 origin/リモートブランチ名
z
ついでに
他人が更新したことを確認する
git fetch
z
git checkout
git fetch
やってみよう!
z
まとめ
z
まとめ1/7
git init
git add ファイル名
git commit –m “コメント”
リポジトリの作成を行う
変更内容をステージングへ移動する
ステージングの内容をコミットする
z
まとめ2/7
git status
git log
現在の変更内容を表示する
今までのコミットの内容を確認する
z
まとめ3/7
git checkout –b 新ブランチ名
git branch
現在のブランチから新しいブランチを派生させる
ブランチの一覧を表示する
z
まとめ4/7
git merge ブランチ名
git checkout --ours ファイル名
git checkout --theirs ファイル名
ブランチ名のコミットを現在のブランチにマージする
コンフリクトしたファイルをマージ先の内容を優先する
コンフリクトしたファイルをマージ元の内容を優先する
z
まとめ5/7
特定のコミットまでコミットを削除する
git reset --hard コミット名
一時的に特定のコミットまで戻る
git checkout コミット名
z
まとめ6/7
git clone URL
git push origin ブランチ名
git pull origin ブランチ名
リモートリポジトリをローカルリポジトリへクローンする
指定のブランチへプッシュする
指定のブランチをプルする
z
まとめ7/7
git fetch
リモートブランチをローカルへチェックアウトする
リモートの内容を更新する
git checkout -b ブランチ名 origin/リモートブランチ名
z
おわり

More Related Content

What's hot

動的計画法の並列化
動的計画法の並列化動的計画法の並列化
動的計画法の並列化Proktmr
 
ディープラーニング入門 ~ 画像処理・自然言語処理について ~
ディープラーニング入門 ~ 画像処理・自然言語処理について ~ディープラーニング入門 ~ 画像処理・自然言語処理について ~
ディープラーニング入門 ~ 画像処理・自然言語処理について ~Kensuke Otsuki
 
機械学習プロフェッショナルシリーズ輪読会 #2 Chapter 5 「自己符号化器」 資料
機械学習プロフェッショナルシリーズ輪読会 #2 Chapter 5 「自己符号化器」 資料機械学習プロフェッショナルシリーズ輪読会 #2 Chapter 5 「自己符号化器」 資料
機械学習プロフェッショナルシリーズ輪読会 #2 Chapter 5 「自己符号化器」 資料at grandpa
 
『データ解析におけるプライバシー保護』勉強会 #2
『データ解析におけるプライバシー保護』勉強会 #2『データ解析におけるプライバシー保護』勉強会 #2
『データ解析におけるプライバシー保護』勉強会 #2MITSUNARI Shigeo
 
H2Oを使ったノーコードのAutoML
H2Oを使ったノーコードのAutoMLH2Oを使ったノーコードのAutoML
H2Oを使ったノーコードのAutoML西岡 賢一郎
 
単語の分散表現と構成性の計算モデルの発展
単語の分散表現と構成性の計算モデルの発展単語の分散表現と構成性の計算モデルの発展
単語の分散表現と構成性の計算モデルの発展Naoaki Okazaki
 
ZDD基礎
ZDD基礎ZDD基礎
ZDD基礎reew2n
 
大規模言語モデルとChatGPT
大規模言語モデルとChatGPT大規模言語モデルとChatGPT
大規模言語モデルとChatGPTnlab_utokyo
 
大阪PRML読書会#1資料
大阪PRML読書会#1資料大阪PRML読書会#1資料
大阪PRML読書会#1資料Hiromasa Ohashi
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門増田 亨
 
[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習Deep Learning JP
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケットTakaaki Hoyo
 
AIと最適化の違いをうっかり聞いてしまう前に
AIと最適化の違いをうっかり聞いてしまう前にAIと最適化の違いをうっかり聞いてしまう前に
AIと最適化の違いをうっかり聞いてしまう前にMonta Yashi
 
地理分散DBについて
地理分散DBについて地理分散DBについて
地理分散DBについてKumazaki Hiroki
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめpospome
 
分散システム第7章(後半)
分散システム第7章(後半)分散システム第7章(後半)
分散システム第7章(後半)Kenta Hattori
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みMasahiro Sakai
 

What's hot (20)

ゆるバグ
ゆるバグゆるバグ
ゆるバグ
 
動的計画法の並列化
動的計画法の並列化動的計画法の並列化
動的計画法の並列化
 
ディープラーニング入門 ~ 画像処理・自然言語処理について ~
ディープラーニング入門 ~ 画像処理・自然言語処理について ~ディープラーニング入門 ~ 画像処理・自然言語処理について ~
ディープラーニング入門 ~ 画像処理・自然言語処理について ~
 
機械学習プロフェッショナルシリーズ輪読会 #2 Chapter 5 「自己符号化器」 資料
機械学習プロフェッショナルシリーズ輪読会 #2 Chapter 5 「自己符号化器」 資料機械学習プロフェッショナルシリーズ輪読会 #2 Chapter 5 「自己符号化器」 資料
機械学習プロフェッショナルシリーズ輪読会 #2 Chapter 5 「自己符号化器」 資料
 
『データ解析におけるプライバシー保護』勉強会 #2
『データ解析におけるプライバシー保護』勉強会 #2『データ解析におけるプライバシー保護』勉強会 #2
『データ解析におけるプライバシー保護』勉強会 #2
 
H2Oを使ったノーコードのAutoML
H2Oを使ったノーコードのAutoMLH2Oを使ったノーコードのAutoML
H2Oを使ったノーコードのAutoML
 
単語の分散表現と構成性の計算モデルの発展
単語の分散表現と構成性の計算モデルの発展単語の分散表現と構成性の計算モデルの発展
単語の分散表現と構成性の計算モデルの発展
 
Prml 2.3
Prml 2.3Prml 2.3
Prml 2.3
 
ZDD基礎
ZDD基礎ZDD基礎
ZDD基礎
 
大規模言語モデルとChatGPT
大規模言語モデルとChatGPT大規模言語モデルとChatGPT
大規模言語モデルとChatGPT
 
大阪PRML読書会#1資料
大阪PRML読書会#1資料大阪PRML読書会#1資料
大阪PRML読書会#1資料
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
 
いつやるの?Git入門
いつやるの?Git入門いつやるの?Git入門
いつやるの?Git入門
 
AIと最適化の違いをうっかり聞いてしまう前に
AIと最適化の違いをうっかり聞いてしまう前にAIと最適化の違いをうっかり聞いてしまう前に
AIと最適化の違いをうっかり聞いてしまう前に
 
地理分散DBについて
地理分散DBについて地理分散DBについて
地理分散DBについて
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
 
分散システム第7章(後半)
分散システム第7章(後半)分散システム第7章(後半)
分散システム第7章(後半)
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 

Similar to git講座用パワーポイント

俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがないTakuto Matsuu
 
超勉強会 2012
超勉強会 2012超勉強会 2012
超勉強会 2012Yuya Adachi
 
AllwinnerタブレットのOSを作ってみる(中編)
AllwinnerタブレットのOSを作ってみる(中編)AllwinnerタブレットのOSを作ってみる(中編)
AllwinnerタブレットのOSを作ってみる(中編)shimadah
 
Git flow概要紹介
Git flow概要紹介Git flow概要紹介
Git flow概要紹介y42sora
 
“夏前にすぐに痩せるRam diet!” もしくは 「老頭児組込みエンジニアの苦悩」 (中継無し) パート1 公開版
“夏前にすぐに痩せるRam diet!” もしくは 「老頭児組込みエンジニアの苦悩」 (中継無し) パート1 公開版“夏前にすぐに痩せるRam diet!” もしくは 「老頭児組込みエンジニアの苦悩」 (中継無し) パート1 公開版
“夏前にすぐに痩せるRam diet!” もしくは 「老頭児組込みエンジニアの苦悩」 (中継無し) パート1 公開版kinneko
 
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門infinite_loop
 

Similar to git講座用パワーポイント (7)

俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない
 
超勉強会 2012
超勉強会 2012超勉強会 2012
超勉強会 2012
 
AllwinnerタブレットのOSを作ってみる(中編)
AllwinnerタブレットのOSを作ってみる(中編)AllwinnerタブレットのOSを作ってみる(中編)
AllwinnerタブレットのOSを作ってみる(中編)
 
Git flow概要紹介
Git flow概要紹介Git flow概要紹介
Git flow概要紹介
 
Sobe2 LT
Sobe2 LTSobe2 LT
Sobe2 LT
 
“夏前にすぐに痩せるRam diet!” もしくは 「老頭児組込みエンジニアの苦悩」 (中継無し) パート1 公開版
“夏前にすぐに痩せるRam diet!” もしくは 「老頭児組込みエンジニアの苦悩」 (中継無し) パート1 公開版“夏前にすぐに痩せるRam diet!” もしくは 「老頭児組込みエンジニアの苦悩」 (中継無し) パート1 公開版
“夏前にすぐに痩せるRam diet!” もしくは 「老頭児組込みエンジニアの苦悩」 (中継無し) パート1 公開版
 
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
 

git講座用パワーポイント