ソース管理 FAQ
このトピックでは、Visual Studio Code での Git ソース管理および GitHub の使用に関するよくある質問に回答します。
Git
Git コミットを元に戻す、または取り消すにはどうすればよいですか?
直前のコミットを取り消すには、Git: Undo Last Commit (直前のコミットを取り消す) コマンドを使用します。これにより、コミットを行う直前の状態にブランチがリセットされ、すべての変更が保持されます。このコマンドは、ソース管理ビュー上部の Commit (コミット) にある More Actions (その他の操作) ... メニューからも利用できます。
ローカルブランチの名前を変更するにはどうすればよいですか?
Git: Rename Branch… (ブランチの名前を変更...) コマンドを実行すると、新しい名前の入力を求められます。
コミット前に git add を取り消すにはどうすればよいですか?
Staged Changes (ステージされた変更) にリストされている追加済みのファイルは、- アイコンをクリックするか、ドラッグ&ドロップすることでステージを解除できます。
最新のコミットメッセージを編集するにはどうすればよいですか?
ローカルでの最後のコミットのメッセージを更新するには、Git: Commit Staged (Amend) (ステージ済みの変更をコミット (修正)) コマンドを使用します。エディターが開き、最後のメッセージを編集して保存できます。このとき、他の変更がステージされていないことを確認してください。ステージされていると、それらも一緒にコミットされてしまいます。
リポジトリを初期化しましたが、... メニューのアクションがすべてグレーアウトしています
Push (プッシュ)、Pull (プル)、Sync (同期) を行うには、Git の origin を設定する必要があります。必要な URL はリポジトリのホストから取得できます。その URL を取得したら、コマンドライン操作をいくつか実行して Git 設定に追加する必要があります。例:
> git remote add origin https://github.com/<repo owner>/<repo name>.git
> git push -u origin main
チームが Git ではなく Team Foundation Version Control (TFVC) を使用している場合はどうすればよいですか?
Azure Repos 拡張機能を使用すると、TFVC サポートが有効になります。
Pull、Push、Sync のアクションがいつまでも完了しないのはなぜですか?
これは通常、Git で資格情報管理が構成されておらず、何らかの理由で資格情報の入力を求めるプロンプトが表示されていないことを意味します。
VS Code が毎回資格情報を要求しないように、資格情報ヘルパー (credential helper) を常に設定しておくことができます。
多要素認証が必要な Azure DevOps 組織で Git にサインインするにはどうすればよいですか?
Git Credential Manager (GCM) は、Windows、macOS、Linux で推奨される Git 資格情報ヘルパーです。Git for Windows を実行している場合、GCM はすでにインストールおよび構成されています。macOS または Linux で実行している場合は、GCM の README にセットアップ手順が記載されています。
GitHub Desktop をコンピューターにインストールしていますが、VS Code がそれを認識しません
VS Code の Git 統合は、公式の Git ディストリビューションのみをサポートしています。
VS Code を実行していると、Git 認証ダイアログが何度も表示されます
VS Code は、受信した変更の概要を表示するために、サーバーから変更を自動的にフェッチします。Git 認証ダイアログは VS Code 自体とは独立しており、お使いの Git 資格情報ヘルパーの一部です。
これらのプロンプトを回避する一つの方法は、資格情報を記憶する 資格情報ヘルパー を設定することです。
もう一つの選択肢は、次の設定を変更して自動フェッチ機能を無効にすることです: "git.autofetch": false。
Git リポジトリが「潜在的に安全でない」という警告が VS Code から表示されるのはなぜですか?
VS Code はすべての Git 操作の実行に git.exe を使用します。Git 2.35.2 以降、リポジトリが現在のユーザー以外の所有者であるフォルダー内にある場合、そのリポジトリは潜在的に安全でないと見なされ、Git 操作の実行が禁止されるようになりました。
そのようなリポジトリを開こうとすると、VS Code はソース管理ビューにウェルカムビューを表示するか、エラー通知を出します。ウェルカムビューと通知の両方に Manage Unsafe Repositories (安全でないリポジトリの管理) コマンドが含まれており、これを使って潜在的に安全でないリポジトリのリストを確認し、安全としてマークして開くことができます。Manage Unsafe Repositories コマンドは、コマンドパレット (⇧⌘P (Windows, Linux Ctrl+Shift+P)) からも利用可能です。リポジトリを安全としてマークすると、そのリポジトリの場所が safe.directory git 設定に追加されます。
Windows では、リポジトリが「管理者として実行」されているアプリケーション (Windows Terminal や VS Code など) を使用してクローンされたものの、リポジトリが「管理者として実行」されていない別のアプリケーションやインスタンス (VS Code など) を使用して開かれた場合に、この問題がよく発生します。
ワークスペースや開いているファイルの親フォルダーにある Git リポジトリが VS Code で検出されないのはなぜですか?
VS Code は git rev-parse --show-toplevel を使用して Git リポジトリのルートを特定します。多くの場合、Git リポジトリのルートはワークスペース内にありますが、ワークスペースや開いているファイルの親フォルダーにルートがある場合もあります。親フォルダー内の Git リポジトリを開く機能は上級ユーザーにとっては素晴らしい機能ですが、初心者には混乱を招く可能性があります。この混乱により、これらの Git リポジトリからの変更が破棄され、データ損失につながった事例が確認されています。
混乱を避け、データ損失のリスクを減らすため、VS Code は通知を表示し、ソース管理ビューに新しいウェルカムビューを表示します。また、ワークスペースや開いているファイルの親フォルダーから Git リポジトリを自動的に開くことはありません。
親フォルダー内の Git リポジトリをどのように扱うかは、 git.openRepositoryInParentFolders 設定で制御できます。以前の動作に戻したい場合は、 git.openRepositoryInParentFolders 設定を always にしてください。
VS Code で SSH Git 認証を使用できますか?
はい、可能ですが、パスフレーズなしの SSH キーを使用するのが最も簡単です。パスフレーズ付きの SSH キーを使用している場合は、SSH 環境を継承するために、Git Bash プロンプトから VS Code を起動する必要があります。
GitHub
GitHub Enterprise はサポートされていますか?
VS Code は GitHub Enterprise Server との認証を公式にサポートしています。GHES リポジトリのローカルチェックアウトを開くと、GitHub Enterprise Server アカウントでサインインするように求められます。
トラブルシューティング
Git に関する問題の診断と解決については、トラブルシューティングガイドを参照してください。このガイドでは、Git 出力ログの使用方法や、詳細な診断情報を取得するためのトレースログの有効化について解説しています。