18
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2023-03-30

いいねかストックされたものから更新。
いいね貰ったので確認して追記(4/02)
分かった事を追記(24/4/7)
他のPCでコミットする場合を追記(24/4/7)
更に分かったことを追記(25/05/18)

よく分からんという事が多発したので整理しておく。
 困ったときに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

他のPCからコミットする場合

まずgit クローンする。

今回はcmdでGit Cloneしたが、Visual Studio内でクローンするとスムーズだろう
image.png

まだ認証状態にないため、そのままプッシュすると失敗する。

スクリーンショット 2025-03-09 174743.png

クローン直後のソリューションファイル
image.png

Git が安全でない可能性があるとのフラグが設定されているので、このリポジトリは正常に動作していません。

と表示される。

これを解消する必要がある。

認証作業を行う

ブランチの管理から行った。

Git → GitサービスにPushする
image.png

既存のリモートにプッシュする。
image.png

エラー 

Git failed with a fatal error.
warning: safe.directory 'https://github.com/Sheephuman/MutiBingingTest.git' not absolute
warning: safe.directory 'https://github.com/Sheephuman/MutiBingingTest.git' not absolute
fatal: detected dubious ownership in repository at 'C:/TestCode/MutiBingingTest/MutiBingingTest'
'C:/TestCode/MutiBingingTest/MutiBingingTest' is owned by:
BUILTIN/Administrators (S-1-5-32-544)
but the current user is:
SHEEPHUMAN/shinc (S-1-5-21-644057103-3017636638-129231267-1002)
To add an exception for this directory, call:

ローカルリポジトリを信頼済みとしてマークする(25/5 追記)

git config --global --add safe.directory C:/TestCode/MutiBingingTest/MutiBingingTest

今回は以下のようにテストしてみた

test用リポジトリ

image.png

git config --global --add safe.directory C:/TestCode/MutiBingingTest/MutiBingingTest

リポジトリが信頼済みかどうかを確認

git config --global --get-all safe.directory

image.png
リストが表示された(間違えてリモート側のURL入れてた^^;)

git config --global --add safe.directory C:/TestCode/MutiBingingTest/MutiBingingTest 

リモートの管理にリモートリポジトリを追加する(25/05 追記)

image.png

リポジトリのURLを追加する
image.png

以上の手順を踏むことで、赤いチェックマークが消える(認証されていない状態の解消)。

コミット画面にmasterも表示されるようになる
image.png

再現性がないので折り畳み

プッシュに失敗したものがスタッシュされた状態で表示されている(リモートに反映されていない)

選択するとプッシュボタンが有効化するのでクリック。
image.png

別WindowにSign inの画面が表示されるので、Sign in With your broswerをクリック
スクリーンショット 2025-03-09 175106.png

※認証画面が出ない場合は手動でブラウザ認証すればよいようです。既定のブラウザじゃなくても有効にはなる(追記)

ブラウザ画面で認証すれば自動的に未送信のコミット分が反映される

image.png

コミット後、同期(Pull後にpush) をすれば同期が反映される。

自分のリポジトリで反映された際のスクショ

image.png

2回目試行のスクショ(25/05 追記)
image.png

非ログイン状態だと表示がされなかった(反映もされない?)。

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

18
18
4

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
18
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?