社内で SVN が利用されていたなかで、いずれ git へ移行するために勉強してみようという趣旨での発表でした。現在の社内標準VCSは git であり、git-svn を利用する必要もなくなりました。
Git 入門 #12014/01/10 Fri.#FFTT社内勉強会Yoko TAMADA @tmd45
View Slide
Agendaバージョン管理システム いろいろGit の学習Git の設定(Tips)git-svn 使ってみたGUI で git書いていて気づく、サーバ側の話はほとんどわかってない…リポジトリ?ホスティングサ(ry-----------------------------
バージョン管理システム いろいろ*----------------------------
バージョン管理システム いろいろCVSSubversionVSSClearCaseGitMercurialBazaarSVK中央集中型 分散型-*---------------------------
バージョン管理システム いろいろ中央集中型履歴を残す(commit)だけでもサーバと通信が必要。--*--------------------------
バージョン管理システム いろいろ分散型履歴を残す(commit)作業はローカルで完結。---*-------------------------
※GitHub はバージョン管理システム(VCS)ではない。ホスティングサービスだ。clone clone clone----*------------------------
なんで Git がうれしいの?分散型なので、ほとんどの作業が ローカルで完結できるdiff/mergeが賢いリポジトリが肥大化にくい(SVNとの違い)ブランチ作業の中断/復帰が簡単(stash)git-svn が使える(使ってみて良さ気)git 前提のシステム、サービス多い-----*-----------------------
Git の学習------*----------------------
Git の学習:入門編まずはここから!サルでもわかるGit入門 http://www.backlog.jp/git-guide/『入門git』ーオーム社 Travis Swicegood 著・でびあんぐる 訳便利なチートシート ※オンラインGit Cheatsheet http://ndpsoftware.com/git-cheatsheet.html-------*---------------------
Git の学習:ブランチ編グラフィカルに、動きを見ながら学ぶLearn Git Branching http://pcottle.github.io/learnGitBranching/--------*--------------------
Git の学習:その他Windows 環境への導入、どの方法が一番いいのかよくわからない…Windows ユーザ向け Git 入門 - CodeZine http://codezine.jp/article/corner/479 2013年10月頃の連載。まとまってて良さそう ---------*-------------------
Git の学習:合わせて読みたいいつやるの? git入門 http://www.slideshare.net/matsukaz/git-17499005 仕組みから丁寧に説明あり!こわくない Git http://www.slideshare.net/kotas/git-15276118デザイナのためのGit入門 http://www.slideshare.net/dsuket/git-16343460GitHubを使ったプログラマとデザイナーのイテレーティブな開発フロー http://bit.ly/1euxdZI Git の学習とはちょっと違いますが!----------*------------------
※ローカルでバージョン管理するだけなら(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の状態をもう一度見てみる-----------*-----------------
Git の設定\いきなりですが!/------------*----------------
Git の設定:これだけはやっとけ編ユーザ情報の設定git merge の挙動git push の挙動除外ファイル日本語ファイルを扱うために-------------*---------------
Git の設定:これだけはやっとけ編ユーザ情報の設定$ git config --global user.name "Yoko TAMADA"$ git config --global user.email [email protected]設定しておかないとコミットのたびに懇切丁寧な 設定方法が表示されます。--------------*--------------
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 falsefast-forword 状態でも必ずマージコミットを残す。 参考:図で分かるgit-mergeの--ff, --no-ff, --squashの違い---------------*-------------
Git の設定:これだけはやっとけ編git push の挙動(git-svn では関係ない)$ git config --global push.default matching# or$ git config --global push.default simple同期先(リモート)にあるブランチと、ローカルブランチのupstream が一致していたら push できる(simple)、等 参考:gitのpush.defaultに関するノウハウ----------------*------------
Git の設定:これだけはやっとけ編除外ファイル# .gitignore ファイルを作成して除外条件を記述する# global に設定したい場合は以下のように、# global 用の .gitignore ファイル名を指定する$ git config --global core.excludefile "~/.gitignore"igonore設定まえにうっかりINDEXに登録(add)してしまった場合は「INDEXから削除する」操作が必要になります。 (ファイルを削除してコミット、ではignoreにならない)-----------------*-----------
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対応しているので安心。------------------*----------
Git の設定:便利だよ編設定ファイルの includealias 設定-------------------*---------
Git の設定:便利だよ編設定ファイルの include$ git config --global include.path "~/.gitconfig.local"たとえば dotfile をリポジトリで管理している場合に、環境ごとに変わる config は外出ししてリポジトリから除外しておく、等できる。--------------------*--------
Git の設定:便利だよ編alias 設定[alias]co = checkoutch = checkoutst = statusbr = branchls = log --oneline --color -n 10la = log --oneline --decorate --color -n 10ll = log --decorate --color -n 5lg = log --oneline --graph --color -n 10logc = log --colorlogg = log --oneline --graph --colorsts = status -sgit のサブコマンド(add とか log とか)の alias が書けます。 ↑は自分の設定内容より。ログ系いろいろ(*ノω・*)テヘ---------------------*-------
͏ͪΐͬͱ͚ͩ ଓ͘Μ͡ΌΑʜ
git-svn 使ってみた----------------------*------
git-svn 使ってみたまたリンクで恐縮ですが、参考にしたサイトgit-svnの使い方を覚えた http://d.hatena.ne.jp/idesaku/20090323/1237825080git-svnでリモートリポジトリのブランチにコミットする http://walf443.hatenablog.com/entry/20090521/1242860422git-svnを使うときのベストプラクティス http://layzie.hatenablog.com/entry/20121216/1355653349Git svnではじめる忍者のごとく潜むgit http://www.slideshare.net/kazukisato0920/git-svngit-----------------------*-----
git-svn 使ってみた所感ローカル環境は完全に git!(∩´∀`)∩ワーイ リモートと関係したい時だけ git-svn を使う。観測範囲=自分ONLYな現時点では特に問題なし。 SVN側のブランチルールはこれまで通りとしている。ただし(SVNの)ブランチでの作業しか実施できていないので、 今後 trunk に merge して他の人がそれを取得してゴニョゴニョ…となっていったときに問題が爆発する可能性がなきにしもあらず…(gkbr------------------------*----
git-svn 使ってみたやったこと@SocialPlus ※別途メモを共有しますリモート(SVN リポジトリ)からローカルに git svn clone を使ってバージョン管理情報を 写しとる → 30分くらいgit で好きに作業する。 ただし先の記事を参考にいろいろ気をつける。 あとで SVN リポジトリが壊れませんように…(-人-)ナムナムgit の作業ブランチ →(SVN のブランチを示すブランチに)マージ → push の代わりに svn dcommit を使って リモート(SVN)に同期する。-------------------------*---
GUI で Git\ほぼおまけ!/--------------------------*--
GUI で GitAtlassian SourceTreehttp://www.sourcetreeapp.com/Mac OS 10.6+, Windows 7+Git と Mercurial 対応日本語化されているし、 日本語ファイル名も問題なし指定フォルダ配下のリポジトリを自動検出リモートの変更を追跡・通知してくれるMac と Windows でほぼ同じように使える---------------------------*-
GUI で GitTortoiseGit ver.1.8.6.0http://code.google.com/p/tortoisegit/msysgit 1.7.10+ も必要Windows環境専用、日本語化もできるエクスプローラから直接、 右クリック(コンテキストメニュー)で操作msysgit 1.7.10(2012年リリース)から Unicode 対応され、日本語ファイル名も 問題なし(Mac環境との共同開発も大丈夫)TortoiseSVN を使っていれば学習コスト低?----------------------------*
Any Questions?\長い時間お疲れ様でした!/
Have a nice git!ありがとうございました。