Save 37% off PRO during our Black Friday Sale! »

演習:Gitの操作(応用編) / GitHub Practice Advanced

A10e41b0a61d59f2258d7f6172c33479?s=47 kaityo256
October 22, 2021

演習:Gitの操作(応用編) / GitHub Practice Advanced

物理情報工学ソフトウェア開発演習

A10e41b0a61d59f2258d7f6172c33479?s=128

kaityo256

October 22, 2021
Tweet

Transcript

  1. 1 29 演習:Gitの操作(応用編) 慶應義塾大学理工学部物理情報工学科 渡辺 物理情報工学ソフトウェア開発演習

  2. 2 29 • git amendによりコミットが変更されることを確認する • git mergeの衝突を解決する • git

    rebaseにより歴史を改変する • git rebaseの衝突を解決する • git bisectを使ってみる
  3. 3 29 リポジトリのクローン ディレクトリの作成 github cd mkdir github cd github

    git clone https://github.com/appi-github/amend-sample.git cd amend-sample ホームディレクトリに移動してから githubディレクトリを作成 github amend-sample ホームディレクトリ Git管理された ディレクトリ ここがカレントディレクトリに
  4. 4 29 git log --oneline initial commit updates README.md updates

    README.md updaets README.md main HEAD 歴史の確認
  5. 5 29 コミットの保存 initial commit updates README.md updates README.md updaets

    README.md main HEAD original_main git branch original_main 現在のコミットに別名をつけておく
  6. 6 29 コミットメッセージの修正 git commit --amend -m "updates README.md" initial

    commit updates README.md updates README.md updaets README.md main HEAD original_main updates README.md
  7. 7 29 git log --oneline 歴史の確認 initial commit updates README.md

    updates README.md updates README.md main HEAD 修正されていることを確認
  8. 8 29 git log --all --graph --oneline 歴史が分岐したことを確認 initial commit

    updates README.md updates README.md updaets README.md main HEAD original_main updates README.md
  9. 9 29 リポジトリのクローン cd cd github git clone https://github.com/appi-github/merge-sample.git cd

    merge-sample github merge-sample ここがカレントディレクトリに
  10. 10 29 ブランチの作成 git branch knock origin/knock main HEAD knock

    ブランチの確認 git branch -vva main HEAD origin/knock origin/knock origin/knockの指すコミットに knockブランチを作成
  11. 11 29 差分確認 main HEAD knock git diff knock poetry.txt

    poetry.txt コミット間を比較 ここに差分を検出
  12. 12 29 マージ main HEAD knock 衝突 git merge knock

    マージの中断 git merge --abort main HEAD knock このプロセスでpoetry.txtが どのように変化したか調べる
  13. 13 29 マージ git merge knock main HEAD knock 衝突

    衝突の解決とコミット git add poetry.txt git commit -m "knock" potery.txtをエディタで修正
  14. 14 29 main HEAD knock git log --all --graph --oneline

    マージされた「歴史」を確認
  15. 15 29 リポジトリのクローン cd cd github git clone https://github.com/appi-github/rebase-history-sample.git cd

    rebase-history-sample github rebase-history-sample ここがカレントディレクトリに
  16. 16 29 二人が目を覚ます アイスがまだある アイスが消えた ボブが登校 歴史の確認 git log --oneline

  17. 17 29 ブランチの作成 git branch start origin/start 二人が目を覚ます アイスがまだある アイスが消えた

    ボブが登校 main HEAD knock 歴史改変の起点にする
  18. 18 29 歴史改変 git rebase -i start

  19. 19 29 改変された歴史の確認 git log --oneline 二人が目を覚ます アイスがまだある アイスが消えた ボブが登校

  20. 20 29 リポジトリのクローン cd cd github git clone https://github.com/appi-github/rebase-conflict-sample cd

    rebase-conflict-sample github rebase-conflict-sample ここがカレントディレクトリに
  21. 21 29 main HEAD branch origin/branch ブランチの準備 git switch -c

    branch origin/branch origin/branchの指すコミットにbranchというブランチを作成し、 カレントブランチをそこへ移動
  22. 22 29 歴史の確認 git log --all --graph --oneline main HEAD

    branch m1 m2 m3 f1 f2 f3
  23. 23 29 リベースの実行 git rebase main main HEAD branch

  24. 24 29 main m1 m2 m3 f1 f2 f3 f1’

    f2’ f3’ 状態の確認 git status HEAD HEADは「最後にリベースがうまくいったコミット」を指している (detached HEAD)
  25. 25 29 main m1 m2 m3 f1 f2 f3 f1’

    f2’ f3’ HEAD エディタで衝突状態にあるファイル「text1.txt」を修正し、保存する
  26. 26 29 解決をGitに伝える git add text1.txt git commit -m "f2"

    main m1 m2 m3 f1 f2 f3 f1’ f2’ f3’ HEAD Gitが自動で作ることができなかった このコミットを手動で作った
  27. 27 29 リベースの続行 git rebase --continue main m1 m2 m3

    f1’ f2’ f3’ HEAD branch リベースが最後まで実行され、detached HEAD状態が解消される
  28. 28 29 歴史の確認 git log --oneline --graph main m1 m2

    m3 f1’ f2’ f3’ HEAD branch もともと分岐していた歴史が一本道になり、 mainからbranchへfast-forwardマージが可能になった
  29. 29 29 git bisectを使った犯人捜し