git 入門(2014/1/10 社内勉強会)
TRANSCRIPT
Git 入門 #1
2014/01/10 Fri.#FFTT社内勉強会 Yoko TAMADA @tmd45
Agenda
バージョン管理システム いろいろ
Git の学習
Git の設定(Tips)
git-svn 使ってみた
GUI で git
書いていて気づく、 サーバ側の話はほとんどわかってない…
リポジトリ?ホスティングサ(ry
-----------------------------
バージョン管理システムいろいろ
*----------------------------
バージョン管理システム いろいろ
CVS
Subversion
VSS
ClearCase
Git
Mercurial
Bazaar
SVK
中央集中型 分散型
-*---------------------------
バージョン管理システム いろいろ
中央集中型
履歴を残す(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 Cheatsheethttp://ndpsoftware.com/git-cheatsheet.html
👍🌟
👍🌟
-------*---------------------
Git の学習:ブランチ編
グラフィカルに、動きを見ながら学ぶ
Learn Git Branchinghttp://pcottle.github.io/learnGitBranching/
👍🌟
--------*--------------------
Git の学習:その他
Windows 環境への導入、どの方法が一番いいのかよくわからない…
Windows ユーザ向け Git 入門 - CodeZinehttp://codezine.jp/article/corner/479
2013年10月頃の連載。まとまってて良さそう
---------*-------------------
Git の学習:合わせて読みたい
いつやるの? git入門http://www.slideshare.net/matsukaz/git-17499005 仕組みから丁寧に説明あり!
こわくない Githttp://www.slideshare.net/kotas/git-15276118
デザイナのためのGit入門http://www.slideshare.net/dsuket/git-16343460
GitHubを使ったプログラマとデザイナーのイテレーティブな開発フロー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 false
fast-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 の設定:便利だよ編
設定ファイルの include
alias 設定
-------------------*---------
Git の設定:便利だよ編
設定ファイルの include
$ git config --global include.path "~/.gitconfig.local"
たとえば dotfile をリポジトリで管理している場合に、環境ごとに変わる config は外出ししてリポジトリから除外しておく、等できる。
--------------------*--------
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 が書けます。↑は自分の設定内容より。ログ系いろいろ(*ノω・*)テヘ
---------------------*-------
もうちょっとだけ
続くんじゃよ…
git-svn 使ってみた
----------------------*------
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ではじめる忍者のごとく潜むgithttp://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 で Git
Atlassian SourceTree
http://www.sourcetreeapp.com/
Mac OS 10.6+, Windows 7+
Git と Mercurial 対応
日本語化されているし、日本語ファイル名も問題なし
指定フォルダ配下のリポジトリを自動検出
リモートの変更を追跡・通知してくれる
Mac と Windows でほぼ同じように使える---------------------------*-
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 を使っていれば学習コスト低?----------------------------*
Any Questions?\長い時間お疲れ様でした!/
😃
Have a nice git!ありがとうございました。