狠狠撸

狠狠撸Share a Scribd company logo
*
    ?骋颈迟入门をあえて蝉惫苍から入る、の巻?
* なぜgitか?なぜgit-svnか?
* Gitのインストール
* git svn clone、trunkとmasterの関係
* コミット、そしてプッシュ
* ブランチ(切る。作業する。リベース)
* ブランチしたらプッシュの前に
* その他のtips
* まとめ

                            *
*
忍者のごとく、subversionに潜む
*Gitにはローカルレポジトリ=自由がある!
 * ひとりひとりが専用のレポジトリ
 * バージョン管理の便利さを気兼ねなく
* コミット済みのコードを変更できる
 * あのコミットを無かった事に
 * Rev(21)とRev(25)をまとめたかった???
 * 機能追加にまじってバグ修正かよ???
 * つまり履歴が奇麗に!


                   *
*すぐにgitに移行できるとは限らない
  *チームメイトへの配慮
  *社の方針
*git-svn
  *gitの使い勝手+subversionの結果
  *Svn派にバレずにを邪魔せずに使える


            *
*
    ぶっちゃけ公式见れば良いんだけどね
見ればわかる!
…というわけにも行かないので
* コンソールは公式からどうぞ
 * http://git-scm.com/downloads
* GUI(Mac)
 * 私はSourceTree
 * AppStoreで検索。もしくはggr
* GUI(Win)
 * Tortoise gitがオススメらしいよ
 * ぐぐってみてね


   *
*
    骋颈迟と蝉耻产惫别谤蝉颈辞苍をつなぐもの
*Subversionにおけるチェックアウト
*Gitではgit clone
 * リモートブランチをローカルリポジトリにコピー
 *これをsubversionに対して行える
*svn時代の履歴もだいたい引き継げます




             *
* $ git svn clone –s リポジトリのURL
  * -sオプションは—stdlyoutの略
  * trunk, tags, branchesをよしなにコンバート




                                      *
* $ git branch –r
   * リモートブランチ一覧
   * trunk:svnのtrunk
* $ git   branch
   * ブランチの一覧
   * master:基本的に弄るのはこっち




                          *
*
    きらめく蝉迟补驳别でまた会える!
* gitにはstageという考え方があります
     * 編集した内容すべてをコミットするとは限らない
     * Stageしたものがコミットされる
    * コードが皆に行き渡るまで
     * 編集内容をステージ
     * ステージをコミット
     * コミットをプッシュ
     * 皆がプルしてようやく手元に


*
* まずは適当に自分の名前のファイルでも作って
* $ git add .
 * ステージする
* $ git commit -m‖メッセージ‖
 * ―メッセージ‖を添えてコミットする

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


                            *
* $ 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に移行した時に楽
                                            *
* 先に誰かがコミットしてた!
* 問題なければもう一回git svn dcommitでOK
* とはいえコンフリクトする時にはする
 * 出来るうちにsvn update的な事を




                *
* $ 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と大差無し
 * しかし気軽さと便利さが違う
* チェックアウトとかいくつかの用語が違う
 * 勘違いしないように、恐れないように

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


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

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

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




                        *
*
    ―潜む‖极意ここにあり
* git svn dcommitで全コミットが伝わる
 * そのままではsvnのログが???
 * しかし自由にコミットしたい

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



             *
* マスターに戻ってBRANCHをマージ
 * $git checkout master
 * $git merge –no-ff BRANCH
 * コメントはまとめてもらえないのでまた書く

* コメントを大事にしたい
 * $git merge –squash BRANCH
 * コミットされないが、コメントをまとめてくれる
 * 履歴がBRANCHと繋がらないので若干ややこしい
 * $git commit が必要
                              *
元の状态




               *
   http://d.hatena.ne.jp/sinsoku/20111025/1319497900 より引用
--蹿蹿(标準の尘别谤驳别)




                 *
     http://d.hatena.ne.jp/sinsoku/20111025/1319497900 より引用
--no-ff




                      *
          http://d.hatena.ne.jp/sinsoku/20111025/1319497900 より引用
--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^^
  * 二つ前まで遡る(^の数に対応)
                         *
*
* git commit –amendでコメントの書き直し
* git add –p でこまかくステージ
* git log --graph --branches –oneline
* git status




                        *
*

More Related Content

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

  • 1. * ?骋颈迟入门をあえて蝉惫苍から入る、の巻?
  • 2. * なぜgitか?なぜgit-svnか? * Gitのインストール * git svn clone、trunkとmasterの関係 * コミット、そしてプッシュ * ブランチ(切る。作業する。リベース) * ブランチしたらプッシュの前に * その他のtips * まとめ *
  • 4. *Gitにはローカルレポジトリ=自由がある! * ひとりひとりが専用のレポジトリ * バージョン管理の便利さを気兼ねなく * コミット済みのコードを変更できる * あのコミットを無かった事に * Rev(21)とRev(25)をまとめたかった??? * 機能追加にまじってバグ修正かよ??? * つまり履歴が奇麗に! *
  • 5. *すぐにgitに移行できるとは限らない *チームメイトへの配慮 *社の方針 *git-svn *gitの使い勝手+subversionの結果 *Svn派にバレずにを邪魔せずに使える *
  • 6. * ぶっちゃけ公式见れば良いんだけどね
  • 8. * コンソールは公式からどうぞ * http://git-scm.com/downloads * GUI(Mac) * 私はSourceTree * AppStoreで検索。もしくはggr * GUI(Win) * Tortoise gitがオススメらしいよ * ぐぐってみてね *
  • 9. * 骋颈迟と蝉耻产惫别谤蝉颈辞苍をつなぐもの
  • 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. * きらめく蝉迟补驳别でまた会える!
  • 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して、引き出す *
  • 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. --蹿蹿(标準の尘别谤驳别) * 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. *