Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitHubよちよち会#1

はない
February 17, 2016

 GitHubよちよち会#1

社内勉強会で使った資料(1回目/全3回)

はない

February 17, 2016
Tweet

More Decks by はない

Other Decks in Technology

Transcript

  1. GGiittHHuubb OOvveerr VViieeww 早速、ローカルリポジトリを確認しよう!のまえに・・・ ・ローカルリポジトリは隠しフォルダなので、見えるようにしよう。 ・リモートリポジトリからソースを取得しよう。 # 隠しファイルの表示設定 $ defaults

    write com.apple.finder AppleShowAllFiles -boolean true $ killall Finder #隠しファイルの表示設定を元に戻す $ defaults delete com.apple.finder AppleShowAllFiles $ killall Finder # ソースをリモートリポジトリ(hoge/study)から取得 $ cd /path/to/your/gitFolder $ git clone [email protected]:hoge/study.git
  2. GGiittHHuubb OOvveerr VViieeww Finder study Local Repository .git Workspace 䩺

    䩺 䩺 䩺 GitHub勉強会 物理構成を確認しよう!
  3. GGiittHHuubb OOvveerr VViieeww Finder study Repository .git Working Tree 䩺

    䩺 䩺 䩺 GitHub勉強会 Stage Area 䩺 䩺 䩺 䩺 index
  4. GGiittHHuubb OOvveerr VViieeww GGiittで気にするローカル環境は、 以下の3つの領域で構成されているよ。 領域の名前 それぞれの領域にあるもの ワーキングツリー WWoorrkkiinngg TTrreeee

    実際に編集するファイル ステージ領域 SSttaaggee AArreeaa 次にコミットするファイルの 一時保管 リポジトリ RReeppoossiittoorryy 最新コミット((HHEEAADD))とか
  5. GGiittHHuubb OOvveerr VViieeww 実際にやってみよう! $ cd /path/to/your/gitFolder/study/GitHub勉強会 # 現在のワーキングツリーとステージ領域の差分を確認 $

    git status # お好みの方法で./src/AppBundle/Resources/views/InquiryController配下に   ファイルを作る。(ファイル名にご自分のアカウント名を入れてください) # 今作成したファイルが差分として表示されることを確認する # --long option をつけたときと同じ状態で実行される $ git status #簡潔にワーキングツリーの状態を知りたいときは –-short,-s option をつける $ git status –-short # ステージ領域にファイルを追加して、状態を確認する $ git add ./yourAddingFile $ git status
  6. GGiittHHuubb OOvveerr VViieeww 安心してください。取り消せますよ。 # reset で取り消す(ちょい危険かも) $ git reset

    HEAD ./pathToUnstageFile # rm で取り消す $ git rm --cached ./pathToUnstageFile # コマンドリファレンス( http://git-scm.com/docs/ )より git reset [<mode>] [<commit>] This form resets the current branch head to <commit> and possibly updates the index (resetting it to the tree of <commit>) and the working tree depending on <mode>. If <mode> is omitted, defaults to "--mixed". The <mode> must be one of the following: git-rm --cached Use this option to unstage and remove paths only from the index. Working tree files, whether modified or not, will be left alone.
  7. GGiittHHuubb OOvveerr VViieeww Repository Stage Area 䩺 䩺 䩺 䩺

    .git index HEAD objects $ git add ./yourAddingFile IInnddeexx ファイルの 更新日時が変わってるね? ローカルで変更した内容をここにまとめて るよ。
  8. GGiittHHuubb OOvveerr VViieeww コミットしよう! # ステージ領域のファイルをコミットして、状態を確認する $ git commit #

    コミットメッセージの入力 # git commit –m ‘message’でも可ですが・・・ $ git status $ git log コミットされたことが確認できたね!
  9. GGiittHHuubb OOvveerr VViieeww 安心してください。取り消せますよ。 # reset で取り消す # [HEAD^]はHEADの1つ前のコミットという意味 #

    ワーキングツリー,ステージ領域はそのままで、コミットを取り消す $ git reset --soft HEAD^ # ワーキングツリーの変更は残し、ステージ領域とコミットを取り消す $ git reset HEAD^ # ワーキングツリーの変更ごとさようなら $ git reset --hard HEAD^ # --amend でコミットメッセージを書き換える # 直前のコミットを取り消すコミットが作られる $ git commit --amend
  10. GGiittHHuubb OOvveerr VViieeww Repository Stage Area .git index HEAD objects

    $ git commit IInnddeexx ファイルの 更新日時が変わってるね? コミットハッシュが発行されたよ。 31 5660c3c0c9c1721549a48c8f4fbd2250b634ad
  11. ちょっと詳しく Repository .git objects 00 5660c3c0c9c1721549a48c8f4fbd2250b634ad fa # コミットオブジェクトの中身を見る $

    git cat-file –p [コミットハッシュ] b1d3625887e6931085c677df1cd9d22282a3bf ・コミット時にコミットオブジェクトを生成して、  ID(ハッシュ値)を記録する。 ・コミットオブジェクトには、以下が記録される  - tree :ディレクトリツリーのID  - parent : 親(1つ前)のコミットハッシュ  - author : その作業をもともと行った人のID  - commiter : その作業を適用した人のID  - コミットコメント : コミットコメント
  12. A.local R.local GitHub.com ここまでのおさらい $ git add ./editedFiles $ git

    commit # リモートリポジトリから取得 $ git clone
  13. GGiittHHuubb OOvveerr VViieeww 安心してください。取り消せますよ。 # revart で取り消す $ git log

    --oneline $ git revert [ハッシュ値] # 取り消したことを確認 # push しなおし $ git push origin master # ログを確認 $ git log --oneline http://qiita.com/kkyouhei/items/f7588566cba0364ea832 「過去に犯した過ちは決してなかった事になんて出来ない。 認めよう、自分の無知と愚かさを。」
  14. GGiittHHuubb OOvveerr VViieeww まずはこちらをご覧ください。 # リモートリポジトリ $ git remote -v

    リモート名称は追加できます。 # リモートリポジトリのラベルを追加 $ git remote add [リモートリポジトリのラベル] [url] 実は、こんな風にppuusshhできます $ git push [url] master
  15. R.local GitHub.com リモート名称の見え方 $ git remote -v origin ~~~ $

    git push origin master reiko さんは、 hoge teamの メンバーなので、直接 pushできるよ。 した時に、自動的に「origin」と 名づけられたよ。 $ git clone [url] shortname:origin url:https://github.com/hoge/study.git urlでもアクセスできるけど、 pushするたびに入力するのは 大変やね。。。
  16. R.local GitHub.com リモート名称の見え方 $ git push origin master $ git

    remote add reiko [url] $ git push reiko master Pull Request 「取り込んでください」 teamのメンバーでない場合は、 直接pushできません。 shortname:origin shortname:reiko
  17. Q.

  18. 参考にさせていただいたサイト Gitがこわくて触れられなかったけど、このスライドで理解出来るようになったよGitサイトまとめ http://programmerbox.com/2013-07-17_git_summary/ 私の使うGitコマンドまとめ 見る編 http://naokirin.hatenablog.com/entry/20111202/1322576420 tweeeetyのぶろぐ的めも http://tweeeety.hateblo.jp/ git reset

    がわからない http://qiita.com/annyamonnya/items/d845597606fbabaabcad さっきの取り消したい!って時のGitコマンドまとめ http://qiita.com/kansiho/items/2bacecdb95d752cb38b7 Gitのコミットハッシュ値は何を元にどうやって生成されているのか - Mercari Engineering Blog http://tech.mercari.com/entry/2016/02/08/173000 コマンドリファレンス - git http://git-scm.com/docs