Azure DevOpsとVSCodeでGitの基本操作をやってみる

Azure DevOps

前回、Azure DevOpsとVSCodeでGitの環境を導入したので、実際にいろいろGitの基本操作をやってみる。VSCodeには事前にいくつかのプラグインを導入している。なくても問題ないが、あると見通しが良くなるので、導入をおすすめ。他に有用なプラグインはここの記事を参照。

  • Git History 0.6.9
  • Git Lens 10.2.2
  • Japanese Language Pack for Visual Studio Code 1.48.1
  • Prettier 5.1.3
  • vscode-icons 10.2.0

ローカルブランチの作成

リポジトリの運用方法にもよるが、masterブランチに直接、変更を加えていくことは推奨されない。したがって、ローカルPCにクローンしたmasterブランチから、さらにローカルブランチを作成する必要がある。VSCodeの場合、以下からローカルブランチの作成ができる。

ローカルブランチが作成できると、ブランチ名(今回はlocal-branchという名前で作った)が変わっていることが確認できる。

ローカルブランチの変更

先ほど作成したローカルブランチに変更を加える。VSCodeのエクスプローラーのコンテキストメニューから新しいファイルを追加してみる。

追加したファイルに「U」という表記がついているが、これはuntracked(追跡対象外)の頭文字であり、このままの状態ではバージョン管理対象の変更になっていないことを意味する。バージョン管理対象の変更とするためには、以下からステージングを行えばよい。

ステージングをしただけでは、ローカルブランチに変更は反映されない。反映するためには、ローカルブランチに対してコミットを行う必要がある。以下から適切なメッセージとともにコミットを実施する。

ちなみにコミット時にGitの初期設定をしておかないと、以下のようなエラーメッセージが出て失敗する。Git初心者の私はやってしまった。。Gitの初期設定についてはこの記事が参考になる。

コミットができたら、変更履歴をGit Historyから確認してみる。Git Historyは以下から参照できる。

先ほどコミットしたローカルブランチはAzure DevOpsのリモートリポジトリには存在しない。したがって、リポジトリの状態をローカルとリモート間で同期(プッシュ)しておく必要がある。リポジトリの同期は以下から実施できる。

同期すると、Azure DevOpsのGitに先ほどのローカルブランチが追加されている。

リモートリポジトリへのマージ

これでローカルブランチの変更はできた。次は、この変更をリモートリポジトリのmasterブランチに反映させることだ。そのためには、プルリクエストを行う。プルリクエストはAzure DevOps上の以下から実行できる。

Create a pull requestを実行すると、プルリクエストの作成画面に遷移する。

変更をマージしたいブランチの指定、変更の内容説明、変更内容のレビュアー、workItemとして管理しているならば、そのリンク指定などを設定して、Createを実施する。上記の設定は、運用方法にもよるので一概にこうすべきというものはないが、複数人で開発を行う場合は、レビュアーやworkItemなどはしっかり設定しておくべきだと思う。ひとりで趣味で開発する分にはいらないと思う。その場合は、そもそもこんなブランチを切る必要もないけど。Createすると以下の画面に遷移する

プルリクエストが承認(approved)されたら、最後にマージを実施する。Merge Typeは4種類(Merge(no fast forward), Squash commit, Rebase and fast-forward, Semi-linear merge)あるが、変更履歴がすっきり見えやすいSquash commitがいい気がする。それぞれのマージのイメージはアニメーションで表示されるので、それを参考にイメージしてみるとよい。Post-completion oprionsは書いてある通りなので、必要に応じてチェック。

マージを実施すると、リモートリポジトリのmasterブランチに変更が反映されていることが確認できる。

このリモートリポジトリのmasterブランチと同期することによって、ローカルのmasterブランチも更新されることが確認できる。

今回はマージ時にマージ元のリモートブランチ(local-branch)を削除したが、VSCode上では残っているので、これも消しておく。消すためには、ターミナルからgit fetch –pruneを実行する。コマンドめんどいし、もっと簡単な方法はないのかな。。

これで基本的なところは一通りできたと思う。いろいろ試していく中でまた何か詰まったら備忘録として残そうと思う。

コメント