SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
gitの使い方
 あれこれ
    よしだあつし
自己紹介
 お名前: よしだあつし
 Twitter ID: @yalab
 職業: ニート兼プログラマ
 好きな食べ物: カレー
 興味: Rails 3.1, scala
 +android, 最短経路
 
    超速報
 
今朝車上荒しにあ
 いましたorz
Gitとは?
 分散バージョン管理ツール
 詳しくは第4回勉強会の上田さんの
 資料をご覧ください http://
 www.slideshare.net/to_ueda/
 git-6821390
 
    今日やるのはgitのTipsあれこれの
    紹介だけです
    ハンズオンはそのうちきっとやります
    ので今日はお話だけ
    資料はちゃんと公開しますので...
注意
 HEAD という言葉がしばしば出てき
 ますが git log して一番上に表示さ
 れる commit のことをさします
 HEAD^ と書いてあると HEAD の
 一つ前の commit のことをさしま
 す
注意
なんでもは知らないわよ。知ってることだ
け。
git いろいろ
「app/models/user.rb に pデバッグ
入れすぎてしまいました。元に戻したいの
ですが..」
 
ファイル名を指定して checkout する
とそのファイルが直前の add か
commit の状態に戻ります

    $ git checkout app/models/user.rb
git いろいろ
「git status したら .DS_Storeをadd
してしまっていたことがわかりました。どう
にかならないでしょうか」
 
git reset HEAD すると git add し
たファイルをaddしてない状態に戻せ
る

    $ git reset HEAD .DS_Store
git いろいろ
「いろいろファイルの変更を行なったので
すけどそれらを取り消して前の
commit に戻したいのですが」
 
reset を使うとコミットを巻き戻せます

    $ git reset --hard HEAD

    --hard を付けると変更が永久に失
    われます。変更を残しつつコミットを
    巻き戻したいときは --soft を付けて
    やってください
git いろいろ
「さきほど commit した変更に typo
がありましたお恥ずかしいです><」
 
commit に --amend オプションを
付けると直前のコミットをやり直せます
    $ git commit -m "Fixed Foobar"
    (app/views/users/show.html.erb でtypoが見つかった)
    $ vi app/views/users/show.html.erb //typoを修正する
    $ git add app/views/users/show.html.erb
    $ git commit --amend
git いろいろ
「git reset --hard HEAD するつもり
が git reset --hard HEAD^ してしま
いました。失われた HEAD を取り戻せ
ないでしょうか」
 
reflog で消しちゃった commit を確
かめて merge する
    $ git reflog
    f7329c6 HEAD@{0}: HEAD^: updating HEAD
    5f777c3 HEAD@{1}: checkout: moving from branch2 to master
    2cbae2f HEAD@{2}: merge 2cbae2f: Fast-forward
    $ git merge 5f777c3
git いろいろ
「まだコミットしてない変更差分がありま
す。 この状態でgit pull すると怒られ
ちゃったのですが、pull できないでしょう
か?」
 
stash に退避させておいて pull する

    $ git stash save
    $ git pull
    $ git stash apply
git いろいろ
「git stash apply するつもりだったの
ですがzshの補完で git stash clear し
てしまいました...どうにかならないでしょ
うか?」
 
fsck --unreachable と show で目
的の commit を探して merge する
    $ git fsck --unreachable | grep commit
    unreachable commit 312c16b3f1691b065cdff566dbfa3bf7c9659d34
    unreachable commit 62763c8b20179c8feaff357c4308c139ebaf8010
    $ git show 312c16b3f1
    $ git merge 312c16b3f1
git いろいろ
「リリースの後いくつか機能追加して
commit をしました。ところがリリースし
たやつにバグが見つかったのです。どの
ように扱えばいいでしょうか?」
 
後付けでリリースブランチを作成する
    -◎--◎--◎--◎--◎--◎--◎--◎master
           ↑ ↑
           ↑ ここから先がリリース後の機能追加
           ↑
           ここがリリースしたところ

                               続く
 
後付けでリリースブランチを作成する
    -◎--◎--◎--◎--◎--◎--◎--◎master
            \
              ◎--◎ release
             ↑    ↑バグフィックス
             ↑ブランチを分ける         


                               続く
 
後付けでリリースブランチを作成する
    $ git log // リリースした commit を探す
    (commit abcde4 がリリースしたブランチだったとする)
    $ git checkout -b release abcde4 // ブランチを作成
    $ vi app/models/user.rb // バグを修正する
    $ git commit -a -m "Fixed Hoge bug"
    $ git push origin release


                                            続く
 
本番環境を作成したリリースブランチ
にする
    % git fetch origin --all // リモートに作ったブランチ
    % git branch -r // リモートにあるブランチを確認する
    * origin/master
       origin/release
    % git checkout --track origin/release // git 1.6.2 以降
    % git checkout -b release origin/release // git 1.6.1 以前
git いろいろ
「githubで公開してたらyalabとかいう
人からpullリクエストがきたんですけどど
うしたいいでしょう...?」
 
    リジェクトする
 
じゃなくて
 
変更を確かめる
 
問題ないのでリモートリポジトリを
merge する
    $   git   remote add yalab_repos http://git@github.com/yalab/hoge
    $   git   fetch yalab_repos
    $   git   checkout -b local/yalab yalab_repos/master
    $   git   merge local/yalab
    $   git   push
 
「gitって便利ですね」
 
後は実践あるのみ
まとめ
 今回は git の Tips をいろいろ紹
 介しました
  今回紹介しなかったものもいっぱ
 いあります(例: git bisect とか
 git blame とか)
 こんなことできないかな?という事
 の大抵の事はできます
 
後はググれ
 
余談ですけど
 
問題に当たった時に調べるのが一番
身につきやすいです(当社比)
 
勉強会に出ただけ
で満足してないで
  コード書け
 
    ご清聴ありがとうございました

Contenu connexe

Tendances

もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura
 
Gitのよく使うコマンド
Gitのよく使うコマンドGitのよく使うコマンド
Gitのよく使うコマンド
YUKI Kaoru
 
Wordbench fukuoka
Wordbench fukuokaWordbench fukuoka
Wordbench fukuoka
Junji Manno
 

Tendances (20)

もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
 
Git 入門
Git 入門Git 入門
Git 入門
 
はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダー
 
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回
 
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
 
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
 
Gitのよく使うコマンド
Gitのよく使うコマンドGitのよく使うコマンド
Gitのよく使うコマンド
 
大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方
 
ゆるふわっGit入門
ゆるふわっGit入門ゆるふわっGit入門
ゆるふわっGit入門
 
Git勉強会
Git勉強会Git勉強会
Git勉強会
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例
 
Gitの紹介
Gitの紹介Gitの紹介
Gitの紹介
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみました
 
Wordbench fukuoka
Wordbench fukuokaWordbench fukuoka
Wordbench fukuoka
 
Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12
 
Git LFSを触ってみた
Git LFSを触ってみたGit LFSを触ってみた
Git LFSを触ってみた
 
GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
 
Archive: Git 入門(2014/1/10 社内勉強会)
Archive: Git 入門(2014/1/10 社内勉強会)Archive: Git 入門(2014/1/10 社内勉強会)
Archive: Git 入門(2014/1/10 社内勉強会)
 
Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)
 

En vedette

GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
CROOZ, inc.
 
Twitterでネットストーカーをしよう
TwitterでネットストーカーをしようTwitterでネットストーカーをしよう
Twitterでネットストーカーをしよう
よしだ あつし
 
TOEICテスト学習コース~ETS公式問題集収録~
TOEICテスト学習コース~ETS公式問題集収録~TOEICテスト学習コース~ETS公式問題集収録~
TOEICテスト学習コース~ETS公式問題集収録~
Uchida Human Development
 
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリース
よしだ あつし
 

En vedette (20)

こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
はじめようGit
はじめようGitはじめようGit
はじめようGit
 
ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理
 
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドコンセプトから理解するGitコマンド
コンセプトから理解するGitコマンド
 
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
 
社内サーバインフラ勉強会(DB)
社内サーバインフラ勉強会(DB)社内サーバインフラ勉強会(DB)
社内サーバインフラ勉強会(DB)
 
Twitterでネットストーカーをしよう
TwitterでネットストーカーをしようTwitterでネットストーカーをしよう
Twitterでネットストーカーをしよう
 
よい名前を付けましょう リーダブルなんたらとか
よい名前を付けましょう   リーダブルなんたらとかよい名前を付けましょう   リーダブルなんたらとか
よい名前を付けましょう リーダブルなんたらとか
 
Rails3使用雑感
Rails3使用雑感Rails3使用雑感
Rails3使用雑感
 
僕が勉強をする モチベーションと勉強法
僕が勉強をする モチベーションと勉強法僕が勉強をする モチベーションと勉強法
僕が勉強をする モチベーションと勉強法
 
テスト駆動開発入門
テスト駆動開発入門テスト駆動開発入門
テスト駆動開発入門
 
TOEICテスト学習コース~ETS公式問題集収録~
TOEICテスト学習コース~ETS公式問題集収録~TOEICテスト学習コース~ETS公式問題集収録~
TOEICテスト学習コース~ETS公式問題集収録~
 
Railsの今昔
Railsの今昔Railsの今昔
Railsの今昔
 
デバッガでデバッグしない
デバッガでデバッグしないデバッガでデバッグしない
デバッガでデバッグしない
 
私はいかにしてpull request を行ったか - あるいは social development について
私はいかにしてpull request を行ったか - あるいは social development について私はいかにしてpull request を行ったか - あるいは social development について
私はいかにしてpull request を行ったか - あるいは social development について
 
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリース
 
まじょのおしごとの裏側
まじょのおしごとの裏側まじょのおしごとの裏側
まじょのおしごとの裏側
 
15分でできるSQLインジェクション
15分でできるSQLインジェクション15分でできるSQLインジェクション
15分でできるSQLインジェクション
 
Dockerプレゼン
DockerプレゼンDockerプレゼン
Dockerプレゼン
 
Rubyコードの最適化
Rubyコードの最適化Rubyコードの最適化
Rubyコードの最適化
 

Similaire à Gitの使い方あれこれ

20120324 git training
20120324 git training20120324 git training
20120324 git training
Takeshi AKIMA
 
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presen
Kouhei Maeda
 

Similaire à Gitの使い方あれこれ (20)

Git 勉強会
Git 勉強会Git 勉強会
Git 勉強会
 
バージョン管理
バージョン管理バージョン管理
バージョン管理
 
20120324 git training
20120324 git training20120324 git training
20120324 git training
 
Git地図
Git地図Git地図
Git地図
 
Gitとちょっと仲良くなるために覚えたことまとめ
Gitとちょっと仲良くなるために覚えたことまとめGitとちょっと仲良くなるために覚えたことまとめ
Gitとちょっと仲良くなるために覚えたことまとめ
 
Shizudev git hub宿題
Shizudev git hub宿題Shizudev git hub宿題
Shizudev git hub宿題
 
Gitを使ってみませんか
Gitを使ってみませんかGitを使ってみませんか
Gitを使ってみませんか
 
gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編
 
Git svnではじめる忍者のごとく潜むgit
Git svnではじめる忍者のごとく潜むgitGit svnではじめる忍者のごとく潜むgit
Git svnではじめる忍者のごとく潜むgit
 
底辺webプログラマが今更git語ってみた
底辺webプログラマが今更git語ってみた底辺webプログラマが今更git語ってみた
底辺webプログラマが今更git語ってみた
 
今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編
 
Git講習会
Git講習会Git講習会
Git講習会
 
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 Workshop 20130720
Git Workshop 20130720Git Workshop 20130720
Git Workshop 20130720
 
Gitを使ってみよう
Gitを使ってみようGitを使ってみよう
Gitを使ってみよう
 
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presen
 
実践 Git - 低レベルに知る Git
実践 Git - 低レベルに知る Git実践 Git - 低レベルに知る Git
実践 Git - 低レベルに知る Git
 
Github第4章
Github第4章Github第4章
Github第4章
 
Git introduction2
Git introduction2Git introduction2
Git introduction2
 
gitを1から学ぼう!
gitを1から学ぼう!gitを1から学ぼう!
gitを1から学ぼう!
 

Plus de よしだ あつし (7)

serviceクラスをやめようサブクラスを使おう
serviceクラスをやめようサブクラスを使おうserviceクラスをやめようサブクラスを使おう
serviceクラスをやめようサブクラスを使おう
 
ruby で書く 脆弱なコード
ruby で書く 脆弱なコードruby で書く 脆弱なコード
ruby で書く 脆弱なコード
 
CTOのおしごと
CTOのおしごとCTOのおしごと
CTOのおしごと
 
Selfを考える
Selfを考えるSelfを考える
Selfを考える
 
Railsにコントリビュートしてきました
RailsにコントリビュートしてきましたRailsにコントリビュートしてきました
Railsにコントリビュートしてきました
 
低レイヤから見たrubyプログラミング
低レイヤから見たrubyプログラミング低レイヤから見たrubyプログラミング
低レイヤから見たrubyプログラミング
 
Vue.js ハンズオン資料
Vue.js ハンズオン資料Vue.js ハンズオン資料
Vue.js ハンズオン資料
 

Gitの使い方あれこれ