🐥

Git UI - Visual StudioとVS Codeの使い方と差異

2022/08/10に公開

logo

概要

Visual StudioとVisual Studio Code(以下VS Code)には優れたGitのUIが搭載されています。秀逸なUXによりGit特有の複雑さを意識させずに、変更管理が可能となっています。

これらのUIには多少の差異があります。この記事では、各UIにおける主要な使い方をまとめ、その差異をあえてピックアップしまとめていきます。Gitをこれから使い始める人にも参考になるような資料になっていると思います。

Download and Info

🟪 Visual Studio
https://visualstudio.microsoft.com/en/vs/whatsnew//

🟦 VS Code
https://azure.microsoft.com/en-us/products/visual-studio-code/

🟧 Git
https://git-scm.com

環境

より直感的に操作できるよう構成しています。

🟪 Visual Studio
  • Version

    • Visual Studio 2022 Version 17
  • Extension

    • なし
  • Preview Feature

    • Enable line-staging support
  • Git UIの画面名

    • Git Changes
🟦 VS Code
  • Version

    • Visual Studio Code Version 1.70
  • Extension

    • GitLens
    • Git Graph
  • Git UIの画面名

    • SOURCE CONTROL
      • リポジトリ取得後、SOURCE CONTROL REPOSITORIESを表示

所感

  • 共にデフォルトでも高品質なUX
  • 共にリリースノートを見るとGit UIの改善が行われ続けている
  • VS Codeは軽量重視の思想なので、操作や利便性のために拡張機能があるとよりよい

Git UIを開く

変更履歴管理を行うための画面を開きます。

🟪Visual Studio

上部のメニューのViewからGit Changesを選択します。
ショートカットはCtrl + 0 -> Ctrl + Gのコンビネーションです。

VS-Git-UI1

以下の画面がGit Changes画面です。
Repositoryを展開する前はこのような表示となっています。

VS-Git-UI2

🟦VS Code

左部のメニューからSOURCE CONTROLのアイコンを選択します。
ショートカットはCtrl(Cmd) + shift + Gです。

以下の画面がSOURCE CONTROL画面です。
Repositoryを展開する前はこのような表示となっています。

VSC-Git-UI

所感

  • VS Codeの方がUI配置/デフォルトショートカットどちらも直感的で扱いやすい
  • VS Codeの一体感はGitを使うことを前提に作られたデザインだけある(V1.0資料
  • Visual StudioのUIは後発にリリースされたもの。後発だけあって操作性がかなり高い(V16.8リリースノート

Clone - リポジトリのダウンロード

リポジトリをダウンロードし展開します。

Image-Clone

🟪 Visual Studio

VS-Clone

Pick up

クローン

VS-Clone

🟦 VS Code

VSC-Clone

Pick up

クローン

VSC-Clone

所感

  • Visual Studioの方が操作の誘導が明確
  • Visual StudioはPathをキーボード入力した場合そのパスで展開されてしまうので、予め展開したいフォルダを作成しておく必要がある
  • VS CodeSOURCE CONTROL REPOSITORIESは操作性が良いので、リポジトリを展開したタイミングで表示しておく

Branch - ブランチ作成/削除

ブランチを操作します。

Image-Branch

操作としては以下のステップを実施します。

  1. mainブランチからfeatureブランチを作成し、切り替える
  2. mainブランチに切り替え直し、作成したfeatureブランチを削除する
🟪 Visual Studio

VS-Branch

Pick up

ブランチ作成

VS-Branch-Create1

VS-Branch-Create2

ブランチ削除

VS-Branch-Delete

🟦 VS Code

VSC-Branch

Pick up

ブランチ作成

VSC-Branch-Create1

VSC-Branch-Create2

ブランチ削除

VSC-Branch-Delete1

VSC-Branch-Delete2

所感

  • Visual Studioはブランチ操作が洗練されている
  • VS CodeSOURCE CONTROL REPOSITORIESの表示とGit Graphを利用することで操作を迷いにくくなる

Commit - 変更の保存/履歴の確認

変更をブランチに記録します。

Image-Commit

操作としては以下のステップを実施します。

  1. ファイルを変更する
  2. 変更をコミットする
  3. 変更履歴を確認する
🟪 Visual Studio

VS-Commit

Pick up

コミット

VS-Commit-Commit

履歴

VS-Commit-History

🟦 VS Code

VS-Commit

Pick up

コミット

VSC-Commit-Commit

履歴

VSC-Commit-History

所感

  • VS CodeはGit変更として認識させるにはファイルの保存が必要
  • VS Codeで履歴からのコミットの確認する時、ファイル一覧が表示されないのでコミットに関連する別のファイルを見たい時不便
  • Visual Studioの履歴からのコミットの確認で変更情報がかなり詰まった表示になるため、タブボタンを押して全体表示に切り替えるとよい

Pull/Rebase - ローカルに変更を取り込む

チームで作業している場合などで利用します。ローカルに更新をを取り込み、PullRequest前に競合を解決したり履歴が乖離しすぎることを防ぎます。

プル
Image-Pull

リベース
Image-Rebase

操作としては以下のステップを実施します。

  1. リモートに変更のあるブランチに切り替える
  2. プルで履歴を取り込む
  3. 作業中のブランチに切り替える
  4. リベースで変更を作業中ブランチに適応する

状況のわかりやすさのため履歴を表示した状態で操作しています。

🟪 Visual Studio

VS-PullRebase

Pick up

プル

VS-Pull-Pull

リベース

VS-Rebase-Rebase

🟦 VS Code

VSC-PullRebase

Pick up

プル

VSC-Pull-Pull

リベース

VSC-Rebase-Rebase1

VSC-Rebase-Rebase2

所感

  • Visual Studioの画面にある操作アイコンは必要なものだけあり扱いやすい。しかも表示するアイコンをカスタムできる
  • VS Codeはプルをどこで実施するか一見わかりにくい
  • VS CodeGit Graphによってブランチ切り替えからリベース処理がスムーズに可能

Push - ブランチのアップロード

ブランチをアップロードします。

Image-Push

状況のわかりやすさのため履歴を表示した状態で操作しています。

🟪 Visual Studio

VS-Push

Pick up

プッシュ

VS-Push-Push

🟦 VS Code

VSC-Push

Pick up

プッシュ

VSC-Push-Push

所感

  • 共にどちらもワンボタンでプッシュ可能
  • VS Codeはコミットとプッシュのボタンが一体化している。必要なときに必要な操作が自動で選択される

Sync - 変更の同期/競合解決

追加の更新を同期します。競合がある場合には解決のための操作に自動で移行します。

Image-Sync

操作としては以下のステップを実施します。競合の解決も同時に実施します。

  1. 追加のコミットがあるブランチをリモートと同期する。しかし競合により未解決
  2. 競合を解決する
  3. 再度同期する
🟪 Visual Studio

VS-Sync

Pick up

同期

VS-Sync-Sync

競合解決

VS-Sync-ResolveConflicts

🟦 VS Code

VSC-Sync

Pick up

同期

VSC-Sync-Sync

競合解決

VSC-Sync-ResolveConflicts

所感

  • 共にどちらもワンボタンで同期可能
  • VS Codeは追加のコミットがないとSyncできない。変更を取り込むにはPullで行う
  • 競合解決画面の構成はほぼ同じ
  • 変更の取り込まれ方がVisual StudioVS Codeで異なるので、Resultを確認してからマージを確定する

Reset mix - コミットを変更状態に戻す

コミットを変更状態に戻します。コミットした内容に変更を加えたい場合に利用します。

Image-ResetMix

🟪 Visual Studio

VS-ResetMix

Pick up

Reset mix

VS-ResetMix-ResetMix

🟦 VS Code

VSC-ResetMix

Pick up

Reset mix

VSC-ResetMix-ResetMix1

VSC-ResetMix-ResetMix2

所感

  • Visual StudioReset mixによって変更がある場合にその画面を開きっぱなしにしていると緑のバーのUIが表示されない
  • VS CodeAmendSquashをさくっとできないのでReset mixで代用する

Fetch - 自分以外のリモートブランチの取得

自分以外の人がアップロードしたブランチを取得します。

Image-Fetch

🟪 Visual Studio

VS-Fetch

Pick up

フェッチ

VS-Fetch

チェックアウト

VS-Checkout

🟦 VS Code

VSC-Fetch

Pick up

フェッチ

VSC-Fetch

チェックアウト

VSC-Checkout1

VSC-Checkout2

所感

  • Visual Studioはプル同様に操作アイコンで直感的に選択できる
  • VS Codeはフェッチをどこで実施するか一見わかりにくい

まとめ

主要操作とその差異をまとめました。Visual StudioVS CodeどちらのUIも一長一短あって、多少の使い方に違いがありました。

双方、高度に抽象化されていて、直感的にGitが利用できるようデザインされていました。どちらか好みのエディタで一通り操作すれば何日もかからず違和感のない操作できるようになると感じました。

デザインで目を惹いたのはVS Codeの状況に応じて変化するUIです。Visual Studioの操作中に迷わないような工夫もよくできていると感じました。逆に改善の余地もありました。リリースノートをみると、GitのUIの改善は続けられています。Visual StudioVS Code双方の良いところを組み合わせたり、さらなるアイデアの創造によって、今後もっと便利な体験ができると思うと楽しみです。

Discussion