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

git-practice

 git-practice

git講習会で用いたスライド

Tomoki Sugiura

October 02, 2018
Tweet

More Decks by Tomoki Sugiura

Other Decks in Programming

Transcript

  1. Topics 1. git clone でリモートのリポを複製する 2. git pull でリモートの変更を反映する 3.

    branch を切ってみる 4. conflict を起こす&解消する 5. pull request を送ってみる 6. 作業ブランチがベースブランチから離れてし まったときの対処法 7. GUIクライアントの紹介 2
  2. fetch&merge ◎ fetch ◦ リモートリポジトリの変更をローカルリポジトリ (origin/master)へ 反映するコマンド ⇒ファイルは更新されない! ◎ merge

    ◦ fetchして反映した内容をローカル(master)に反映させる 7 $ git fetch origin master $ git merge origin/master
  3. branch ◎ shanpuのリポからブランチを切ってみよう ◎ ブランチ名はpractice/{{ yourname }} 11 $ git

    branch practice/{{ yourname }} # branchを確認 $ git branch # チェックアウトしてリモートに反映 $ git checkout practice/{{ yourname }} $ git push origin practice/{{ yourname }}
  4. feature & fix ◎ masterから開発用ブランチdevelopを切るが基本的 にこれに直接コミットしない ◎ 機能単位ごとに次のようなブランチを切る ◦ feature/piyo

    : piyo機能を開発するブランチ ◦ fix/hoge : hogeバグを修正するブランチ ◎ それぞれdevelopにマージ ◦ チーム開発のときはpull requestを出して マージしてもらう 12
  5. Let’s make conflict 1. practice/{{ yourname }}ブランチから practice/{{ yourname }}-branchA

    を切る 2. {{ yourname }}.txtを作成して一行目に{{ yourname }}-Aを記入&コミッ ト 3. practice/{{ yourname }}ブランチから practice/{{ yourname }}-branchB を切る 4. {{ yourname }}.txtを作成して一行目に{{ yourname }}-Bを記入&コミッ ト 5. practice/{{ yourname }}ブランチにチェックアウト 6. practice/{{ yourname }}-Aをpractice/{{ yourname }}にマージ 7. practice/{{ yourname }}-Bをpractice/{{ yourname }}にマージ 8. ⇒ practice/{{ yourname }}-Bのマージ失敗,コンフリクト!! 17
  6. How to solve conflict ? case1 ◎ 手動で頑張る ◎ コンフリクトした箇所にマークが入るのでそれを

    見つけていい感じにする 18 <<<<< HEAD << {{ yourname }}-A ===== == {{ yourname }}-B >>>>> {{yourname}}- branchB >> {{ yourname }}-A {{ yourname }}-B
  7. How to solve conflict ? case2 ◎ どちらかに合わせる ◎ もう片方の変更は反映されない

    19 # 統合ブランチ(マージされる方)に合わせる $ git checkout --ours {{ yourname }}.txt # トピックブランチ(マージする方)に合わせる $ git checkout --theirs {{ yourname }}.txt
  8. How to solve conflict ? case3 ◎ 諦める(つらいときは逃げてもいいんだよ) ◎ 状況に応じてコマンドを選ぶ

    20 # conflict後に何もしていない場合 $ git merge --abort # conflictを修正しようと色々いじった後の場合 $ git reset --hard HEAD # commitまでしたけどやっぱりやめたい場合 $ git reset --hard ORIG_HEAD
  9. How to solve conflict when you’re doing rebase ? ◎

    次の操作を繰り返す ◦ コンフリクトを解消 ◦ 解消したらcontinue 28 # conflictを解消 $ git add {{ conflicted file }} $ git rebase --continue
  10. rebase & pull request ◎ pull request を出す前にrebaseして最新の 統合ブラン チの変更に合わせる

    ◦ 最新の統合ブランチでも自分の実装した機能が動くこと を確認する ◎ mergeでいいのでは…? ◦ 個人開発ではそれでもいい ◦ ログが汚れるためOSS開発では忌避される ◦ チーム開発ではメンバー次第(僕はrebaseしてほしい) 29
  11. Git Kraken ◎ 僕の推し(これしか使ったことない…) ◎ Windows, Mac, Linuxに対応 ◎ かっこいい

    ◎ コンフリクト解消のためのツールもなかなかいけてる ◎ 無料版と有料版がある 33