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 svnではじめる忍者のごとく潜むgit

16,908 views

Published on

社内勉強会で使用した、git svnをオススメするスライド

Published in: Technology
  • Be the first to comment

Git svnではじめる忍者のごとく潜むgit

  1. 1. * 〜Git入門をあえてsvnから入る、の巻〜
  2. 2. * なぜgitか?なぜgit-svnか?* Gitのインストール* git svn clone、trunkとmasterの関係* コミット、そしてプッシュ* ブランチ(切る。作業する。リベース)* ブランチしたらプッシュの前に* その他のtips* まとめ *
  3. 3. *忍者のごとく、subversionに潜む
  4. 4. *Gitにはローカルレポジトリ=自由がある! * ひとりひとりが専用のレポジトリ * バージョン管理の便利さを気兼ねなく* コミット済みのコードを変更できる * あのコミットを無かった事に * Rev(21)とRev(25)をまとめたかった・・・ * 機能追加にまじってバグ修正かよ・・・ * つまり履歴が奇麗に! *
  5. 5. *すぐにgitに移行できるとは限らない *チームメイトへの配慮 *社の方針*git-svn *gitの使い勝手+subversionの結果 *Svn派にバレずにを邪魔せずに使える *
  6. 6. * ぶっちゃけ公式見れば良いんだけどね
  7. 7. 見ればわかる!…というわけにも行かないので
  8. 8. * コンソールは公式からどうぞ * http://git-scm.com/downloads* GUI(Mac) * 私はSourceTree * AppStoreで検索。もしくはggr* GUI(Win) * Tortoise gitがオススメらしいよ * ぐぐってみてね *
  9. 9. * Gitとsubversionをつなぐもの
  10. 10. *Subversionにおけるチェックアウト*Gitではgit clone * リモートブランチをローカルリポジトリにコピー *これをsubversionに対して行える*svn時代の履歴もだいたい引き継げます *
  11. 11. * $ git svn clone –s リポジトリのURL * -sオプションは—stdlyoutの略 * trunk, tags, branchesをよしなにコンバート *
  12. 12. * $ git branch –r * リモートブランチ一覧 * trunk:svnのtrunk* $ git branch * ブランチの一覧 * master:基本的に弄るのはこっち *
  13. 13. * きらめくstageでまた会える!
  14. 14. * gitにはstageという考え方があります * 編集した内容すべてをコミットするとは限らない * Stageしたものがコミットされる * コードが皆に行き渡るまで * 編集内容をステージ * ステージをコミット * コミットをプッシュ * 皆がプルしてようやく手元に*
  15. 15. * まずは適当に自分の名前のファイルでも作って* $ git add . * ステージする* $ git commit -m‖メッセージ‖ * ―メッセージ‖を添えてコミットする* この時点ではまだsubversionに影響なし *
  16. 16. * $ git svn dcommit –n * コミットされる内容の確認 * nはno commitのnです。たぶん* $ git svn dcommit * 実際にコミット* ちなみに * $ git config user.name ―Your Name‖ * $ git config user.email you@email.com* 設定しておくとgitに移行した時に楽 *
  17. 17. * 先に誰かがコミットしてた!* 問題なければもう一回git svn dcommitでOK* とはいえコンフリクトする時にはする * 出来るうちにsvn update的な事を *
  18. 18. * $ git svn rebase * $ git svn fetchとgit merge trunkの融合* ただし編集中のファイルがあるとできない * コミットする * Stashを使ってみる* git stash と git stash pop * Git stash * Git svn rebase * Git stash pop * 預けて、updateして、引き出す *
  19. 19. *切る、作業する、リベースする
  20. 20. * わりと本題だったり* ブランチ自体はsubversionと大差無し * しかし気軽さと便利さが違う* チェックアウトとかいくつかの用語が違う * 勘違いしないように、恐れないように* ブランチを作り、履歴の汚れなんか気にせずにコミット、コミット、コミット!! *
  21. 21. * $git checkout –b test * 今いる場所からtestブランチを作成して移動* $git checkout –b test master * masterブランチからtestブランチを作成して移動* $git branch test * 作成するけど移動はしない* タグの場所からも作れる *
  22. 22. * $git branch –d test * testブランチを削除* $git branch –D test * testブランチを強制削除 * どこにもマージされてないけど気にしないぜ! *
  23. 23. * ―潜む‖極意ここにあり
  24. 24. * git svn dcommitで全コミットが伝わる * そのままではsvnのログが・・・ * しかし自由にコミットしたい* コミットを整理整頓して見通しよくしよう * 他のブランチで作業してmasterにマージ * 歴史を改変しコミットを整理整頓 *
  25. 25. * マスターに戻ってBRANCHをマージ * $git checkout master * $git merge –no-ff BRANCH * コメントはまとめてもらえないのでまた書く* コメントを大事にしたい * $git merge –squash BRANCH * コミットされないが、コメントをまとめてくれる * 履歴がBRANCHと繋がらないので若干ややこしい * $git commit が必要 *
  26. 26. 元の状態 * http://d.hatena.ne.jp/sinsoku/20111025/1319497900 より引用
  27. 27. --ff(標準のmerge) * http://d.hatena.ne.jp/sinsoku/20111025/1319497900 より引用
  28. 28. --no-ff * http://d.hatena.ne.jp/sinsoku/20111025/1319497900 より引用
  29. 29. --squash * http://d.hatena.ne.jp/sinsoku/20111025/1319497900 より引用
  30. 30. * コミットログ * 機能Aを追加 * 機能Bを追加 * あれを修正 * 機能Bを修正 * 機能Aを更新 * 機能Aを更新 * 機能Bのtypoを修正* かっこわるい!! *
  31. 31. * 新しいコミットログ * 完成された機能Aを追加 * Typoなんてない機能Bを追加 * あれを修正* このすっきり感が理想* あとからでもこんな奇麗な履歴にできる。 そう、Gitならね・・・ *
  32. 32. * git rebase -i * おそらく私がもっとも多用するコマンド * 大好き。* コミットを三つの呪文で理想のカタチへ * Edit(e) * Fix(f) * Squash(s)* git rebase –i HEAD^^ * 二つ前まで遡る(^の数に対応) *
  33. 33. *
  34. 34. * git commit –amendでコメントの書き直し* git add –p でこまかくステージ* git log --graph --branches –oneline* git status *
  35. 35. *

×