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

GitHubよちよち会#2

はない
February 24, 2016

 GitHubよちよち会#2

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

はない

February 24, 2016
Tweet

More Decks by はない

Other Decks in Technology

Transcript

  1. A.local R.local WWhhaatt wwee lleeaarrnneedd 前回のおさらい GitHub.com origin $ git

    push origin master $ git add ./modified/file $ git add ./modified/file $ git commit ./modified/file $ git commit ./modified/file
  2. WWhhaatt wwee lleeaarrnneedd GGiittで気にするローカル環境は、 以下の3つの領域で構成されているよ。 領域の名前 それぞれの領域にあるもの ワーキングツリー WWoorrkkiinngg TTrreeee

    実際に編集するファイル ステージ領域 SSttaaggee AArreeaa 次にコミットするファイルの 一時保管 リポジトリ RReeppoossiittoorryy 最新コミット((HHEEAADD))とか
  3. mmaasstteerr bbrraanncchh iiss…� GGiitt でデフォルトとして作成される bbrraanncchhだよ! 使い方はプロジェクトにより様々あるよ! たとえば・・・ (参考) gitのブランチモデル検討~git-flowとgithub-flowを比較してみた~

    http://qiita.com/jshimazu0820/items/066e061eef700caa1c68 「masterブランチは 常時デプロイ可能 である」 GitHub Flow 図解 http://qiita.com/tbpgr/items/4ff76ef35c4ff0ec8314
  4. bbrraanncchh iiss…� 並行作業のための仕組みだよ! first release next release 3 5 3

    次回リリースに向けたアローダイアグラム bugfix additional function bbuuggffiixx と aaddddiittiioonnaall ffuunnccttiioonnの開発は 並行できるね。
  5. bbrraanncchh iiss…� Repository Stage Area .git index HEAD objects IInnddeexx

    ファイルとHHEEAADDの 更新日時が変わってるね? 31 5660c3c0c9c1721549a48c8f4fbd2250b634ad
  6. bbrraanncchh iiss…� 安心してください。取り消せますよ。 # 消したいbranchと別のbranchに移動 $ git checkout master #

    branchを削除 $ git branch –d mistaken_branch_name # branch再作成 $ git checkout -b correct_branch_name # 作業中のbranch確認 $ git branch git: ローカルのブランチ名を変更したい http://qiita.com/suin/items/96c110b218d919168d64 コミットを積んだ後でも、branch名は変更できた!!!
  7. bugfix mmeerrggee bbrraanncchh ttoo mmiinnee first release next release additional

    function 僕のbranchに とりこみます。 $ git push origin bugfix bugfix add_function
  8. mmeerrggee bbrraanncchh ttoo mmiinnee やってみよう! # リモートの bugfix を取得 $

    git fetch $ git branch –a $ git checkout –b bugfix origin/bugfix # 取り込む側のbranchに移動 $ git checkout add_function # bugfix を add_function に取り込み $ git merge bugfix # リモートに反映 $ git push origin add_function
  9. mmeerrggee bbrraanncchh ttoo mmiinnee とりあえずおちつけ!状況を確認だ! $ git merge bugfix Auto-merging

    GitHub勉強会/src/AppBundle/Resources/views/HogeController/index.html.twig CONFLICT (content): Merge conflict in GitHub勉強会/src/AppBundle/Resources/views/HogeController/ index.html.twig Automatic merge failed; fix conflicts and then commit the result. $ git status On branch add_function Your branch is up-to-date with 'origin/add_function'. You have unmerged paths. (fix conflicts and run "git commit") Unmerged paths: (use "git add <file>..." to mark resolution) both modified: "GitHub\345\213\211\345\274\267\344\274\232/src/AppBundle/Resources/views/HogeController/ index.html.twig” index.html.twigでccoonnfflliiccttが起きたみたいだね!
  10. mmeerrggee bbrraanncchh ttoo mmiinnee ccoonnfflliiccttしたところを直そう! $ git mergetool --tool=[tool名] #

    conflictを直接編集して修正 ---- <<<<<<< HEAD <p>コンバンワ</p> ======= <p>こんにちは</p> >>>>>>> bugfix ---- Gitコンフリクト解消ガイド(git mergetoolの使い方) http://qiita.com/yuya_presto/items/5d99499cf96c0ebb09f8 ここは”HHEEAADD” ==” aadddd__ffuunnccttiioonn”の内容だね。 ここは”bbuuggffiixx”の内容だね。
  11. A.local R.local mmeerrggee bbrraanncchh ttoo mmiinnee GitHub.com $ git push

    origin bugfix bugfix add_function bugfix $ git fetch $ git checkout –b bugfix origin/bugfix $ git merge bugfix # conflictを直接編集して修正
  12. A.local R.local mmeerrggee bbrraanncchh ttoo mmiinnee GitHub.com bugfix add_function bugfix

    # 忘れ物追加 てへぺろ(・ω<) $ git push origin bugfix # 最新ソースの取得 $ git fetch $ git merge origin/bugfix $ git merge bugfix
  13. ・WWhhaatt iiss “ffeettcchh”?? ・WWhhaatt iiss tthhee ddiiffffeerreennccee  bbeettwweeeenn [[bbuuggffiixx]] aanndd

    [[oorriiggiinn//bbuuggffiixx]]?? ・WWhhaatt iiss hhaappppeenneedd wwhheenn II mmeerrggee?? mmeerrggee bbrraanncchh ttoo mmiinnee
  14. ffeettcchh iiss …� リモートリポジトリから最新情報をローカルリポジトリ に持ってくるコマンドだよ。 ppuusshh ffeettcchh アップロード ダウンロード mmeerrggee

    bbrraanncchh ttoo mmiinnee (参考)Git pullを使うべきでない3つの理由 http://dqn.sakusakutto.jp/2012/11/git_pull.html (参考) git fetchの理解からgit mergeとpullの役割 http://qiita.com/osamu1203/items/cb94ef9da02e1ec3e921
  15. mmeerrggee bbrraanncchh ttoo mmiinnee (参考)追跡ブランチ (tracking branch) というブランチが何なのか調べた http://snowlong.hatenablog.com/entry/2015/03/12/212455 (参考)

    git pullの詳細な挙動を追ってみる http://d.hatena.ne.jp/hokaccha/20120404/1333507076 (参考) git pull を --set-upstream-to で引数無しで実行可能にする http://qiita.com/kjirou/items/e0469aac0e128be380d6 試しに確認してみよう。 $ git checkout master $ git checkout –b checkout_from_local_branch $ git checkout –b checkout_from_remote_branch origin/remote_branch $ git branch -vv # トラッキングを有効にする $ git branch --set-upstream-to=origin/checkout_from_local_branch checkout_from_local_branch # お手軽version $ git push -u origin checkout_from_local_branch
  16. mmeerrggee bbrraanncchh ttoo mmiinnee WWhhaatt iiss hhaappppeenneedd oonn yyoouurr mmeerrggee…�

    <<FFaasstt--FFoorrwwaarrdd>> first release bugfix bugfix master commit 2 commit 1 second release master mmaasstteerrにbbuuggffiixxブランチで作ったコミットが積まれるよ。 mmaasstteerrがFFaasstt--FFoorrwwaarrdd((早送り))されたよ。 bbuuggffiixxの開発中にmmaasstteerrに何もコミットがされていないことが条件だね。 llooggにはmmeerrggeeの履歴が残らないよ。 # mergeした履歴を残す $ git merge --no-ff bugfix
  17. mmeerrggee bbrraanncchh ttoo mmiinnee WWhhaatt iiss hhaappppeenneedd oonn yyoouurr mmeerrggee…�

    <<NNoonn FFaasstt--FFoorrwwaarrdd>> first release bugfix bugfix master commit 2 commit 1 second release modify message merge commit master bbuuggffiixxのコミットにmmeerrggee コミットが作られたよ。 bbuuggffiixxの開発中にmmaasstteerrに変更が入�って,,差分が出たね。 mmeerrggeeコミットがmmeerrggee作業のllooggとして残るね。
  18. mmeerrggee bbrraanncchh ttoo mmiinnee <<NNoonn FFaasstt--FFoorrwwaarrdd>> first release bugfix commit

    2 commit 1 modify message master bugfix 共通の祖先の スナップショット 取り込む変更の スナップショット 取り込みのベース にする スナップショット
  19. mmeerrggee bbrraanncchh ttoo mmiinnee <<NNoonn FFaasstt--FFoorrwwaarrdd>> modify message bugfix master

    merge commit master mmeerrggeeコミットは親を2つ持つちょっと変わったコミットだよ。 共通の祖先の スナップショット 取り込む変更の スナップショット 取り込みのベース にする スナップショット 33wwaayy--mmeerrggee された スナップショット first release commit 2
  20. mmeerrggee bbrraanncchh ttoo mmiinnee そんなあなたは…� <<rreebbaassee>> first release bugfix bugfix

    master commit 2 commit 1 commit 2 commit 1 master $ git rebase master bugfix modify message 変更パッチ として適用
  21. Q.