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

  • 10,858 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
10,858
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
34
Comments
0
Likes
30

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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