LoginSignup
2
5

VisualStudio2022を使用したGitリポジトリの操作方法(詳解)

Last updated at Posted at 2023-03-30

いいねかストックされたものから更新。
いいね貰ったので確認して追記(4/02)
分かった事を追記(24/4/7)

よく分からんという事が多発したので整理しておく。
 困ったときにChatGPTに聞いたらかなり詳細に教えてくれたが、なるべく存在するドキュメントか実際に試した手順に準拠する。

注意点

Localリポジトリはディスクスペース内(PC/端末内)、リモートリポジトリはGitHub内。
無暗にPushやフェッチを行うとGitHub内のCodeが意図せず上書きされてしまったり、Localリポジトリの作業内容が虚無に還ったりする。

差し戻しも可能らしいがまだ再現出来てない。

こっちの方が詳しい

ipentec.com
https://www.ipentec.com/document/visual-studio-2019-git-push-to-remote-repository

Comitする

git → 「コミットまたはスタッシュ」 をクリック
comot.jpg

「全てをコミット(i)」することでコメント付きで変更内容をgithubに送信出来る。
スクリーンショット 2023-11-09 102746.png

pullとpush

Comitを反映させるには事前に 「git」 → 「設定」 からPushを有効にする -force with-lease(E) にチェックを入れる 。

スクリーンショット 2023-11-04 183425.png

自作アプリのgitで検証。ComitやPullでの変更が反映された。
スクリーンショット 2023-11-04 194639.png

ここから

Pull:リモートリポジトリに変更がないかを確認する。
また、Pushする前に必ずPullする事がMicroSoftのドキュメントで推奨されている。Mergeの競合を防ぐことが出来るとのこと。
push:ローカルリポジトリでComitしたものを反映させる 

image.png

これで実際のGitページに反映される(23/11/4 検証)

Visual Studio からリモート ブランチにプッシュする

Visual Studio でバージョン コントロールに Git のフェッチ、プル、プッシュ、同期を使用する

※公式のドキュメント内容が古くてVisualStudio2022のものが反映されてない模様。

フェッチ(Fetch)

 ※公式ドキュメントから転載
 プッシュする前にフェッチしてプルすることが重要
ローカルの変更に組み込む必要があるリモート コミットがあるかどうかが確認される。 あることが確認された場合は、最初にプルしてアップストリーム マージの競合を防ぐ。

Brunchを作成

「ブランチのチェックアウト」でそのブランチに移動する。
これでMasterのCodeを保てる。
image.png

Brunch先へ変更内容をPushする

理由は分からないがそのままpushしても上手くいかない。
PullしてからでないとPushできないらしい。公式ドキュメントに書いてある。

チームエクスプローラーを表示させ
image.png
Git 変更 をクリック
image.png

とりあえず何か内容らしきものを書いておくとよい。
image.png

ここからPushの代わりにComitを行う。
変更されたかを確認するにはgit logコマンドを打てばよい

このあとPull→Pushすると変更内容がリモートリポジトリに反映されるこれが正式な手順
Git Cloneで実際にダウンロードして検証したらComitだけでも反映はされてたけど正式な手順を推奨しておく。

履歴を出す

 git →「コマンドプロンプトで開く」 
git log 
日付は上から降順
image.png

Header情報?
HEAD -> BPMatching_BrunchのようにComit先が分かる。
付いてないものは前回のComitのものである。
差し戻しのときに364b....のようなハッシュ値を使用する。

Brunchを管理する

ここからでもPushが可能だがコメントが付けられるComitの方がいい。内容の確認がしやすい。
image.png

Brunchを変更するにはコンテキストメニューからCheckOutを押せばよい。Brunchの削除も出来る。

conflict(競合)の対処

作業を進めているとプッシュしてもconflictを起こし、反映させる事が出来ないという事がある。

conflictは同じコード行に対し複数の異なる変更が行われた場合に起こる。
以下はChatGPT出力

同じコード行に対する異なる変更が複数のブランチで行われた場合。
一方のブランチで削除されたファイルが、もう一方のブランチで変更されている場合。
ファイル名やフォルダーの変更が異なるブランチで異なる方法で行われている場合。

実際に単独アプリ開発で起こしてしまった事があるので、対処方法を紹介する。

conflictの再現

1.ローカルリポジトリ(Visual Studio)でファイルを編集し、変更をコミット。
2.Visual Studio内でエラーが解消せず、原因不明なので以前のVersionにチェックアウトして書き戻しをした。
3.以前のVersionにチェックアウトに対して変更を行い、コミットした

image.png

競合が発生するとコミット欄に以下の表示が出る

image.png

競合を解決するには入力方向の取得か現在の取得かのいずれかを選択すればよい

image.png

今回は入力方向を取得した。

入力方向が取得され、最新の変更が反映された。
image.png

いいね、ストックが励みになります!

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5