SlideShare a Scribd company logo
やりなおせるGit入門
2013-06-01 広島 Git 勉強会 201306
自己紹介
•ひむらともひこ
•Twitter eielh
•Github eiel
•http://eiel.info/
やりなおせる Git 入門
目的
•元に戻せないのは怖い
•元に戻せるようになろう
•危険 と 少し危険 を知る
とみせかけて
reset と checkout
の話をする
やりなおせる Git 入門
ふつうの Git 入門
+ やりなおせる
事前準備
•$ echo readme > README.md
•$ ls .
README.md
•$ cat README.md
readme
はじめてのコミット
•git init
•git add .
•git commit -m ‘initial commit’
間違えたらどーするの?
git init
•間違えた!
•最初からやりなおしたい
•rm -rf .git
git add .
•間違えた!
•add する前にもどしたい
•git rm --cached .
ん?覚えられないって?
•git status すると書いてあります
git status
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: README.md
#
git commit -m intial commit`
•間違えた!
•コミットメッセージなおしたい
• git commit --amend -m ‘replace message
初回は特別なので難しい
•最初からやりなおしたくなれば
•rm -rf .git
NeXT STEP
ふたつめのコミット
ふたつめのコミット
•$ echo readyou > README.md
•$ git add -u
•$ git commit -m ‘second commit’
ファイルの変更
•間違えた!
•変更をなしにしたい
•git checkout README.md
•変更は消えてしまう
•危険
git add -u
•間違えた!
•変更をまだ追加したくないの
•git reset README.md
•変更は 残ったまま
•安全
git commit
• 間違えた!!
• commit する前と同じ状態にしたい
• git reset --soft HEAD^
• 変更は残ったまま & コミットは追えなくなる
• 少し危険
登場したコマンド
•git rm --cached
•git checkout ファイル名
•git reset
•git reset --soft コミットのようなもの
危険の定義
• 変更が失われてしまい、復元できなくなっ
てしまうようなもの
危険なコマンド
•git reset --hard
•git checkout ファイル名
•ブランチ名の場合は安全
•変更した残したいならコミットする
少し危険の定義
•コミットが新しく作成され、別物に代わ
ってしまう
•コミットが今のブランチから辿れない
少し危険なコマンド
•git commit --amend
•ひとつ前のコミットが別のものになり
ます
•git rebase
•新しいコミットに置き換えられます
危険なコマンドをする前に
•怖いなら
•とにかくコミットしとけ
•git commit
少し危険なコマンドをする前に
•怖いなら
•とにかくブランチを作成しとけ
•git branch ブランチ名
よくわからない、怖くなったら
•git branch helpme
•git add .
•git commit -m たすけて
•偉い人に聞く
もう少し詳しく
reset と checkout
•必要な知識
•ワークツリー
•インデックス
•コミット
•ツリーのようなもの
ワークツリー
•実際に存在しているファイルやディレク
トリ
•編集して変化していく内容
コミットコミット
インデックスインデックス
ワークツリーワークツリー
コミットコミット
インデックスインデックス
ワークツリーワークツリー
ファイルを変更する
インデックス
•コミットを作る前準備をするところ
•準備ができたところでコミットするとそ
れがコミットになる
コミットコミット
インデックスインデックス
ワークツリーワークツリー
git add
コミット
•復元するために必要なファイルやディレ
クトリ、コミットメッセージ、作成日、
前のコミットなどを保存している
コミットコミット
インデックスインデックス
ワークツリーワークツリー
git commit
ツリーのようなもの
•ファイルツリーがとりだせるようなもの
•コミット
•ツリー
•インデックス
•などなど
Reset
•指しているコミットとインデックスを指
定したコミットのものに変えるコマンド
•--soft の場合は指しているコミットだけ
•--hard の場合はワークツリーも変更
•コミットを指定しない場合は HEAD
コミットコミット
インデックスインデックス
ワークツリーワークツリー
HEAD^
git reset --soft HEAD^
コミットコミット
インデックスインデックス
ワークツリーワークツリー
HEAD^
git reset HEAD^
コミットコミット
インデックスインデックス
ワークツリーワークツリー
HEAD^
git reset --hard HEAD^
reset の弱い順
•git reset --soft
•git reset
•git resset --hard
強い
弱い
インデックスだけ取り消したい
コミットコミット
インデックスインデックス
ワークツリーワークツリー
HEAD
git reset HEAD
インデックスも
ワークツリーも
まとめて戻したい
コミットコミット
インデックスインデックス
ワークツリーワークツリー
HEAD
git reset --hard HEAD
上から切り裂く
Checkout ファイル
• `checkout ブランチ` とは区別して考えて
• ワークツリーとインデックスを変更する
• 指定したファイルをインデックスと同じものに
• `ツリーのようなもの`明示的にを指定すること
もできます
コミットコミット
インデックスインデックス
ワークツリーワークツリー
git checkout ファイル名
コミットコミット
インデックスインデックス
ワークツリーワークツリー
HEAD^
git checkout HEAD^ ファイル
下ふたつだけを自由自在に動かす
一番下を動かすのは危険
少し危険
git commit --amend
A B C
master
git commit --amend
A B C
C'
master
C を辿る手段がない
reflog などで探せますが
master を複製しておく
git branch old
git commit --amend
old
A B C
C'
master
git reset --hard old
で元に戻れる
git rebase
初期状態
origin
A B C
D
master
git rebase origin
origin
A B C
D
D'
master
master を複製しておくと
git branch old
初期状態
old
origin
A B C
D
master
git rebase origin
old
origin
A B C
D
D'
master
git reset --hard old
で元に戻れる
別にコミットのID がわかるなら ブランチは
作る必要はありません
おまけ
•git revert はあるコミットをなかったこ
とにするコミットを作成します
•新しくコミットを作成するコマンド
•git commit の -m はそろそろ卒業しま
しょう
まとめ
• 危険なことをするなら
• 変更がコミットされてるか確認する
• 消えてもいいなら気にしない
• 少し危険なことをするなら
• ブランチを作成しとけば元に戻せる
まとめ
•危険
•git reset --hard
•git checkout ファイル名
まとめ
•少し危険
•git reset コミットのようなもの
•git commit --amend
•git rebase
まとめ
• git reset は ブランチ が指すところを変える
• git checkout ファイル名
• インデックスとワークツリーを変更する
ご清聴ありがとうございました

More Related Content

PDF
いつやるの?Git入門 v1.1.0
Masakazu Matsushita
 
PDF
15分でわかるGit入門
to_ueda
 
PDF
いつやるの?Git入門
Masakazu Matsushita
 
PDF
こわくない Git
Kota Saito
 
PDF
はじめてのGit forデザイナー&コーダー
Saeko Yamamoto
 
KEY
一人でもはじめるGitでバージョン管理
Takafumi Yoshida
 
PDF
デザイナのためのGit入門
dsuke Takaoka
 
PDF
はじめようGit
techscore
 
いつやるの?Git入門 v1.1.0
Masakazu Matsushita
 
15分でわかるGit入門
to_ueda
 
いつやるの?Git入門
Masakazu Matsushita
 
こわくない Git
Kota Saito
 
はじめてのGit forデザイナー&コーダー
Saeko Yamamoto
 
一人でもはじめるGitでバージョン管理
Takafumi Yoshida
 
デザイナのためのGit入門
dsuke Takaoka
 
はじめようGit
techscore
 

What's hot (20)

PDF
Gitのよく使うコマンド
YUKI Kaoru
 
PDF
Git flowの活用事例
Hirohito Kato
 
PDF
ノンプログラマでも今日から使える「Git」でバージョン管理
H2O Space. Co., Ltd.
 
PPTX
世界一わかりやすいClean Architecture
Atsushi Nakamura
 
PDF
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
 
PDF
Javaのログ出力: 道具と考え方
Taku Miyakawa
 
PDF
例外設計における大罪
Takuto Wada
 
PDF
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
 
PPTX
DockerコンテナでGitを使う
Kazuhiro Suga
 
PDF
Docker Compose 徹底解説
Masahito Zembutsu
 
PDF
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
 
PDF
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
 
PDF
コンセプトから理解するGitコマンド
ktateish
 
PDF
目grep入門 +解説
murachue
 
PDF
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
 
PDF
ポイントをおさえて移行しよう!Git乗り換え超初級
Kouji Matsui
 
PDF
IT系エンジニアのためのプレゼンテーション入門
Masahito Zembutsu
 
PDF
Pythonによる黒魔術入門
大樹 小倉
 
PDF
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
 
PDF
Java8でRDBMS作ったよ
なおき きしだ
 
Gitのよく使うコマンド
YUKI Kaoru
 
Git flowの活用事例
Hirohito Kato
 
ノンプログラマでも今日から使える「Git」でバージョン管理
H2O Space. Co., Ltd.
 
世界一わかりやすいClean Architecture
Atsushi Nakamura
 
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
 
Javaのログ出力: 道具と考え方
Taku Miyakawa
 
例外設計における大罪
Takuto Wada
 
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
 
DockerコンテナでGitを使う
Kazuhiro Suga
 
Docker Compose 徹底解説
Masahito Zembutsu
 
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
 
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
 
コンセプトから理解するGitコマンド
ktateish
 
目grep入門 +解説
murachue
 
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
 
ポイントをおさえて移行しよう!Git乗り換え超初級
Kouji Matsui
 
IT系エンジニアのためのプレゼンテーション入門
Masahito Zembutsu
 
Pythonによる黒魔術入門
大樹 小倉
 
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
 
Java8でRDBMS作ったよ
なおき きしだ
 
Ad

Viewers also liked (7)

PDF
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura
 
PPT
Git紹介
Seiji Ochiai
 
PDF
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
Takayuki Shimizukawa
 
PDF
Sphinxで社内勉強会(Git)の
資料を作ってみた
Taku SHIMIZU
 
PPTX
Sphinx で手軽に作るドキュメント
Go Yamada
 
PDF
ドキュメントシステムはこれを使え2015年版
Keiichiro Shikano
 
PDF
ドキュメントを作りたくなってしまう魔法のツールSphinx
Takayuki Shimizukawa
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura
 
Git紹介
Seiji Ochiai
 
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
Takayuki Shimizukawa
 
Sphinxで社内勉強会(Git)の
資料を作ってみた
Taku SHIMIZU
 
Sphinx で手軽に作るドキュメント
Go Yamada
 
ドキュメントシステムはこれを使え2015年版
Keiichiro Shikano
 
ドキュメントを作りたくなってしまう魔法のツールSphinx
Takayuki Shimizukawa
 
Ad

Similar to やりなおせる Git 入門 (20)

PPTX
Git超入門
Shun Nishitsuji
 
PDF
Python for Data Analysis第1回勉強会(+git入門)
Makoto Kawano
 
ODP
底辺webプログラマが今更git語ってみた
Yudai Fujita
 
PDF
今日から始めるGithub
lion-man
 
PDF
Gitの使い方あれこれ
よしだ あつし
 
PDF
初心者がGoでCLIツール作ってみて学んだこと
Yuta Ohashi
 
PDF
Source treeの紹介
ko ty
 
KEY
GitListの使い方
Katsuhiro Masaki
 
PPTX
Github第4章
Yuto Suzuki
 
PDF
Git勉強会 2016 Gitで卒論を管理しよう回
kinme modoki
 
PDF
Gitpractice3
mmm110
 
PDF
git-webtouchmeeting
Tomohiko Himura
 
PDF
gitを使って、レポジトリの一部抽出forkしてみました
Takako Miyagawa
 
PPTX
2018 07-18 git-hub講座
Takahito Sueda
 
PPT
Gitの紹介
Shoot Morii
 
PDF
はじめてのGit
Seiichiro Mishiba
 
PDF
Gitとちょっと仲良くなるために覚えたことまとめ
Natsumi Kashiwa
 
PDF
gitで過去に戻りたい
tattyamm
 
PDF
Gitのつくりかた YAPC::Asia 2015 @DQNEO
DQNEO
 
KEY
20120324 git training
Takeshi AKIMA
 
Git超入門
Shun Nishitsuji
 
Python for Data Analysis第1回勉強会(+git入門)
Makoto Kawano
 
底辺webプログラマが今更git語ってみた
Yudai Fujita
 
今日から始めるGithub
lion-man
 
Gitの使い方あれこれ
よしだ あつし
 
初心者がGoでCLIツール作ってみて学んだこと
Yuta Ohashi
 
Source treeの紹介
ko ty
 
GitListの使い方
Katsuhiro Masaki
 
Github第4章
Yuto Suzuki
 
Git勉強会 2016 Gitで卒論を管理しよう回
kinme modoki
 
Gitpractice3
mmm110
 
git-webtouchmeeting
Tomohiko Himura
 
gitを使って、レポジトリの一部抽出forkしてみました
Takako Miyagawa
 
2018 07-18 git-hub講座
Takahito Sueda
 
Gitの紹介
Shoot Morii
 
はじめてのGit
Seiichiro Mishiba
 
Gitとちょっと仲良くなるために覚えたことまとめ
Natsumi Kashiwa
 
gitで過去に戻りたい
tattyamm
 
Gitのつくりかた YAPC::Asia 2015 @DQNEO
DQNEO
 
20120324 git training
Takeshi AKIMA
 

More from Tomohiko Himura (20)

PDF
つながりをゆるふわにしよう Active supprt notifications
Tomohiko Himura
 
PDF
Hiroshimarbについて
Tomohiko Himura
 
PDF
コンピュータをもっと使おう
Tomohiko Himura
 
PDF
OSC2013 HIROSHIMA ライトニングトーク すごい広島
Tomohiko Himura
 
PDF
広島で Ruby が流行らないのはどう考えても俺たちが悪い
Tomohiko Himura
 
PDF
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
Tomohiko Himura
 
PDF
Rails の自動読み込みを支える技術
Tomohiko Himura
 
PDF
Rails プロジェクトでスタートダッシュを決める
Tomohiko Himura
 
PDF
すごい cron ? - Jenkins 試した
Tomohiko Himura
 
PDF
すごい広島
Tomohiko Himura
 
PDF
すごい Hiroshima で楽しく学ぼう
Tomohiko Himura
 
PDF
黒い画面入門 + パッケージ管理紹介 + Macの使い方とか
Tomohiko Himura
 
PDF
Mac OS X のパッケージ管理紹介/比較
Tomohiko Himura
 
PDF
軽量マークアップ言語で気楽にマークアップ
Tomohiko Himura
 
PDF
Hakyllで遊んでみた。
Tomohiko Himura
 
PDF
Liquid の紹介
Tomohiko Himura
 
PDF
Git 仕組み 入門
Tomohiko Himura
 
PDF
Rails Guide 翻訳しようぜ。
Tomohiko Himura
 
PDF
Hiroshimarb 027-fiber
Tomohiko Himura
 
PDF
Hiroshimarb 027-fiber
Tomohiko Himura
 
つながりをゆるふわにしよう Active supprt notifications
Tomohiko Himura
 
Hiroshimarbについて
Tomohiko Himura
 
コンピュータをもっと使おう
Tomohiko Himura
 
OSC2013 HIROSHIMA ライトニングトーク すごい広島
Tomohiko Himura
 
広島で Ruby が流行らないのはどう考えても俺たちが悪い
Tomohiko Himura
 
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
Tomohiko Himura
 
Rails の自動読み込みを支える技術
Tomohiko Himura
 
Rails プロジェクトでスタートダッシュを決める
Tomohiko Himura
 
すごい cron ? - Jenkins 試した
Tomohiko Himura
 
すごい広島
Tomohiko Himura
 
すごい Hiroshima で楽しく学ぼう
Tomohiko Himura
 
黒い画面入門 + パッケージ管理紹介 + Macの使い方とか
Tomohiko Himura
 
Mac OS X のパッケージ管理紹介/比較
Tomohiko Himura
 
軽量マークアップ言語で気楽にマークアップ
Tomohiko Himura
 
Hakyllで遊んでみた。
Tomohiko Himura
 
Liquid の紹介
Tomohiko Himura
 
Git 仕組み 入門
Tomohiko Himura
 
Rails Guide 翻訳しようぜ。
Tomohiko Himura
 
Hiroshimarb 027-fiber
Tomohiko Himura
 
Hiroshimarb 027-fiber
Tomohiko Himura
 

やりなおせる Git 入門