Git コマンドとUI操作(Visual Studio 2022)


1.はじめに

バージョン管理システムとして Git というソフトが存在します。Git コマンドを使用することができるわけですが、コードを書いていく上ではエディター又は統合開発環境とともに使用します。
今回は良く使うコマンドとそれに対応する操作を Visual Studioでどのように実現するかメモしていきたいと思います。
メモ書き程度なので参考になれば幸いです。
Git Hub でリモート管理することを前提にしています。

<環境>
-Git : インストール済
-Visual Studio 2022 Community: インストール済
-Windows 10
Git Hub を使用する場合は認証が必要

参照URL

2.Git 管理の始まり

1)既に作成済のプロジェクトについてGit管理を始める場合

対応コマンド: git init , git remote add, git push が対応

ローカルでGit管理を始めるとともに、Git Hub にもリポジトリを作成し、そちらにpushすることができます。
Git 管理の対象外のファイルを指定する.gitignore ファイルも規定値で作成することができますので、適宜内容を決めてください。

「Git」をクリック

最後「作成とプッシュ」を押すことで Git Hub にリポジトリが作成されます。

「Git リポジトリの作成」をクリック後の画面

2)Git Hub からリポジトリをコピー(クローン)する場合

対応コマンド:git clone

Visual Studio 2022 起動時

Git Hub の対象リポジトリのURLを記入し、ローカル環境の保存先を指定し、「クローン」をクリックすることでクローンを実施することができます。

「リポジトリのクローン」

3.ローカルでのGit管理

1)ブランチの確認と作成

対応コマンド:git branch

ブランチは履歴の流れを別々に記録していくためのもので、様々な開発者が別々に機能を開発するのに有効です。
現在のブランチはUI下側の以下の赤枠で確認できます。

現在のブランチ:master

ブランチを作成する際には、「Git」=>「新しいブランチ」をクリックします。

「Git」=>「新しいブランチ」

ブランチ名を入力し、作成後そのブランチに移行する際には「ブランチのチェックアウト」にチェックが入っていることを確認して、「作成」をクリックします。

「新しいブランチの作成」画面

2)インデックスエリアへの登録

対応コマンド:git add

色々なファイルを変更をした後、変更として登録したいファイルをインデックスエリアに登録(ステージング)します。
まずソリューションエクスプローラーの「Git 変更」というタブをクリックします。

ソリューションエクスプローラー画面

その後、変更したファイルについて+マークを押すことでステージングすることができます。
あくまで変更対象としたい状態のファイルをインデックスエリアに登録しただけなので、まだバージョンとして登録されていないことに留意してください。

ステージング

3)バージョンとして登録(コミット)

対応コマンド:git commit

2)の画面でメッセージを書いて「ステージング済をコミット」をクリックすることで、バージョンとして登録されます。

コミット

4.リモート環境(Git Hub)とのやりとり

AさんとBさんで開発している場合、先にAさんが開発してリモート環境に反映していることがあります。
そのため自分の変更をリモート環境に反映する前に、現在のリモート環境の変更を取り込んでからリモート環境に反映する必要が出ることがあります。
そこで以下の流れでリモート環境への反映までを行う想定にしたいと思います。

1) リモート環境の変更の取り込み「ローカルのmasterブランチに」
2) 開発が終わった feature ブランチと master ブランチを統合
3) 食い違う部分が発生し、修正するケース
4) リモートへの反映

1)リモート環境の変更の取り込み

※リモート環境を取り込むときにrebaseという設定をする場合の設定画面

「Git」=>「設定」で開くオプション画面

ローカルのmasterブランチに Git Hub の master ブランチを取り込むためには以下の操作を実施します。
①赤枠の箇所をクリックして「master」ブランチに移動
➁赤枠のプルボタンをクリックします。
対応コマンド:git pull

git pull 実行

2)開発が終わった feature ブランチと master ブランチを統合

「Git」をクリックして、「ブランチの管理」をクリックします。

「Git」画面

feature ブランチをクリックして、 「master を feature にマージする」を選択してください。食い違う部分が無ければマージが成功します。
対応コマンド: git merge

ブランチの管理画面

3)食い違う部分が発生し(conflict)、修正するケース

同じファイルを触っている場合にはコンフリクト(競合)が発生することがあります。

競合発生画面

この場合、「競合を解決」の部分をクリックすると以下の画面が開きます。

競合を解決をクリックした後

更に「マージエディターを開く」をクリックします。
すると以下のような画面が開きますので「受信」と「現在」を比較して、「結果」画面を修正します。
修正が完了したら、「マージの許可」をクリックします。

マージエディター画面

その後、「ステージング済みをコミット」することで、競合を解決したコミットが作成されます。

競合解決後のコミット

4) リモートへの反映

対応コマンド:git push

赤枠の「プッシュ」をクリックすることでリモート環境に反映することができます。

git push

今回は feature ブランチをプッシュしているので、Git Hub 上で「pull request」を実施し、レビュー後マージされる流れになります。

5.コミットログ

1)コミットをまとめる

対応コマンド:git rebase=>squash

細かくコミットしていてリモートにプッシュする前にコミットログをまとめたいときに使用できます。
ただ実施した場合は1つ前のコミットログに戻る等の微調整はできなくなるので注意してください。
「Git」から「ブランチ履歴の表示」をクリックします。

「Git」画面

現在いるブランチのコミットログが表示されるので、まとめたいコミットログを Ctrl を押しながら、左クリックで選択します。
その後右クリックを押し、「コミットのスカッシュ」をクリックします。

コミットログの選択

選択したコミットのメッセージが表示されるので、そのままで良ければそのままで、変更したい場合は変更して、「スカッシュ」をクリックします。
するとコミットがまとめられます。

スカッシュメッセージ

2)過去に戻る

対応コマンド:git reset

「Git」から「ブランチ履歴の表示」までは1)と同じです。
その後戻りたいコミットログを左クリックし、右クリックを押し、「リセット」を選択します。
戻る前までのファイル変更が要らない場合は「--hard」をクリックします。

git reset --hard を実行する場合

ログを残したい場合は上記画面の「元に戻す」をクリックすることで、 git revert コマンドと同じになります。 
ここまでの変更ログを残したうえで、前の状態に戻りたい場合は git revert の方がよいことがあります。

6.Git関連のお勧めの書籍

項目は多いのですが、その分しっかりとGitコマンドに関して知ることができたのでお勧めです。

以上、皆様の開発の参考になれば幸いです。


この記事が気に入ったらサポートをしてみませんか?