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

【修正版】もう怖くないVS Codeで始めるGit/GitHub実践入門

【修正版】もう怖くないVS Codeで始めるGit/GitHub実践入門

2023/01/28のオープンソースカンファレンス 2023 Online/Osakaで登壇した際に使用したスライドです。
https://event.ospn.jp/osc2023-online-osaka/session/744343

※2023/02/20に一部表示画像に不備があったため、修正版をアップロードしています

Ishimoto Tatsuya

January 28, 2023
Tweet

More Decks by Ishimoto Tatsuya

Other Decks in Technology

Transcript

  1. • 本名: 石本 達也 • 日本仮想化技術(VTJ) エンジニア • 長崎出身→福岡→東京 •

    2012年10月〜 OSC福岡で初めて学生として参加し、オープンソースを知る • 2015年04月 新卒として商社系のSIerに入社 ◦ SAPの導入支援&アドオン開発を担当 • 2017年07月 ベンチャー系の人材紹介会社に入社 ◦ 大手通信会社の案件でサービス開発PJで要件調整やマルチベンダとの折衝や調整を担当 ◦ 社内に戻りディレクション業務とRPA開発チーム立ち上げをエンジニア兼務で担当 • 2022年01月 日本仮想化技術に入社(2年目) ◦ インフラ・Ops寄りの強いイメージの会社ですが、珍しくDev寄りの人としてJoin ◦ VS Codeを軸にした仕組み化や自動化しつつ、理想的な開発環境の探究 ◦ プロダクトやサービスを企画してDevOpsを取り入れた開発をしながら試行錯誤 ◦ フィードバック。社内からも積極的にDevOps支援サービス改善に繋げる 自己紹介 2
  2. • コンピューター上でファイルの変更履歴を管理することをバージョン管理といい、そのシステム のことをバージョン管理システムという • バージョン管理のメリット ◦ 編集過程を履歴として保持して、過去の状態や変更内容を好きな時に確認できるようになる ◦ 複数人での開発でも誰がいつどのような内容で変更したのかを確認することもできる •

    歴史 ◦ …→SCCS→RCS→CVS→Subversion→Git… ◦ 仕事でSubversionよりも前のツールを触ったことがない世代 ◦ インターンシップでギリギリSubversionを見た • バージョン管理システムは集中型(クライアント・サーバー型)から分散型に 4 バージョン管理システム
  3. Gitとは? 6 • ソースコードなどの変更履歴を記録・追跡するためのバージョン管理システムの1つ • Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発 ◦ 現在のメンテナは濱野純という方で、2005年7月から担当 • 各ユーザのワーキングディレクトリに、全履歴を含んだリポジトリの完全な複製が作られる

    • リモートリポジトリにアクセスできない環境でも、ほとんどの作業を行うことができる ◦ 分散型の特徴の1つ • 一般的な開発スタイルでは、次のステップを繰り返す ◦ ① クローン(git clone) ▪ リモートリポジトリからローカルに複製する ◦ ② コミット(git commit) ▪ ローカルリポジトリに変更履歴を1つもしくは複数を記録する ◦ ③ プッシュ(git push) ▪ ローカルの変更履歴をリモートリポジトリに反映する ◦ ④ プル(git pull) ▪ 更新されたリモートリポジトリの変更履歴をローカルに反映する
  4. リモートリポジトリはどうする? 7 • Gitをインストールしただけではリモートリポジトリは作成されない • 自分で構築してアクセスしてもらうこともできるが上級者向け • Gitベースのサービス ◦ GitHub、GitLab、BitBucket、CodeCommit(AWS)、Cloud

    Source Repositories(GCP)、 Azure Repos など • まずはGitHubから使いこなそう ◦ 多くの人の使用されているので情報も豊富 • GitHubは、Subversionのサポートを終了すると発表
  5. • Visual Studio Code=VS Code、code • 主な機能 ◦ シンタックスハイライト、スニペット、インテリセンス、リファクタリング、デバッグ、テスト •

    元々はHTML5ベースのWebブラウザーで動くエディター&ツールフレームワークとして開発 ◦ Internet Explorer(IE)やMicrosoft EdgeのF12開発者ツール など • ブラウザー版で一定の成功を納めたのち、より高みを目指してデスクトップ版の開発にも着手 ◦ Electron上で構築 • 2015年04月 Build 2015(Microsoftの開発者向けカンファレンス)でプレビュー版が発表 ◦ 「Code editing, redefined」(コードエディターの再定義)のスローガンを掲げている ◦ 統合開発環境(IDE)とテキストエディターの中間的な位置付け • 2015年11月にオープンソースとして公開 ◦ オープンソースな場で開発を行い、ブランド製品としてリリースしている(Chromiumと同じようなスタイル) ◦ Visual Studioからより高速に開発サイクルを回すために機能を絞って軽量なエディターとして作られた • 拡張機能から拡張APIを通じてほぼすべての機能にアクセス可能 • リリースサイクルは、毎月第1金曜あたり。 ◦ Youtubeでリリースパーティがライブ配信される Visual Studio Codeとは? 8
  6. 9

  7. 17

  8. オプションの取得と設定(git config) • https://git-scm.com/docs/git-config • リポジトリまたはグローバル オプションの取得と設定ができるコマンド • 「git config

    --global {オプション名}」で取得 • 「git config --global {オプション名} {値}」で設定 • 「git config –global init.defaultBranch main」 • VS Codeでは多分できない?(見つけられていない) 23
  9. git add … • https://git-scm.com/docs/git-add • ステージエリアに追加するコマンド • コミット前には必ずこの操作が必要 git

    commit … • https://git-scm.com/docs/git-commit • ステージエリアにある変更を確定するコマンド コミットの頻度は? • こまめにコミットすることが望ましい • つまみ食い的なコーディングをやるとステージエリア での編集の手間が増える あど?すてーじえりあ?こみっと? 28
  10. 29

  11. 31

  12. • git branch … • https://git-scm.com/docs/git-branch • 履歴の分かれ目 • 複数のブランチを作成できる

    パブリックなブランチ • main、develop、feature…などのxxx-Flow系 プライベートなブランチ • ローカルリポジトリで開発者自身で一時的に分岐さ せるもの ぶらんち? 39
  13. 42

  14. まーじ?りべーす? git merge(画像左) • https://git-scm.com/docs/git-merge • 分岐元に変更を反映 • ブランチの軌跡は残る •

    非破壊的な変更 • マージコミットを作成して反映 git rebase(画像右) 💀 • https://git-scm.com/docs/git-rebase • 分岐元に変更を反映 • ブランチの奇跡は残らない • 破壊的な変更 • 新しいコミットを反映先に作成 ◦ ハッシュ値も新しくなる 45
  15. 46

  16. 47

  17. 48

  18. 49

  19. 51

  20. 52

  21. 53

  22. 54

  23. 55

  24. 58

  25. 59

  26. 60

  27. 61

  28. 63

  29. 72

  30. 75

  31. 76

  32. 83

  33. Git関連でオススメの拡張機能 Git History 96 • Gitのログや履歴を検索する機能を提供 • VS Codeの公式サイト上でお墨付き GitLens

    • Blameなどの機能を提供 • 行を最後に編集した人などを表示できる • VS Codeの公式サイト上でお墨付き
  34. Git関連でオススメの拡張機能 Git Graph 97 • グラフ表示をサポート • VS Codeの公式サイト上でお墨付き Git

    History Diff • 変更履歴をDiff形式での確認をサポート • VS Codeの公式サイト上でお墨付き