いいねかストックされたものから更新。
いいね貰ったので確認して追記(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する
「全てをコミット(i)」することでコメント付きで変更内容をgithubに送信出来る。
pullとpush
Comitを反映させるには事前に 「git」 → 「設定」 からPushを有効にする -force with-lease(E)
にチェックを入れる 。
自作アプリのgitで検証。ComitやPullでの変更が反映された。
ここから
Pull:リモートリポジトリに変更がないかを確認する。
また、Pushする前に必ずPullする事がMicroSoftのドキュメントで推奨されている。Mergeの競合を防ぐことが出来るとのこと。
push:ローカルリポジトリでComitしたものを反映させる
これで実際のGitページに反映される(23/11/4 検証)
Visual Studio からリモート ブランチにプッシュする
Visual Studio でバージョン コントロールに Git のフェッチ、プル、プッシュ、同期を使用する
※公式のドキュメント内容が古くてVisualStudio2022のものが反映されてない模様。
フェッチ(Fetch)
※公式ドキュメントから転載
プッシュする前にフェッチしてプルすることが重要
ローカルの変更に組み込む必要があるリモート コミットがあるかどうかが確認される。 あることが確認された場合は、最初にプルしてアップストリーム マージの競合を防ぐ。
Brunchを作成
「ブランチのチェックアウト」でそのブランチに移動する。
これでMasterのCodeを保てる。
Brunch先へ変更内容をPushする
理由は分からないがそのままpushしても上手くいかない。
PullしてからでないとPushできないらしい。公式ドキュメントに書いてある。
ここからPushの代わりにComitを行う。
変更されたかを確認するにはgit log
コマンドを打てばよい
このあとPull→Pushすると変更内容がリモートリポジトリに反映されるこれが正式な手順。
Git Cloneで実際にダウンロードして検証したらComitだけでも反映はされてたけど正式な手順を推奨しておく。
履歴を出す
git →「コマンドプロンプトで開く」
git log
日付は上から降順
Header情報?
HEAD -> BPMatching_Brunch
のようにComit先が分かる。
付いてないものは前回のComitのものである。
差し戻しのときに364b....のようなハッシュ値を使用する。
Brunchを管理する
ここからでもPushが可能だがコメントが付けられるComitの方がいい。内容の確認がしやすい。
Brunchを変更するにはコンテキストメニューからCheckOutを押せばよい。Brunchの削除も出来る。
conflict(競合)の対処
参考リンク
作業を進めているとプッシュしてもconflictを起こし、反映させる事が出来ないという事がある。
conflictは同じコード行に対し複数の異なる変更が行われた場合に起こる。
以下はChatGPT出力
同じコード行に対する異なる変更が複数のブランチで行われた場合。
一方のブランチで削除されたファイルが、もう一方のブランチで変更されている場合。
ファイル名やフォルダーの変更が異なるブランチで異なる方法で行われている場合。
実際に単独アプリ開発で起こしてしまった事があるので、対処方法を紹介する。
conflictの再現
1.ローカルリポジトリ(Visual Studio)でファイルを編集し、変更をコミット。
2.Visual Studio内でエラーが解消せず、原因不明なので以前のVersionにチェックアウトして書き戻しをした。
3.以前のVersionにチェックアウトに対して変更を行い、コミットした
競合が発生するとコミット欄に以下の表示が出る
競合を解決するには入力方向の取得か現在の取得かのいずれかを選択すればよい
今回は入力方向を取得した。
他のPCからコミットする場合
まずgit クローンする。
今回はcmdでGit Cloneしたが、Visual Studio内でクローンするとスムーズだろう
まだ認証状態にないため、そのままプッシュすると失敗する。
Git が安全でない可能性があるとのフラグが設定されているので、このリポジトリは正常に動作していません。
と表示される。
これを解消する必要がある。
認証作業を行う
ブランチの管理
から行った。
エラー
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用リポジトリ
git config --global --add safe.directory C:/TestCode/MutiBingingTest/MutiBingingTest
リポジトリが信頼済みかどうかを確認
git config --global --get-all safe.directory
リストが表示された(間違えてリモート側のURL入れてた^^;)
git config --global --add safe.directory C:/TestCode/MutiBingingTest/MutiBingingTest
リモートの管理
にリモートリポジトリを追加する(25/05 追記)
以上の手順を踏むことで、赤いチェックマークが消える(認証されていない状態の解消)。
再現性がないので折り畳み
プッシュに失敗したものがスタッシュされた状態で表示されている(リモートに反映されていない)
別WindowにSign inの画面が表示されるので、Sign in With your broswer
をクリック
※認証画面が出ない場合は手動でブラウザ認証すればよいようです。既定のブラウザ
じゃなくても有効にはなる(追記)
ブラウザ画面で認証すれば自動的に未送信のコミット分が反映される
コミット後、同期(Pull後にpush) をすれば同期が反映される。
自分のリポジトリで反映された際のスクショ
非ログイン状態だと表示がされなかった(反映もされない?)。
いいね、ストックが励みになります!