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