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

16,086 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. *

×