Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Git 入門(2014/1/10 社内勉強会)

Git 入門(2014/1/10 社内勉強会)

社内で SVN が利用されていたなかで、いずれ git へ移行するために勉強してみようという趣旨での発表でした。現在の社内標準VCSは git であり、git-svn を利用する必要もなくなりました。

Yoko TAMADA

January 10, 2014
Tweet

More Decks by Yoko TAMADA

Other Decks in Programming

Transcript

  1. Git 入門 #1
    2014/01/10 Fri.#FFTT社内勉強会
    Yoko TAMADA @tmd45

    View Slide

  2. Agenda
    バージョン管理システム いろいろ
    Git の学習
    Git の設定(Tips)
    git-svn 使ってみた
    GUI で git
    書いていて気づく、
    サーバ側の話はほとんどわかってない…
    リポジトリ?ホスティングサ(ry
    -----------------------------

    View Slide

  3. バージョン管理システム

    いろいろ
    *----------------------------

    View Slide

  4. バージョン管理システム いろいろ
    CVS
    Subversion
    VSS
    ClearCase
    Git
    Mercurial
    Bazaar
    SVK
    中央集中型 分散型
    -*---------------------------

    View Slide

  5. バージョン管理システム いろいろ
    中央集中型
    履歴を残す(commit)だけでも
    サーバと通信が必要。
    --*--------------------------

    View Slide

  6. バージョン管理システム いろいろ
    分散型
    履歴を残す(commit)作業は
    ローカルで完結。
    ---*-------------------------

    View Slide

  7. ※GitHub はバージョン管理システム(VCS)
    ではない。ホスティングサービスだ。
    clone clone clone
    ----*------------------------

    View Slide

  8. なんで Git がうれしいの?
    分散型なので、ほとんどの作業が

    ローカルで完結できる
    diff/mergeが賢い
    リポジトリが肥大化にくい(SVNとの違い)
    ブランチ作業の中断/復帰が簡単(stash)
    git-svn が使える(使ってみて良さ気)
    git 前提のシステム、サービス多い
    -----*-----------------------

    View Slide

  9. Git の学習
    ------*----------------------

    View Slide

  10. Git の学習:入門編
    まずはここから!
    サルでもわかるGit入門

    http://www.backlog.jp/git-guide/
    『入門git』ーオーム社

    Travis Swicegood 著・でびあんぐる 訳
    便利なチートシート ※オンライン
    Git Cheatsheet

    http://ndpsoftware.com/git-cheatsheet.html


    -------*---------------------

    View Slide

  11. Git の学習:ブランチ編
    グラフィカルに、動きを見ながら学ぶ
    Learn Git Branching

    http://pcottle.github.io/learnGitBranching/

    --------*--------------------

    View Slide

  12. Git の学習:その他
    Windows 環境への導入、どの方法が一番いいのか
    よくわからない…
    Windows ユーザ向け Git 入門 - CodeZine

    http://codezine.jp/article/corner/479

     2013年10月頃の連載。まとまってて良さそう

    ---------*-------------------

    View Slide

  13. Git の学習:合わせて読みたい
    いつやるの? git入門

    http://www.slideshare.net/matsukaz/git-17499005

     仕組みから丁寧に説明あり!
    こわくない Git

    http://www.slideshare.net/kotas/git-15276118
    デザイナのためのGit入門

    http://www.slideshare.net/dsuket/git-16343460
    GitHubを使ったプログラマとデザイナーのイテ
    レーティブな開発フロー

    http://bit.ly/1euxdZI

     Git の学習とはちょっと違いますが!
    ----------*------------------

    View Slide

  14. ※ローカルでバージョン管理するだけなら
    (Macは最初からgitコマンド入ってますよ)
    例:利用中のフォルダをgitで管理する
    $ cd path/to/work
    $ git init # git管理ファイルを作成
    $ git add . # すべてのファイルをINDEXに追加する
    $ git status # INDEXの状態を見てみよう
    $ git commit -m "gitでバージョン管理始めます!"
    $ git log # コミットログを確認
    $ git status # INDEXの状態をもう一度見てみる
    -----------*-----------------

    View Slide

  15. Git の設定
    \いきなりですが!/
    ------------*----------------

    View Slide

  16. Git の設定:これだけはやっとけ編
    ユーザ情報の設定
    git merge の挙動
    git push の挙動
    除外ファイル
    日本語ファイルを扱うために
    -------------*---------------

    View Slide

  17. Git の設定:これだけはやっとけ編
    ユーザ情報の設定
    $ git config --global user.name "Yoko TAMADA"
    $ git config --global user.email [email protected]
    設定しておかないとコミットのたびに懇切丁寧な

    設定方法が表示されます。
    --------------*--------------

    View Slide

  18. Git の設定:これだけはやっとけ編
    git merge の設定(--no-ff)
    # master 上で git merge するときは常に --no-ff
    $ git config branch.master.mergeoptions "--no-ff"
    # git merge するときは常に --no-ff
    $ git config --global merge.ff false
    fast-forword 状態でも必ずマージコミットを残す。

    参考:図で分かるgit-mergeの--ff, --no-ff, --squashの違い
    ---------------*-------------

    View Slide

  19. Git の設定:これだけはやっとけ編
    git push の挙動(git-svn では関係ない)
    $ git config --global push.default matching
    # or
    $ git config --global push.default simple
    同期先(リモート)にあるブランチと、ローカルブランチの
    upstream が一致していたら push できる(simple)、等

    参考:gitのpush.defaultに関するノウハウ
    ----------------*------------

    View Slide

  20. Git の設定:これだけはやっとけ編
    除外ファイル
    # .gitignore ファイルを作成して除外条件を記述する
    # global に設定したい場合は以下のように、
    # global 用の .gitignore ファイル名を指定する
    $ git config --global core.excludefile "~/.gitignore"
    igonore設定まえにうっかりINDEXに登録(add)してしまっ
    た場合は「INDEXから削除する」操作が必要になります。

    (ファイルを削除してコミット、ではignoreにならない)
    -----------------*-----------

    View Slide

  21. Git の設定:これだけはやっとけ編
    日本語ファイルを扱うために
    # UTF8-MAC対策(濁点などを正しく判断させる)
    $ git config --global core.precomposeunicode true
    # git コマンドでファイル名が数値コード化されないように
    $ git config --global core.quotepath false
    # git用 GUI ツールのデフォルトエンコーディング設定
    $ git config --global gui.encoding utf-8
    内部エンコーディングがUTF-8で揃っていれば(一応)大丈夫。

    Windowsでも最新のmsysgitはUTF-8対応しているので安心。
    ------------------*----------

    View Slide

  22. Git の設定:便利だよ編
    設定ファイルの include
    alias 設定
    -------------------*---------

    View Slide

  23. Git の設定:便利だよ編
    設定ファイルの include
    $ git config --global include.path "~/.gitconfig.local"
    たとえば dotfile をリポジトリで管理している場合に、環境ごとに
    変わる config は外出ししてリポジトリから除外しておく、等できる。
    --------------------*--------

    View Slide

  24. Git の設定:便利だよ編
    alias 設定
    [alias]
    co = checkout
    ch = checkout
    st = status
    br = branch
    ls = log --oneline --color -n 10
    la = log --oneline --decorate --color -n 10
    ll = log --decorate --color -n 5
    lg = log --oneline --graph --color -n 10
    logc = log --color
    logg = log --oneline --graph --color
    sts = status -s
    git のサブコマンド(add とか log とか)の alias が書けます。

    ↑は自分の設定内容より。ログ系いろいろ(*ノω・*)テヘ
    ---------------------*-------

    View Slide

  25. ΋͏ͪΐͬͱ͚ͩ

    ଓ͘Μ͡ΌΑʜ

    View Slide

  26. git-svn 使ってみた
    ----------------------*------

    View Slide

  27. git-svn 使ってみた
    またリンクで恐縮ですが、参考にしたサイト
    git-svnの使い方を覚えた

    http://d.hatena.ne.jp/idesaku/20090323/1237825080
    git-svnでリモートリポジトリのブランチにコミットする

    http://walf443.hatenablog.com/entry/20090521/
    1242860422
    git-svnを使うときのベストプラクティス

    http://layzie.hatenablog.com/entry/20121216/
    1355653349
    Git svnではじめる忍者のごとく潜むgit

    http://www.slideshare.net/kazukisato0920/git-svngit
    -----------------------*-----

    View Slide

  28. git-svn 使ってみた
    所感
    ローカル環境は完全に git!(∩´∀`)∩ワーイ

    リモートと関係したい時だけ git-svn を使う。
    観測範囲=自分ONLYな現時点では特に問題なし。

    SVN側のブランチルールはこれまで通りとしてい
    る。
    ただし(SVNの)ブランチでの作業しか実施できて
    いないので、

    今後 trunk に merge して他の人がそれを取得
    してゴニョゴニョ…となっていったときに問題が
    爆発する可能性がなきにしもあらず…(gkbr
    ------------------------*----

    View Slide

  29. git-svn 使ってみた
    やったこと@SocialPlus ※別途メモを共有します
    リモート(SVN リポジトリ)からローカルに

    git svn clone を使ってバージョン管理情報を

    写しとる → 30分くらい
    git で好きに作業する。

    ただし先の記事を参考にいろいろ気をつける。

    あとで SVN リポジトリが壊れませんように…(-人-)ナムナム
    git の作業ブランチ

    →(SVN のブランチを示すブランチに)マージ 

    → push の代わりに svn dcommit を使って

     リモート(SVN)に同期する。
    -------------------------*---

    View Slide

  30. GUI で Git
    \ほぼおまけ!/
    --------------------------*--

    View Slide

  31. GUI で Git
    Atlassian SourceTree
    http://www.sourcetreeapp.com/
    Mac OS 10.6+, Windows 7+
    Git と Mercurial 対応
    日本語化されているし、

    日本語ファイル名も問題なし
    指定フォルダ配下のリポジトリを自動検出
    リモートの変更を追跡・通知してくれる
    Mac と Windows でほぼ同じように使える
    ---------------------------*-

    View Slide

  32. GUI で Git
    TortoiseGit ver.1.8.6.0
    http://code.google.com/p/tortoisegit/
    msysgit 1.7.10+ も必要
    Windows環境専用、日本語化もできる
    エクスプローラから直接、

    右クリック(コンテキストメニュー)で操作
    msysgit 1.7.10(2012年リリース)から

    Unicode 対応され、日本語ファイル名も

    問題なし(Mac環境との共同開発も大丈夫)
    TortoiseSVN を使っていれば学習コスト低?
    ----------------------------*

    View Slide

  33. Any Questions?
    \長い時間お疲れ様でした!/

    View Slide

  34. Have a nice git!
    ありがとうございました。

    View Slide