O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

猫にはわからないGit講座

4.373 visualizações

Publicada em

Publicada em: Tecnologia
  • Seja o primeiro a comentar

猫にはわからない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をしてみましょう

×