35
〜 Git 〜〜〜〜〜〜 svn 〜〜〜〜 〜〜〜 * Git-svn でででで でででででででで git

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

〜 Git 入門をあえて svn から入る、の巻〜

*Git-svnで始める忍者のごとく潜むgit

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

*もくじ

*なぜ git か?なぜ git-svn か?*Git のインストール*git svn clone 、 trunk と master の関係*コミット、そしてプッシュ*ブランチ(切る。作業する。リベース)*ブランチしたらプッシュの前に*その他の tips

*まとめ

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

*なぜ gitか?なぜ git-svnか?

忍者のごとく、 subversion に潜む

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

*なぜ gitか?

*Git にはローカルレポジトリ=自由がある!*ひとりひとりが専用のレポジトリ*バージョン管理の便利さを気兼ねなく

*コミット済みのコードを変更できる*あのコミットを無かった事に*Rev(21) と Rev(25) をまとめたかった・・・*機能追加にまじってバグ修正かよ・・・*つまり履歴が奇麗に!

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

*なぜ git svnか?

*すぐに git に移行できるとは限らない*チームメイトへの配慮*社の方針

*git-svn

*git の使い勝手+ subversion の結果*Svn 派にバレずにを邪魔せずに使える

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

*Gitのインストールぶっちゃけ公式見れば良いんだけどね

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

http://git-scm.com/downloads

見ればわかる!… というわけにも行かないので

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

*Gitのインストール方法

*コンソールは公式からどうぞ*http://git-scm.com/downloads

*GUI ( Mac )*私は SourceTree

*AppStore で検索。もしくは ggr

*GUI ( Win )*Tortoise git がオススメらしいよ*ぐぐってみてね

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

*git svn clonetrunkとmasterの

関係Git と subversion をつなぐもの

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

*git svn clone

*Subversion におけるチェックアウト*Git では git clone*リモートブランチをローカルリポジトリにコピー

*これを subversion に対して行える*svn 時代の履歴もだいたい引き継げます

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

*try

*$ git svn clone –s リポジトリの URL

*-s オプションは— stdlyout の略*trunk, tags, branches をよしなにコンバート

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

*try

*$ git branch –r

*リモートブランチ一覧*trunk : svn の trunk

*$ git branch

*ブランチの一覧*master :基本的に弄るのはこっち

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

*コミット、そしてプッシュ

きらめく stage でまた会える!

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

*コミット、そしてプッシュ

*git には stage という考え方があります*編集した内容すべてをコミットするとは限らない*Stage したものがコミットされる

*コードが皆に行き渡るまで*編集内容をステージ*ステージをコミット*コミットをプッシュ*皆がプルしてようやく手元に

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

*try

*まずは適当に自分の名前のファイルでも作って*$ git add .

*ステージする*$ git commit -m” メッセージ”*“ メッセージ”を添えてコミットする

*この時点ではまだ subversion に影響なし

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

*try

*$ git svn dcommit –n

*コミットされる内容の確認*n は no commit の n です。たぶん

*$ git svn dcommit

*実際にコミット

*ちなみに*$ git config user.name “Your Name”

*$ git config user.email [email protected]

*設定しておくと git に移行した時に楽

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

*コンフリクト

*先に誰かがコミットしてた!*問題なければもう一回 git svn dcommit で OK

*とはいえコンフリクトする時にはする*出来るうちに svn update 的な事を

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

*try

*$ git svn rebase

*$ git svn fetch と git merge trunk の融合*ただし編集中のファイルがあるとできない*コミットする*Stash を使ってみる

*git stash と git stash pop

*Git stash

*Git svn rebase

*Git stash pop

*預けて、 update して、引き出す

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

*ブランチ切る、作業する、リベースする

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

*ブランチ

*わりと本題だったり*ブランチ自体は subversion と大差無し*しかし気軽さと便利さが違う

*チェックアウトとかいくつかの用語が違う*勘違いしないように、恐れないように

*ブランチを作り、履歴の汚れなんか気にせずにコミット、コミット、コミット!!

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

*try

*$git checkout –b test

*今いる場所から test ブランチを作成して移動*$git checkout –b test master

*master ブランチから test ブランチを作成して移動

*$git branch test

*作成するけど移動はしない

*タグの場所からも作れる

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

*try

*$git branch –d test

*test ブランチを削除*$git branch –D test

*test ブランチを強制削除*どこにもマージされてないけど気にしないぜ!

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

*ブランチしたらプッシュの前に

“ 潜む”極意ここにあり

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

*プッシュの前に

*git svn dcommit で全コミットが伝わる*そのままでは svn のログが・・・*しかし自由にコミットしたい

*コミットを整理整頓して見通しよくしよう*他のブランチで作業して master にマージ*歴史を改変しコミットを整理整頓

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

*try

*マスターに戻って BRANCH をマージ*$git checkout master

*$git merge –no-ff BRANCH

*コメントはまとめてもらえないのでまた書く

*コメントを大事にしたい*$git merge –squash BRANCH

*コミットされないが、コメントをまとめてくれる*履歴が BRANCH と繋がらないので若干ややこし

い*$git commit が必要

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

*--no-ff --squash

元の状態

http://d.hatena.ne.jp/sinsoku/20111025/1319497900 より引用

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

*--no-ff --squash

--ff (標準の merge )

http://d.hatena.ne.jp/sinsoku/20111025/1319497900 より引用

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

*--no-ff --squash

--no-ff

http://d.hatena.ne.jp/sinsoku/20111025/1319497900 より引用

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

*--no-ff --squash

--squash

http://d.hatena.ne.jp/sinsoku/20111025/1319497900 より引用

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

*歴史改変

*コミットログ*機能 A を追加*機能 B を追加*あれを修正*機能 B を修正*機能 A を更新*機能 A を更新*機能 B の typo を修正

*かっこわるい!!

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

*歴史改変

*新しいコミットログ*完成された機能 A を追加*Typo なんてない機能 B を追加*あれを修正

*このすっきり感が理想

*あとからでもこんな奇麗な履歴にできる。そう、 Git ならね・・・

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

*歴史改変

*git rebase -i

*おそらく私がもっとも多用するコマンド*大好き。

*コミットを三つの呪文で理想のカタチへ*Edit(e)

*Fix(f)

*Squash(s)

*git rebase –i HEAD^^

*二つ前まで遡る (^ の数に対応 )

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

*その他の tips

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

*力尽きた… .

*git commit –amend でコメントの書き直し*git add –p でこまかくステージ*git log --graph --branches –oneline

*git status

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

*ありがとうございました