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

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

Upload: yoko-tamada

Post on 16-Apr-2017

557 views

Category:

Technology


0 download

TRANSCRIPT

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

Git 入門 #1

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

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

Agenda

バージョン管理システム いろいろ

Git の学習

Git の設定(Tips)

git-svn 使ってみた

GUI で git

書いていて気づく、 サーバ側の話はほとんどわかってない…

リポジトリ?ホスティングサ(ry

-----------------------------

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

バージョン管理システムいろいろ

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

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

バージョン管理システム いろいろ

CVS

Subversion

VSS

ClearCase

Git

Mercurial

Bazaar

SVK

中央集中型 分散型

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

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

バージョン管理システム いろいろ

中央集中型

履歴を残す(commit)だけでも サーバと通信が必要。

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

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

バージョン管理システム いろいろ

分散型

履歴を残す(commit)作業は ローカルで完結。

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

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

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

clone clone clone

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

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

なんで Git がうれしいの?

分散型なので、ほとんどの作業がローカルで完結できる

diff/mergeが賢い

リポジトリが肥大化にくい(SVNとの違い)

ブランチ作業の中断/復帰が簡単(stash)

git-svn が使える(使ってみて良さ気)

git 前提のシステム、サービス多い

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

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

Git の学習

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

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

Git の学習:入門編

まずはここから!

サルでもわかるGit入門http://www.backlog.jp/git-guide/

『入門git』ーオーム社Travis Swicegood 著・でびあんぐる 訳

便利なチートシート ※オンライン

Git Cheatsheethttp://ndpsoftware.com/git-cheatsheet.html

👍🌟

👍🌟

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

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

Git の学習:ブランチ編

グラフィカルに、動きを見ながら学ぶ

Learn Git Branchinghttp://pcottle.github.io/learnGitBranching/

👍🌟

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

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

Git の学習:その他

Windows 環境への導入、どの方法が一番いいのかよくわからない…

Windows ユーザ向け Git 入門 - CodeZinehttp://codezine.jp/article/corner/479

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

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

Page 13: Git 入門(2014/1/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 の学習とはちょっと違いますが!

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

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

※ローカルでバージョン管理するだけなら (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の状態をもう一度見てみる

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

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

Git の設定

\いきなりですが!/

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

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

Git の設定:これだけはやっとけ編

ユーザ情報の設定

git merge の挙動

git push の挙動

除外ファイル

日本語ファイルを扱うために

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

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

Git の設定:これだけはやっとけ編

ユーザ情報の設定

$ git config --global user.name "Yoko TAMADA"

$ git config --global user.email [email protected]

設定しておかないとコミットのたびに懇切丁寧な設定方法が表示されます。

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

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

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の違い

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

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

Git の設定:これだけはやっとけ編

git push の挙動(git-svn では関係ない)

$ git config --global push.default matching

# or

$ git config --global push.default simple

同期先(リモート)にあるブランチと、ローカルブランチの upstream が一致していたら push できる(simple)、等参考:gitのpush.defaultに関するノウハウ

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

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

Git の設定:これだけはやっとけ編

除外ファイル

# .gitignore ファイルを作成して除外条件を記述する

# global に設定したい場合は以下のように、

# global 用の .gitignore ファイル名を指定する

$ git config --global core.excludefile "~/.gitignore"

igonore設定まえにうっかりINDEXに登録(add)してしまった場合は「INDEXから削除する」操作が必要になります。(ファイルを削除してコミット、ではignoreにならない)

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

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

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対応しているので安心。

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

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

Git の設定:便利だよ編

設定ファイルの include

alias 設定

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

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

Git の設定:便利だよ編

設定ファイルの include

$ git config --global include.path "~/.gitconfig.local"

たとえば dotfile をリポジトリで管理している場合に、環境ごとに変わる config は外出ししてリポジトリから除外しておく、等できる。

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

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

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 が書けます。↑は自分の設定内容より。ログ系いろいろ(*ノω・*)テヘ

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

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

もうちょっとだけ

続くんじゃよ…

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

git-svn 使ってみた

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

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

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

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

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

git-svn 使ってみた

所感

ローカル環境は完全に git!(∩´∀`)∩ワーイリモートと関係したい時だけ git-svn を使う。

観測範囲=自分ONLYな現時点では特に問題なし。SVN側のブランチルールはこれまで通りとしている。

ただし(SVNの)ブランチでの作業しか実施できていないので、今後 trunk に merge して他の人がそれを取得してゴニョゴニョ…となっていったときに問題が爆発する可能性がなきにしもあらず…(gkbr

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

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

git-svn 使ってみた

やったこと@SocialPlus ※別途メモを共有します

リモート(SVN リポジトリ)からローカルにgit svn clone を使ってバージョン管理情報を写しとる → 30分くらい

git で好きに作業する。ただし先の記事を参考にいろいろ気をつける。あとで SVN リポジトリが壊れませんように…(-人-)ナムナム

git の作業ブランチ→(SVN のブランチを示すブランチに)マージ → push の代わりに svn dcommit を使って リモート(SVN)に同期する。

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

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

GUI で Git

\ほぼおまけ!/

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

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

GUI で Git

Atlassian SourceTree

http://www.sourcetreeapp.com/

Mac OS 10.6+, Windows 7+

Git と Mercurial 対応

日本語化されているし、日本語ファイル名も問題なし

指定フォルダ配下のリポジトリを自動検出

リモートの変更を追跡・通知してくれる

Mac と Windows でほぼ同じように使える---------------------------*-

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

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 を使っていれば学習コスト低?----------------------------*

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

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

😃

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

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