Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Git勉強会

748 views

Published on

2014/10/04 Git勉強会について

Published in: Engineering
  • Be the first to comment

Git勉強会

  1. 1. Gitを学ぼう!
  2. 2. アジェンダ • Git ってなーに? • Git 用語説明 • 実践Git コマンド
  3. 3. Gitってなーに?
  4. 4. Gitとは • バージョン管理システム o ファイルとその変更履歴などを管理する • ソフトウェアのソースコード • データベース定義 • 環境構築用設定ファイルなどなど • 他のバージョン管理システムと違う点 o 分散型バージョン管理 o CVS, SVNは集中型バージョン管理システム
  5. 5. 集中型バージョン管理 • SVN, CVS
  6. 6. 分散型バージョン管理 • Git, Mercurial, Bazaar
  7. 7. 結局何が違うんすか 集中型分散型 • 一本の履歴ツリーで複数 の更新を一括管理 →ぱっと見で分かり易い • 小規模開発・単発開発 に向いている? o リリースバージョン管理が面倒 • 全作業がネット接続必須 • 履歴ツリーを分ける事で 複数の更新を平行管理 → 使いこなすと便利 • 大規模開発・継続開発 に向いている? o リリースバージョンなどの管理に 優れている • ネットに接続せず作業可
  8. 8. Git 用語説明
  9. 9. Gitの用語説明 • リポジトリ o データを保存する場所 リモートリポジトリ・ローカルリポジトリ • コミット o ローカルリポジトリに変更を保存 • クローン o リモートリポジトリのファイルを複製 • プル o 他のリポジトリの更新情報をローカルリポジトリに適用 • プッシュ o ローカルリポジトリからリモートリポジトリに変更を適用 • ブランチ・マージ→ 後述
  10. 10. ブランチ • ファイルの保存履歴を枝分かれ →他の環境に影響なくファイル保存履歴を追加 • 開発用ブランチ、本番リリース用ブランチ・・・ • 修正を加えたブランチを束ねる事も可能 → マージ
  11. 11. ブランチ実例 • 「master」ブランチ o 本番リリース用 • 「beta」ブランチ o ベータテスト用(社内検証用) • 「develop」ブランチ o 開発用 • 「package-master」ブランチ o パッケージ販売用 http://www.atmarkit.co.jp/ait/articles/1305/20/news015_3.html
  12. 12. マージ • 複数の改修内容を一つのブランチに適用 o 開発用ブランチの機能をリリースブランチに o ベータテスト用ブランチを開発用ブランチに o 使い方いろいろ • Gitはこの動作がとにかく速い! → ソースの衝突に強く、大規模開発向き • ブランチ、マージこそが分散型バージョン管理の強み
  13. 13. 他にGitの強みって? • 他サービスとの連携 o プッシュ時にフックという機能でスクリプト実行が可能 → Jenkinsで自動ビルド、自動テスト • GitHub o Gitのリポジトリをホスティングするサービス o プルリクエストのメッセージのやり取り
  14. 14. GitHub GitHub=gitのリポジトリホスティングサービス ←つまりこれ
  15. 15. よくある間違い? • フォーク・プルリクエスト o Gitの機能じゃなくてGitHubの機能 • Gitはアカウント登録じゃなく、ユーザー情報の設定 $ git config --global user.name ”oyamatsu" $ git config --global user.email oyamatsu@hoge.com • GitHubはWebサービスなのでアカウント登録
  16. 16. 実践Git コマンド
  17. 17. まずはGitHub登録 • https://github.com/
  18. 18. リポジトリの作成 • 右上の「+」アイコンからNew repository
  19. 19. リポジトリの作成 ← 今回の勉強用にREADMEを作成 Create repositoryで作成完了
  20. 20. ローカルにクローン クリックしてURLをコピー • git clone https://github.com/~UserName~/~RepositoryName~.git o 青字はコピペ部分
  21. 21. READMEを書き換えよう • cloneに成功したらRepositoryName ディレクトリが追 加されているのでREADME.md を書き換え • サーバに上げるためには $ git add README.md # コミット対象ファイルを追加 $ git commit README.md -m “updateREADME” # ローカルリポジトリ内でコミット # まだリモートリポジトリは書き換わらない $ git push # リモートリポジトリに反映 o → GitHub上の表示が変わる!
  22. 22. 上がらないパターン • 複数人で同じファイルを編集すると 先の方法だけではリモートリポジトリに上がらない • 他の人の修正を取得 $ git pull o 自動で複数の修正が反映されるパターン → 自動マージパターンと呼称 o 修正箇所が被って失敗するパターン → コンフリクトパターンと呼称
  23. 23. 自動マージパターン • $ git pull で修正が取得出来ている pull の中身は、 o $ git fetch #リモートリポジトリの最新情報を取得 o $ git merge origin/master # fetchした情報とローカルリポジトリの情報をあわせる なので、1コマンドでマージまで可能 • $ git push を叩けばリモートリポジトリに上がる
  24. 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. 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. 26. ブランチ作成 • 開発用ブランチとして「develop」ブランチを作成 $ git branch develop # 「develop」ブランチを作成 $ git branch # ブランチ情報を確認すると develop # ある! * master # 「*」が付いているのは今いるブランチ
  27. 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. 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. 29. ブランチをマージ • 現在のブランチに指定のブランチをマージする $ git merge develop # 「master」ブランチから $ ls README.md new_README.md #きた! $ git push きた!
  30. 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. 31. まとめ • コマンドがいっぱいあって何でも出来る(らしい) • 便利なGitを使いこなすとカッコいい(重要) • という事でレッツGit!!

×