SlideShare a Scribd company logo
1 of 33
Download to read offline
Git実践
learnGitBranchingでやり残したこと
まず、
learnGitBranchingの復習
• やってきた・・・よね・・・?
• コミットは親と繋がっていて固有のID(ハッシュ)
を持っている
• ブランチは動くポインタ、タグは動かないポインタ
• 二つの作業ひっつけるのはrebaseかmerge
• rebase -iとかcherry-pick便利
Gitをカスタマイズ
config
• 三段階のレベルに分かれている
• system -> $(prefix)/etc/gitconfig
• global -> /.gitconfig
• local -> .git/config
現在の設定は以下のコマンドで確認できる
$ git config -l
config
$ git config —[level] [key] [value]
これで設定できる。
主な項目
• 必須項目
• user.name
• user.email
• push.default
• カスタム
• alias.*
• core.editor
• core.pager
• color.*
• diff.tool
• diff.algorithm
• help.autocorrect
• help.format
hook
• .git/hooks
• リポジトリごとに存在
• 色んなイベント時の加工ができる
コミットメッセージを書く前、後
リベースする時、チェックアウトする時
hookの用途
例えば、
• チェックアウトした時にそのブランチの情報表示す
るとか
• コミットメッセージの形式をチェックしてだめなの
はコミット拒否するとか
• 特定のブランチにはリベースとかマージとかできな
くするとか
具体的な使い方
• GitHub flowの講習の時に具体的にスクリプトを書
いてみます。
• 割と簡単なので、試してみるのいいかも
• 元々ある実用的なサンプルを眺めてみるとか
ignore
• .DS_Storeとかnode_modulesとかどう考えてもリ
ポジトリに追加しないようなファイルがある
• こういうのをstatusに表示したくないし、ミスって
追加なんてこともいや
git ignore設定で弾ける!
.gitignore
• ディレクトリに.gitignoreというファイルをおけば
大丈夫です
• ディレクトリごとに適用されます
ignoreパターン色々
• * (最後が のファイル全て)
• *.[ao] (最後が.aか.oのファイル全て)
• build/(buildという名前のディレクトリ。スラッ
シュがない場合ファイルのみ)
• !/src/build/(リポジトリルートからsrc/buildとい
うパスのディレクトリは無視されない)
非推奨
• global.excludesfileは非推奨です
• gitignore.ioやgit templateなどを活用しましょう
• 自分用の環境では面倒かもですが、.git/info/
excludeを活用しましょう
gitのその他
便利コマンド・オプション
git status
• 基本コマンド
• IDEによってはファイルツリーを色分け表示してく
れたりして、いらないかも
• A: Added(追加), new file
• R: Removed(削除), deleted
• M: Modified(変更), modified
git status
• 現在の状態が知れるし、gitさんから色々アドバイ
スもらえる
• でもたまにアドバイス邪魔な時あるよね
$ git status -sb
git ignoreも活用しましょう
git log
• コミットの履歴を表示
• ブランチの流れを見やすく
$ git log ‒-graph
• ブランチのdiff
$ git log --left-right branch1..branch2
• コミットを一行で表示
$ git log ‒-oneline
git show
• コミットの詳細情報を表示
• デフォルト
$ git show <コミット参照>
• HEADからn個前
$ git show HEAD n
• 差分を表示しない
$ git show -s
git add
• ステージに追加
• 追加しないでどのファイルが追加されるか見る
$ git add -n *.txt
• リポジトリ登録されていないファイルは追加しない
$ git add -u *.txt
• あるファイル内の変更の一部だけを取り込む
$ git add -p file.txt
git rm
• リポジトリから削除
• 削除しないでどのファイルが削除されるか見る
$ git rm -n *.txt
• 現実のファイルは削除しない
$ git rm ̶cached *.txt
git diff
• コミット間の差分を表示
• 最新のコミットとの差分を表示
$ git diff HEAD
• 比較するパスを限定する
$ git diff HEAD ̶ *.txt
• 行末空白やタブの前の空白インデントの警告
$ git diff ̶check
git blame
• 行ごとに変更された最新のコミット情報を表示
• n行からm行分まで
$ git blame -L n,+m file.txt
• 正規表現でのマッチ
$ git blame -L /main(/,/return 0;/ main.c
• ホワイトスペース無視(インデント改変用)
$ git blame -w file,txt
git cat-file
• リポジトリ内のファイルを表示
• あるブランチでのファイルを表示
$ git cat-file -p master:file.txt
• n個前のコミットのファイルを表示
$ git cat-file -p HEAD n:file.txt
git ls-files
• リポジトリ内のファイルを表示
• リポジトリ内のファイル一覧を表示
$ git ls-files
• 変更されたファイル一覧を表示
$ git ls-files -m
git reflog
• リポジトリ内での操作履歴を表示
• 単純に
$ git reflog
• 出てきた、HEAD@{n}のコミット参照を指定すれば、例
えそれがgit logなどで出てこなくても参照できる。
• rebaseで消えたコミットやresetで消したコミットを元
に戻せる。
git help
• 本当にお世話になります
• とても親切なので、英語だからと諦めずに読んでみ
ましょう
• 他のコマンドなども見てみましょう
$ git help コマンド名
紹介しなかった
その他の便利コマンド
• バグ見つけコマンド - git bisect
• ファイルの名前変更 - git mv
• リポ内のファイル検索 - git grep
tigの紹介
• 宣伝
• blameとか、statusとか、logとかtigで見やすく!
• tmux/cat-fileとか駆使しなくてもtigで便利に!
• ぜひ使ってみましょう。CUIで快適なgit環境を
• まずは、試してみましょう!
• http://qiita.com/suino/items/b0dae7e00bd7165f79ea
次回はリモート編
3週間後
宿題
次回までの宿題
•以下の四つの中から課題を一つ選んでGitで管理し
ながら実装
• 処理系インタプリタ
• マインスイーパ
• コマンドライン電卓(bcっぽいやつ)
• コマンドラインエディタ(edっぽいやつ)
条件
• 5コミット以上であること
• リポジトリ内のファイルを合計で3つ以上
• .gitignore/Readme.md/main.c/etc.
• .gitignoreを書くこと
• CUIで動くもの
• プログラミング言語は以下のもののみ許可
• Pascal/Perl/C/C++/Java/Groovy/Scala/CommonLisp/Scheme
• Erlang/Lua/Python/Ruby/Rust/D/OCaml/Haskell/Clojure
• Javascript(node.js)/TypeScript/CoffeeScript/PureScript
備考
• ncurses使いたい人は使っていいよ!
• node使って書ける人とかはそれで書いて欲しい
• ブランチ分けできればしてみてね
• テストとかも書ければ書いてみてね
• 未完成でもいいので、とりあえずGitを使ってみること!
• 詰まったら投げ出すんじゃなくてSlackかメーリスで聞くこと!
• できればOCamlとかHaskellとかClojureとかがいいな(読みやすいし)

More Related Content

Viewers also liked

Strategic Planning Advantages and Disadvantages
Strategic Planning Advantages and DisadvantagesStrategic Planning Advantages and Disadvantages
Strategic Planning Advantages and DisadvantagesLea Mae Benedicto
 
Gitpractice2
Gitpractice2Gitpractice2
Gitpractice2mmm110
 
How NewsCred does content marketing
How NewsCred does content marketingHow NewsCred does content marketing
How NewsCred does content marketingNewsCred
 
How to Calculate Content Marketing ROI
How to Calculate Content Marketing ROIHow to Calculate Content Marketing ROI
How to Calculate Content Marketing ROINewsCred
 
Gitpractice01
Gitpractice01Gitpractice01
Gitpractice01mmm110
 

Viewers also liked (6)

Strategic Planning Advantages and Disadvantages
Strategic Planning Advantages and DisadvantagesStrategic Planning Advantages and Disadvantages
Strategic Planning Advantages and Disadvantages
 
Gitpractice2
Gitpractice2Gitpractice2
Gitpractice2
 
How NewsCred does content marketing
How NewsCred does content marketingHow NewsCred does content marketing
How NewsCred does content marketing
 
Kaje
KajeKaje
Kaje
 
How to Calculate Content Marketing ROI
How to Calculate Content Marketing ROIHow to Calculate Content Marketing ROI
How to Calculate Content Marketing ROI
 
Gitpractice01
Gitpractice01Gitpractice01
Gitpractice01
 

Similar to Gitpractice3

Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)Makoto Kawano
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!ymmt
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!Yohei Fushii
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたTakako Miyagawa
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgitTadahiro Ishisaka
 
Version Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアルVersion Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアルComputational Materials Science Initiative
 
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回kinme modoki
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門to_ueda
 
はじめてのMercurial/Bitbucket その2
 はじめてのMercurial/Bitbucket その2 はじめてのMercurial/Bitbucket その2
はじめてのMercurial/Bitbucket その2kenjis
 
2018 07-18 git-hub講座
2018 07-18 git-hub講座2018 07-18 git-hub講座
2018 07-18 git-hub講座貴一 末田
 
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門Takashi Imagire
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理Takafumi Yoshida
 

Similar to Gitpractice3 (20)

Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)
 
Git勉強会
Git勉強会Git勉強会
Git勉強会
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
 
Git超入門
Git超入門Git超入門
Git超入門
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
 
Git handson
Git handsonGit handson
Git handson
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみました
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgit
 
Version Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアルVersion Control System Tutorial バージョン管理システムチュートリアル
Version Control System Tutorial バージョン管理システムチュートリアル
 
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門
 
今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編
 
はじめてのMercurial/Bitbucket その2
 はじめてのMercurial/Bitbucket その2 はじめてのMercurial/Bitbucket その2
はじめてのMercurial/Bitbucket その2
 
Git地図
Git地図Git地図
Git地図
 
2018 07-18 git-hub講座
2018 07-18 git-hub講座2018 07-18 git-hub講座
2018 07-18 git-hub講座
 
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門
 
git-webtouchmeeting
git-webtouchmeetinggit-webtouchmeeting
git-webtouchmeeting
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
 
Gitの設定
Gitの設定Gitの設定
Gitの設定
 
Yapc2012資料
Yapc2012資料Yapc2012資料
Yapc2012資料
 

Gitpractice3