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講座

4,387 views

Published on

Published in: Technology
  • Be the first to comment

猫にはわからないGit講座

  1. 1. 実践Git/GitHub講座 みゆっき(@toriimiyukki) 猫にはわからない
  2. 2. Git/GitHubについて知る
  3. 3. バージョン管理システムとは ➡ バージョン管理システム(バージョンかんりシステム)とは ➡ コンピュータ上で作成、編集されるファイルの変更履歴を管理するための システム。特にソフトウェア開発においてソースコードの管理に用いられ ることが多い。 3 主なバージョン管理システム CVS - 集中型。C言語で実装。 Git - 分散型。Linuxのコード管理のために作られた。C言語、Perlなどで実装。 Mercurial - 分散型。Python、C言語で実装。 Subversion - 集中型。CVSの改良版という位置づけ。C言語で実装。
  4. 4. バージョン管理システムの種類 4 ➡ ローカル型 ➡ ローカルのファイルやディレクトリをリ ネームして管理 資料.pdf.20150621 資料.pdf 資料.pdf.back リポジトリ 作業コピー 作業コピー ➡ 集中型 ➡ リポジトリをサーバで管理し、ユーザーは 作業コピー(仮のディレクトリ)を管理 ➡ 分散型 ➡ サーバはリポジトリを管理し、ユーザーも ローカルにリポジトリを管理 リポジトリ リポジトリ リポジトリ
  5. 5. GitとGitHub ➡ Git ➡ 分散型のバージョン管理システム 5 ➡   ➡ 分散型のリモートリポジトリを担っ てくれるサービス ➡ Pull Requestと呼ばれる、コードを レビューしながらマージできる機能 があり、OSS界隈でよく利用される リポジトリ リポジトリ リポジトリ
  6. 6. Gitのいいところ ➡ 分散型 ➡ リポジトリは全ての履歴を含んでいるため、オフラインでもコミットが可能 6 ➡ 高速 ➡ コミットごとにスナップショットがあり、変更のないファイルはリンクを持つ ➡ きれいな歴史 ➡ 複数のコミットを1つにしたり、コミットを修正することが容易にできる A B C
  7. 7. GitとGitHubで何ができるか ➡ Ruby on Railsなど多くのOSSがGithub上で開発されている ➡ 開発だけでなく、機能追加の議論などもIssueを通して行われている 7 オープンソースソフトウェアの開発 社内でのプロジェクト管理に使用 ➡ Yahoo! Japan, Cookpad, CyberAgent, ドワンゴなど日本でも多くの企業で使われている ドキュメントやチュートリアルの公開 ➡ 各種マニュアルやチュートリアルの公開でも使われる ➡ ドイツの法律はGitHubで管理されている 業務委託や採用時の判断に利用 ➡ プログラマの力量を測るためにGitHub上のコードを見る採用が増えている
  8. 8. Git/GitHubの用語
  9. 9. ブランチ ブランチ Gitの用語 9 コミット A B C B マージ マージコミット
  10. 10. ➡ Pull Request ➡ ブランチをマージするために立てるリクエスト ➡ OSSでは、PRを立てたあとコミッタなどのレビューを受けてからマージする GitHubの用語 10 ➡ LGTM ➡ Looks good to me ➡ Pull Requstがマージしても大丈夫なときのOKサイン ➡ Octcat ➡ GitHubの公式キャラクター ➡ かわいい
  11. 11. Gitの基本的な使い方
  12. 12. Gitの基本的な使い方 12 $untracked コミット tracked unstaged staged
  13. 13. Gitの基本的な使い方 13 $ vi index.html private.htmluntracked index.html private.html コミット tracked unstaged staged
  14. 14. Gitの基本的な使い方 14 $ vi index.html private.html $ git add index.html untracked private.html コミット tracked unstaged staged index.html
  15. 15. Gitの基本的な使い方 15 $ vi index.html private.html $ git add index.html $ git commit -m “トップページ追加” untracked private.html Aコミット tracked unstaged staged index.html
  16. 16. Gitの基本的な使い方 16 $ vi index.html private.html $ git add index.html $ git commit -m “トップページ追加” $ vi index.html untracked A private.html コミット tracked unstaged staged index.html
  17. 17. Gitの基本的な使い方 17 $ vi index.html private.html $ git add index.html $ git commit -m “トップページ追加” $ vi index.html $ git add index.html untracked A private.html コミット tracked unstaged staged index.html
  18. 18. Gitの基本的な使い方 18 $ vi index.html private.html $ git add index.html $ git commit -m “トップページ追加” $ vi index.html $ git add index.html $ git commit -m “トップページ修正” untracked A B private.html コミット tracked unstaged staged index.html
  19. 19. Gitのよく使うコマンド
  20. 20. Gitのよく使うコマンド(1/6) 20 git init ➡ 現在のディレクトリをGitリポジトリとして初期化する $ rails new new-app $ cd new-app $ git init これにより「.git」ディレクトリが作られる、 Gitリポジトリでなくしたい場合は「.git」を削除すればよい git clone ➡ リモートリポジトリからローカルリポジトリを作成する $ git clone git@github.com:atom/atom.git Cloning into 'atom'... $ cd atom
  21. 21. Gitのよく使うコマンド(2/6) 21 git add ➡ 指定されたファイルやディレクトリをstageに追加する $ git add index.html $ git add . #すべて追加する $ git add --all . #削除も含めてすべて追加する git commit ➡ stageのファイルやディレクトリをコミットする $ git commit #コミットメッセージを書くためエディタが起動 $ git commit -m “○○を修正” #コミットメッセージを一緒にする $ git commit --amend #前回のコミットに追加する
  22. 22. Gitのよく使うコマンド(3/6) 22 git checkout ➡ ディレクトリを特定のコミットやブランチの状態にする $ git checkout origin/master $ git checkout 52f4ad0… $ git checkout -b feature/top-page origin/master #ブランチの作成もする git branch $ git branch feature/top-page $ git branch -m feature/top-page feature/about-page #ブランチ名の変更 ➡ 現在のコミットからブランチを作成する
  23. 23. Gitのよく使うコマンド(4/6) 23 git merge ➡ 指定されたブランチを現在のブランチにマージ(統合)する $ git checkout feature/top-page $ git merge feature/top-page-a #マージコミットが発生する git rebase ➡ コミットを修正したり、派生元を修正する $ git rebase -i HEAD^^^ #HEADの3つ前からコミットを修正する $ git rebase origin/master #ブランチを最新のorigin/masterから派生させる
  24. 24. Gitのよく使うコマンド(5/6) 24 git fetch ➡ リモートリポジトリの内容をローカルリポジトリに同期する $ git fetch origin master $ git checkout origin/master #リモートリポジトリの最新のmasterの状態にする $ git fetch origin #ブランチ名を省略すると全てのブランチを対象とする git pull ➡ リモートリポジトリの内容を取り込み、ローカルブランチにマージする $ git pull origin master $ git fetch origin master && git merge origin/master #上と同じ
  25. 25. Gitのよく使うコマンド(6/6) 25 git push ➡ ローカルリポジトリの内容をリモートリポジトリに反映させる $ git push origin feature/top-page $ git push origin feature/top-page -f #rebaseなどをした場合は強制(f)する $ git push origin master -f #絶対に打ってはいけない git remote ➡ リモートリポジトリを登録、編集する $ git remote add origin git@github.com:miyukki/webpage.git $ git remote rm origin
  26. 26. Gitの便利なコマンド
  27. 27. Gitの便利なコマンド 27 git log ➡ コミットの履歴を確認する git diff ➡ ファイルの差分を表示する ➡ オプション無しだとunstagedなファイルの差分を表示 git grep ➡ Git管理下のファイルの中から文字列を検索する / 実は一番使う git reset ➡ 変更を元に戻す git stash ➡ 変更を加えたtrackedなファイルを一時退避する
  28. 28. 実際の開発での使われ方
  29. 29. merge 実際の開発では… 29 トップページに機能AとBを作りたいからブランチを切ろう! トップページの不具合の修正をしなきゃ… 元となるコミット master feature A B feature merge 修
  30. 30. merge merge ダメな解決方法 30 元となるコミット master feature A B 修feature ➡ featureブランチにmasterブランチを一度mergeする merge 履歴が汚くなる、開発中はmasterの状況を反映しにくい
  31. 31. A B merge A B rebase ベストな解決方法 31 元となるコミット master feature 修feature ➡ featureブランチを最新のmasterブランチからrebaseする merge 履歴が綺麗、最新の環境で開発ができる
  32. 32. 実践Git/GitHub
  33. 33. はじめに… ➡ Gitを使いはじめる前に、Gitの設定が必要です ➡ これをすることにより、このコミットをした人は誰かということを他の人が知るこ とが出来ます 33 $ git config --global user.name “Yusei Yamanaka” $ git config --global user.email yusei1128@gmail.com $ git config --global core.editor nano
  34. 34. archbotを改善してみよう! 34 https://github.com/sfc-arch/archbot archbot ➡ SFC-RGのSlackチームにいるボットを触って何か機能を付けてPull Requestをしてみましょう

×