SlideShare uma empresa Scribd logo
1 de 31
Gitを学ぼう!
アジェンダ 
• Git ってなーに? 
• Git 用語説明 
• 実践Git コマンド
Gitってなーに?
Gitとは 
• バージョン管理システム 
o ファイルとその変更履歴などを管理する 
• ソフトウェアのソースコード 
• データベース定義 
• 環境構築用設定ファイルなどなど 
• 他のバージョン管理システムと違う点 
o 分散型バージョン管理 
o CVS, SVNは集中型バージョン管理システム
集中型バージョン管理 
• SVN, CVS
分散型バージョン管理 
• Git, Mercurial, Bazaar
結局何が違うんすか 
集中型分散型 
• 一本の履歴ツリーで複数 
の更新を一括管理 
→ぱっと見で分かり易い 
• 小規模開発・単発開発 
に向いている? 
o リリースバージョン管理が面倒 
• 全作業がネット接続必須 
• 履歴ツリーを分ける事で 
複数の更新を平行管理 
→ 使いこなすと便利 
• 大規模開発・継続開発 
に向いている? 
o リリースバージョンなどの管理に 
優れている 
• ネットに接続せず作業可
Git 用語説明
Gitの用語説明 
• リポジトリ 
o データを保存する場所 
リモートリポジトリ・ローカルリポジトリ 
• コミット 
o ローカルリポジトリに変更を保存 
• クローン 
o リモートリポジトリのファイルを複製 
• プル 
o 他のリポジトリの更新情報をローカルリポジトリに適用 
• プッシュ 
o ローカルリポジトリからリモートリポジトリに変更を適用 
• ブランチ・マージ→ 後述
ブランチ 
• ファイルの保存履歴を枝分かれ 
→他の環境に影響なくファイル保存履歴を追加 
• 開発用ブランチ、本番リリース用ブランチ・・・ 
• 修正を加えたブランチを束ねる事も可能 
→ マージ
ブランチ実例 
• 「master」ブランチ 
o 本番リリース用 
• 「beta」ブランチ 
o ベータテスト用(社内検証用) 
• 「develop」ブランチ 
o 開発用 
• 「package-master」ブランチ 
o パッケージ販売用 
http://www.atmarkit.co.jp/ait/articles/1305/20/news015_3.html
マージ 
• 複数の改修内容を一つのブランチに適用 
o 開発用ブランチの機能をリリースブランチに 
o ベータテスト用ブランチを開発用ブランチに 
o 使い方いろいろ 
• Gitはこの動作がとにかく速い! 
→ ソースの衝突に強く、大規模開発向き 
• ブランチ、マージこそが分散型バージョン管理の強み
他にGitの強みって? 
• 他サービスとの連携 
o プッシュ時にフックという機能でスクリプト実行が可能 
→ Jenkinsで自動ビルド、自動テスト 
• GitHub 
o Gitのリポジトリをホスティングするサービス 
o プルリクエストのメッセージのやり取り
GitHub 
GitHub=gitのリポジトリホスティングサービス 
←つまりこれ
よくある間違い? 
• フォーク・プルリクエスト 
o Gitの機能じゃなくてGitHubの機能 
• Gitはアカウント登録じゃなく、ユーザー情報の設定 
$ git config --global user.name ”oyamatsu" 
$ git config --global user.email oyamatsu@hoge.com 
• GitHubはWebサービスなのでアカウント登録
実践Git コマンド
まずはGitHub登録 
• https://github.com/
リポジトリの作成 
• 右上の「+」アイコンからNew repository
リポジトリの作成 
← 今回の勉強用にREADMEを作成 
Create repositoryで作成完了
ローカルにクローン 
クリックしてURLをコピー 
• git clone 
https://github.com/~UserName~/~RepositoryName~.git 
o 青字はコピペ部分
READMEを書き換えよう 
• cloneに成功したらRepositoryName ディレクトリが追 
加されているのでREADME.md を書き換え 
• サーバに上げるためには 
$ git add README.md 
# コミット対象ファイルを追加 
$ git commit README.md -m “updateREADME” 
# ローカルリポジトリ内でコミット 
# まだリモートリポジトリは書き換わらない 
$ git push 
# リモートリポジトリに反映 
o → GitHub上の表示が変わる!
上がらないパターン 
• 複数人で同じファイルを編集すると 
先の方法だけではリモートリポジトリに上がらない 
• 他の人の修正を取得 
$ git pull 
o 自動で複数の修正が反映されるパターン 
→ 自動マージパターンと呼称 
o 修正箇所が被って失敗するパターン 
→ コンフリクトパターンと呼称
自動マージパターン 
• $ git pull で修正が取得出来ている 
pull の中身は、 
o $ git fetch 
#リモートリポジトリの最新情報を取得 
o $ git merge origin/master 
# fetchした情報とローカルリポジトリの情報をあわせる 
なので、1コマンドでマージまで可能 
• $ git push を叩けばリモートリポジトリに上がる
コンフリクトパターン 
• Aさんの修正 
# Hello, my Git world! 
• Bさんの修正 
# Hello, our Git world! 
• pull をかけると衝突した修正箇所が 
README.mdに追加されている 
<<<<<<< HEAD 
# Hello, our Git world! 
======= 
# Hello, my Git world! 
>>>>>>> 4fdceeb66529b3fbfda… 
自分の修正 
他の人の修正 
←コミットID
コンフリクトパターン 
• 正しい形に修正 
o 赤いところは消してOK 
• 消してプッシュ作業 
o git commit –a 
# -aオプションを指定すると、編集したファイル全てをコミット対象とする 
o git pull 
# 念のためpull 
o git push → 
<<<<<<< HEAD 
# Hello, our Git world! 
======= 
# Hello, my Git world! 
>>>>>>> 4fdceeb66529b3fbfda…
ブランチ作成 
• 開発用ブランチとして「develop」ブランチを作成 
$ git branch develop 
# 「develop」ブランチを作成 
$ git branch # ブランチ情報を確認すると 
develop # ある! 
* master # 「*」が付いているのは今いるブランチ
developにファイルを追加 
$ git checkout develop # ブランチを切り替え 
Switched to branch 'develop’ 
# ファイルを追加してプッシュ 
$ vi new_README.md 
$ git add new_README.md 
$ git commit –m “add new_README” 
$ git push 
• pushしても「develop」ブランチしか変更されない
一方その頃masterは 
• 「develop」ブランチ 
$ git checkout develop 
Switched to branch 'develop’ 
$ ls 
README.md new_README.md 
• 「master」ブランチ 
$ git checkout master 
Switched to branch 'master’ 
$ ls 
README.md 
• 「develop」の変更は「master」には影響無し
ブランチをマージ 
• 現在のブランチに指定のブランチをマージする 
$ git merge develop # 「master」ブランチから 
$ ls 
README.md new_README.md #きた! 
$ git push 
きた!
その他コマンド 
• リポジトリの作成およびメンテナンスに利用するコマンド 
o git init リポジトリを作成する 
o git clone 既存のリポジトリの複製を作る 
o git fsck リポジトリの正当性チェックを行う 
o git gc リポジトリ内の不要なオブジェクトを削除し、最適化を行う 
• 作業ツリーやブランチを操作・管理するコマンド 
o git status 変更が加えられたファイルを表示する 
o git diff ファイルに加えられた変更点をdiff形式で表示する 
o git add コミットするファイルを指定する 
o git commit 変更点をコミットする 
o git log コミットログを閲覧する 
o git reset 直前のコミットを取り消す 
o git revert 作業ツリーを指定したコミット時点の状態にまで戻す 
o git branch ブランチ情報の表示およびブランチの作成 
o git checkout ブランチの切り替え 
o git show-branch ブランチの作成/変更/マージ履歴を表示 
o git merge ローカルブランチのマージを行う 
o git tag コミットにタグを付ける 
o git stash 現在の作業ツリーの状態を一時的に保管する 
o git rebase ブランチの派生元(上流)を変更する 
• ほかのリポジトリとの連携を行うコマンド 
o git pull ほかのリポジトリの変更点をローカルリポジトリにマージする 
o git push 公開リポジトリに自分のリポジトリの内容を送信する 
http://sourceforge.jp/magazine/09/03/16/0831212
まとめ 
• コマンドがいっぱいあって何でも出来る(らしい) 
• 便利なGitを使いこなすとカッコいい(重要) 
• という事でレッツGit!!

Mais conteúdo relacionado

Mais procurados

WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~Toru Miki
 
デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門dsuke Takaoka
 
マジカルsvnとキュアgit
マジカルsvnとキュアgitマジカルsvnとキュアgit
マジカルsvnとキュアgitTakafumi ONAKA
 
(自分流)Gitの運用ルール
(自分流)Gitの運用ルール(自分流)Gitの運用ルール
(自分流)Gitの運用ルールErina Takei
 
はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーSaeko Yamamoto
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜Takashi Uemura
 
WindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティスWindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティスRyo Sumasu
 
Git LFSを触ってみた
Git LFSを触ってみたGit LFSを触ってみた
Git LFSを触ってみたYuto Suzuki
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理Takafumi Yoshida
 
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013DQNEO
 
Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話xiidec
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespacesIssei Hiraoka
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0Masakazu Matsushita
 
Open Build Service で deb パッケージをビルドしてみた
Open Build Service で deb パッケージをビルドしてみたOpen Build Service で deb パッケージをビルドしてみた
Open Build Service で deb パッケージをビルドしてみたFuminobu Takeyama
 
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」Taisuke Inoue
 
ゆるふわっGit入門
ゆるふわっGit入門ゆるふわっGit入門
ゆるふわっGit入門Keisuke Oohata
 
バージョン管理システム比較資料
バージョン管理システム比較資料バージョン管理システム比較資料
バージョン管理システム比較資料suzzsegv
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例Hirohito Kato
 
Metahub for github
Metahub for githubMetahub for github
Metahub for githubSuguru Oho
 

Mais procurados (20)

WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
 
デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門
 
Yapc2012資料
Yapc2012資料Yapc2012資料
Yapc2012資料
 
マジカルsvnとキュアgit
マジカルsvnとキュアgitマジカルsvnとキュアgit
マジカルsvnとキュアgit
 
(自分流)Gitの運用ルール
(自分流)Gitの運用ルール(自分流)Gitの運用ルール
(自分流)Gitの運用ルール
 
はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダー
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
 
WindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティスWindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティス
 
Git LFSを触ってみた
Git LFSを触ってみたGit LFSを触ってみた
Git LFSを触ってみた
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
 
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
 
Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話Github codespaces すごく良い。もうこれで 十分なんじゃという話
Github codespaces すごく良い。もうこれで 十分なんじゃという話
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
Open Build Service で deb パッケージをビルドしてみた
Open Build Service で deb パッケージをビルドしてみたOpen Build Service で deb パッケージをビルドしてみた
Open Build Service で deb パッケージをビルドしてみた
 
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
 
ゆるふわっGit入門
ゆるふわっGit入門ゆるふわっGit入門
ゆるふわっGit入門
 
バージョン管理システム比較資料
バージョン管理システム比較資料バージョン管理システム比較資料
バージョン管理システム比較資料
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
 

Destaque

Swift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansai
Swift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansaiSwift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansai
Swift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansaiTomohiro Kumagai
 
国際金融決済システムSWIFTとは(短縮版)
国際金融決済システムSWIFTとは(短縮版)国際金融決済システムSWIFTとは(短縮版)
国際金融決済システムSWIFTとは(短縮版)Fusion Reactor LLC
 
Κ.Π.Καβάφης
Κ.Π.ΚαβάφηςΚ.Π.Καβάφης
Κ.Π.Καβάφηςjpapoglou
 
วิธีดำเนินงาน
วิธีดำเนินงานวิธีดำเนินงาน
วิธีดำเนินงานNoot Ting Tong
 
τι υπάρχει πίσω από την κουρτίνα;
τι υπάρχει πίσω από την κουρτίνα;τι υπάρχει πίσω από την κουρτίνα;
τι υπάρχει πίσω από την κουρτίνα;jpapoglou
 
งานคู่
งานคู่งานคู่
งานคู่Ksm' Oom
 
Compact first tb
Compact first tbCompact first tb
Compact first tbDianall
 
Irregularverbs1stgrade2
Irregularverbs1stgrade2Irregularverbs1stgrade2
Irregularverbs1stgrade2Leonimoyano
 
โครงการก่อสร้างงานภูมิทัศน์ สวนเทิดพระเกียรติ ราชพฤกษ์ จังหวัดเชียงใหม่
โครงการก่อสร้างงานภูมิทัศน์ สวนเทิดพระเกียรติ ราชพฤกษ์ จังหวัดเชียงใหม่โครงการก่อสร้างงานภูมิทัศน์ สวนเทิดพระเกียรติ ราชพฤกษ์ จังหวัดเชียงใหม่
โครงการก่อสร้างงานภูมิทัศน์ สวนเทิดพระเกียรติ ราชพฤกษ์ จังหวัดเชียงใหม่kenijikendo
 
Formatocontraction1st
Formatocontraction1stFormatocontraction1st
Formatocontraction1stLeonimoyano
 
à ____à_ر _» _ç_د___ë 2
 à ____à_ر _» _ç_د___ë 2 à ____à_ر _» _ç_د___ë 2
à ____à_ر _» _ç_د___ë 2mwarraky
 
Acuerdos por la excelncia institucion educativa el hobo
Acuerdos por la excelncia institucion educativa el hoboAcuerdos por la excelncia institucion educativa el hobo
Acuerdos por la excelncia institucion educativa el hoboOsmar Hernandez
 
โครงงานคอ..
โครงงานคอ..โครงงานคอ..
โครงงานคอ..Noot Ting Tong
 

Destaque (20)

Swift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansai
Swift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansaiSwift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansai
Swift の可変値と不変値 〜 前回の続き(おまけ)〜 #cocoa_kansai
 
国際金融決済システムSWIFTとは(短縮版)
国際金融決済システムSWIFTとは(短縮版)国際金融決済システムSWIFTとは(短縮版)
国際金融決済システムSWIFTとは(短縮版)
 
Κ.Π.Καβάφης
Κ.Π.ΚαβάφηςΚ.Π.Καβάφης
Κ.Π.Καβάφης
 
วิธีดำเนินงาน
วิธีดำเนินงานวิธีดำเนินงาน
วิธีดำเนินงาน
 
τι υπάρχει πίσω από την κουρτίνα;
τι υπάρχει πίσω από την κουρτίνα;τι υπάρχει πίσω από την κουρτίνα;
τι υπάρχει πίσω από την κουρτίνα;
 
งานคู่
งานคู่งานคู่
งานคู่
 
Compact first tb
Compact first tbCompact first tb
Compact first tb
 
Irregularverbs1stgrade2
Irregularverbs1stgrade2Irregularverbs1stgrade2
Irregularverbs1stgrade2
 
โครงการก่อสร้างงานภูมิทัศน์ สวนเทิดพระเกียรติ ราชพฤกษ์ จังหวัดเชียงใหม่
โครงการก่อสร้างงานภูมิทัศน์ สวนเทิดพระเกียรติ ราชพฤกษ์ จังหวัดเชียงใหม่โครงการก่อสร้างงานภูมิทัศน์ สวนเทิดพระเกียรติ ราชพฤกษ์ จังหวัดเชียงใหม่
โครงการก่อสร้างงานภูมิทัศน์ สวนเทิดพระเกียรติ ราชพฤกษ์ จังหวัดเชียงใหม่
 
Pat3
Pat3Pat3
Pat3
 
finanzas
finanzasfinanzas
finanzas
 
UnPitching
UnPitchingUnPitching
UnPitching
 
Tik
TikTik
Tik
 
Universal Private Banking
Universal Private BankingUniversal Private Banking
Universal Private Banking
 
Formatocontraction1st
Formatocontraction1stFormatocontraction1st
Formatocontraction1st
 
Effectively using LinkedIn
Effectively using LinkedInEffectively using LinkedIn
Effectively using LinkedIn
 
à ____à_ر _» _ç_د___ë 2
 à ____à_ر _» _ç_د___ë 2 à ____à_ر _» _ç_د___ë 2
à ____à_ر _» _ç_د___ë 2
 
Acuerdos por la excelncia institucion educativa el hobo
Acuerdos por la excelncia institucion educativa el hoboAcuerdos por la excelncia institucion educativa el hobo
Acuerdos por la excelncia institucion educativa el hobo
 
โครงงานคอ..
โครงงานคอ..โครงงานคอ..
โครงงานคอ..
 
Vocabulario
VocabularioVocabulario
Vocabulario
 

Semelhante a Git勉強会

第1回Git勉強会
第1回Git勉強会第1回Git勉強会
第1回Git勉強会kunimiya
 
猫にはわからないGit講座
猫にはわからないGit講座猫にはわからないGit講座
猫にはわからないGit講座Yusei Yamanaka
 
VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011 VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011 Hiro Yoshioka
 
gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編Sanae Yamashita
 
2018 07-18 git-hub講座
2018 07-18 git-hub講座2018 07-18 git-hub講座
2018 07-18 git-hub講座貴一 末田
 
git 初めの一歩
git 初めの一歩git 初めの一歩
git 初めの一歩Shin Yoshida
 
Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門kazuki kuriyama
 
今さら聞けない人のためのGit超入門 GitLab 13対応版
今さら聞けない人のためのGit超入門 GitLab 13対応版今さら聞けない人のためのGit超入門 GitLab 13対応版
今さら聞けない人のためのGit超入門 GitLab 13対応版VirtualTech Japan Inc./Begi.net Inc.
 
20120324 git training
20120324 git training20120324 git training
20120324 git trainingTakeshi AKIMA
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!ymmt
 
GitHubワークショップ
GitHubワークショップGitHubワークショップ
GitHubワークショップHiroaki Murayama
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Koji Shinba
 

Semelhante a Git勉強会 (20)

第1回Git勉強会
第1回Git勉強会第1回Git勉強会
第1回Git勉強会
 
猫にはわからないGit講座
猫にはわからないGit講座猫にはわからないGit講座
猫にはわからないGit講座
 
VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011 VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011
 
今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編
 
Gitを使った運用方法
Gitを使った運用方法Gitを使った運用方法
Gitを使った運用方法
 
Git&GitHub入門
Git&GitHub入門Git&GitHub入門
Git&GitHub入門
 
gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編
 
2018 07-18 git-hub講座
2018 07-18 git-hub講座2018 07-18 git-hub講座
2018 07-18 git-hub講座
 
今さら聞けない人のためのGit超入門 2019/11/21
今さら聞けない人のためのGit超入門 2019/11/21今さら聞けない人のためのGit超入門 2019/11/21
今さら聞けない人のためのGit超入門 2019/11/21
 
git 初めの一歩
git 初めの一歩git 初めの一歩
git 初めの一歩
 
Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門Git & ブランチモデルで学ぶ バージョン管理入門
Git & ブランチモデルで学ぶ バージョン管理入門
 
dvcs-kyoto
dvcs-kyotodvcs-kyoto
dvcs-kyoto
 
今さら聞けない人のためのGit超入門 GitLab 13対応版
今さら聞けない人のためのGit超入門 GitLab 13対応版今さら聞けない人のためのGit超入門 GitLab 13対応版
今さら聞けない人のためのGit超入門 GitLab 13対応版
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
20120324 git training
20120324 git training20120324 git training
20120324 git training
 
Git地図
Git地図Git地図
Git地図
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
 
GitHubワークショップ
GitHubワークショップGitHubワークショップ
GitHubワークショップ
 
今さら聞けない人のためのgit超入門
今さら聞けない人のためのgit超入門今さら聞けない人のためのgit超入門
今さら聞けない人のためのgit超入門
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-
 

Git勉強会

  • 2. アジェンダ • Git ってなーに? • Git 用語説明 • 実践Git コマンド
  • 4. Gitとは • バージョン管理システム o ファイルとその変更履歴などを管理する • ソフトウェアのソースコード • データベース定義 • 環境構築用設定ファイルなどなど • 他のバージョン管理システムと違う点 o 分散型バージョン管理 o CVS, SVNは集中型バージョン管理システム
  • 7. 結局何が違うんすか 集中型分散型 • 一本の履歴ツリーで複数 の更新を一括管理 →ぱっと見で分かり易い • 小規模開発・単発開発 に向いている? o リリースバージョン管理が面倒 • 全作業がネット接続必須 • 履歴ツリーを分ける事で 複数の更新を平行管理 → 使いこなすと便利 • 大規模開発・継続開発 に向いている? o リリースバージョンなどの管理に 優れている • ネットに接続せず作業可
  • 9. Gitの用語説明 • リポジトリ o データを保存する場所 リモートリポジトリ・ローカルリポジトリ • コミット o ローカルリポジトリに変更を保存 • クローン o リモートリポジトリのファイルを複製 • プル o 他のリポジトリの更新情報をローカルリポジトリに適用 • プッシュ o ローカルリポジトリからリモートリポジトリに変更を適用 • ブランチ・マージ→ 後述
  • 10. ブランチ • ファイルの保存履歴を枝分かれ →他の環境に影響なくファイル保存履歴を追加 • 開発用ブランチ、本番リリース用ブランチ・・・ • 修正を加えたブランチを束ねる事も可能 → マージ
  • 11. ブランチ実例 • 「master」ブランチ o 本番リリース用 • 「beta」ブランチ o ベータテスト用(社内検証用) • 「develop」ブランチ o 開発用 • 「package-master」ブランチ o パッケージ販売用 http://www.atmarkit.co.jp/ait/articles/1305/20/news015_3.html
  • 12. マージ • 複数の改修内容を一つのブランチに適用 o 開発用ブランチの機能をリリースブランチに o ベータテスト用ブランチを開発用ブランチに o 使い方いろいろ • Gitはこの動作がとにかく速い! → ソースの衝突に強く、大規模開発向き • ブランチ、マージこそが分散型バージョン管理の強み
  • 13. 他にGitの強みって? • 他サービスとの連携 o プッシュ時にフックという機能でスクリプト実行が可能 → Jenkinsで自動ビルド、自動テスト • GitHub o Gitのリポジトリをホスティングするサービス o プルリクエストのメッセージのやり取り
  • 15. よくある間違い? • フォーク・プルリクエスト o Gitの機能じゃなくてGitHubの機能 • Gitはアカウント登録じゃなく、ユーザー情報の設定 $ git config --global user.name ”oyamatsu" $ git config --global user.email oyamatsu@hoge.com • GitHubはWebサービスなのでアカウント登録
  • 20. ローカルにクローン クリックしてURLをコピー • git clone https://github.com/~UserName~/~RepositoryName~.git o 青字はコピペ部分
  • 21. READMEを書き換えよう • cloneに成功したらRepositoryName ディレクトリが追 加されているのでREADME.md を書き換え • サーバに上げるためには $ git add README.md # コミット対象ファイルを追加 $ git commit README.md -m “updateREADME” # ローカルリポジトリ内でコミット # まだリモートリポジトリは書き換わらない $ git push # リモートリポジトリに反映 o → GitHub上の表示が変わる!
  • 22. 上がらないパターン • 複数人で同じファイルを編集すると 先の方法だけではリモートリポジトリに上がらない • 他の人の修正を取得 $ git pull o 自動で複数の修正が反映されるパターン → 自動マージパターンと呼称 o 修正箇所が被って失敗するパターン → コンフリクトパターンと呼称
  • 23. 自動マージパターン • $ git pull で修正が取得出来ている pull の中身は、 o $ git fetch #リモートリポジトリの最新情報を取得 o $ git merge origin/master # fetchした情報とローカルリポジトリの情報をあわせる なので、1コマンドでマージまで可能 • $ git push を叩けばリモートリポジトリに上がる
  • 24. コンフリクトパターン • Aさんの修正 # Hello, my Git world! • Bさんの修正 # Hello, our Git world! • pull をかけると衝突した修正箇所が README.mdに追加されている <<<<<<< HEAD # Hello, our Git world! ======= # Hello, my Git world! >>>>>>> 4fdceeb66529b3fbfda… 自分の修正 他の人の修正 ←コミットID
  • 25. コンフリクトパターン • 正しい形に修正 o 赤いところは消してOK • 消してプッシュ作業 o git commit –a # -aオプションを指定すると、編集したファイル全てをコミット対象とする o git pull # 念のためpull o git push → <<<<<<< HEAD # Hello, our Git world! ======= # Hello, my Git world! >>>>>>> 4fdceeb66529b3fbfda…
  • 26. ブランチ作成 • 開発用ブランチとして「develop」ブランチを作成 $ git branch develop # 「develop」ブランチを作成 $ git branch # ブランチ情報を確認すると develop # ある! * master # 「*」が付いているのは今いるブランチ
  • 27. developにファイルを追加 $ git checkout develop # ブランチを切り替え Switched to branch 'develop’ # ファイルを追加してプッシュ $ vi new_README.md $ git add new_README.md $ git commit –m “add new_README” $ git push • pushしても「develop」ブランチしか変更されない
  • 28. 一方その頃masterは • 「develop」ブランチ $ git checkout develop Switched to branch 'develop’ $ ls README.md new_README.md • 「master」ブランチ $ git checkout master Switched to branch 'master’ $ ls README.md • 「develop」の変更は「master」には影響無し
  • 29. ブランチをマージ • 現在のブランチに指定のブランチをマージする $ git merge develop # 「master」ブランチから $ ls README.md new_README.md #きた! $ git push きた!
  • 30. その他コマンド • リポジトリの作成およびメンテナンスに利用するコマンド o git init リポジトリを作成する o git clone 既存のリポジトリの複製を作る o git fsck リポジトリの正当性チェックを行う o git gc リポジトリ内の不要なオブジェクトを削除し、最適化を行う • 作業ツリーやブランチを操作・管理するコマンド o git status 変更が加えられたファイルを表示する o git diff ファイルに加えられた変更点をdiff形式で表示する o git add コミットするファイルを指定する o git commit 変更点をコミットする o git log コミットログを閲覧する o git reset 直前のコミットを取り消す o git revert 作業ツリーを指定したコミット時点の状態にまで戻す o git branch ブランチ情報の表示およびブランチの作成 o git checkout ブランチの切り替え o git show-branch ブランチの作成/変更/マージ履歴を表示 o git merge ローカルブランチのマージを行う o git tag コミットにタグを付ける o git stash 現在の作業ツリーの状態を一時的に保管する o git rebase ブランチの派生元(上流)を変更する • ほかのリポジトリとの連携を行うコマンド o git pull ほかのリポジトリの変更点をローカルリポジトリにマージする o git push 公開リポジトリに自分のリポジトリの内容を送信する http://sourceforge.jp/magazine/09/03/16/0831212
  • 31. まとめ • コマンドがいっぱいあって何でも出来る(らしい) • 便利なGitを使いこなすとカッコいい(重要) • という事でレッツGit!!