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

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

kaityo256
October 22, 2021

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

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

kaityo256

October 22, 2021
Tweet

More Decks by kaityo256

Other Decks in Education

Transcript

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

    rebaseにより歴史を改変する • git rebaseの衝突を解決する • git bisectを使ってみる
  2. 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管理された ディレクトリ ここがカレントディレクトリに
  3. 4 29 git log --oneline initial commit updates README.md updates

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

    README.md main HEAD original_main git branch original_main 現在のコミットに別名をつけておく
  5. 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
  6. 7 29 git log --oneline 歴史の確認 initial commit updates README.md

    updates README.md updates README.md main HEAD 修正されていることを確認
  7. 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
  8. 9 29 リポジトリのクローン cd cd github git clone https://github.com/appi-github/merge-sample.git cd

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

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

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

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

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

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

    rebase-history-sample github rebase-history-sample ここがカレントディレクトリに
  15. 20 29 リポジトリのクローン cd cd github git clone https://github.com/appi-github/rebase-conflict-sample cd

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

    branch origin/branch origin/branchの指すコミットにbranchというブランチを作成し、 カレントブランチをそこへ移動
  17. 24 29 main m1 m2 m3 f1 f2 f3 f1’

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

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

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

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

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