web-dev-qa-db-ja.com

Visual Studio 2015 Gitエラーメッセージ「コミットされていない変更があるため、プル/スイッチできません」

Originからプルするのに苦労しています。私は取得し続けます:

「コミットされていない変更があるためプルできません。プルする前に変更をコミットまたは取り消します。詳細については、出力ウィンドウを参照してください。」

これは、ブランチの切り替えにも適用されます。同様のメッセージが表示されますが、これは常に発生するわけではありません。

Visual Studio 2015 Update 1とVisual Studio Team Services Gitを使用しています。私のマシンには、ローカルのmasterブランチと開発ブランチがあります。 masterに切り替えてからプルを行うたびに、エラーメッセージが表示されます。スタッシュとドロップスタッシュ(コマンドライン)を使用することに頼りましたが、プルを行うために TortoiseGit を使用することもあります。

奇妙なのは、TortoiseGitを使用して(コミットされていないファイルで)復元しようとしても、正常に復元されたことを示していることです(Visual Studioの取り消しを既に試しましたが、何も起こりません)。もう一度引っ張ろうとしても、それは同じ問題です。コミットされていないファイルがそこにあり、時々git statusを実行すると、コミットするものがないと表示されます。

ただ注意:これは、ブランチからmasterに切り替えた後でも発生する可能性があります。この場合、私はそもそも切り替えることができなかったため、コミットされていない変更が存在する可能性はありません。

私はまだGitに慣れていませんが、タスクごとに異なる環境間の切り替えを使用する代わりに1つの環境を使用したいので、これを解決するより良い方法があるかどうかを知りたいです。 Visual Studioからすべてを実行する方が簡単です。私はすでに読んでいます:

VSのTFS/GITはコミットされていない変更があるためマスターに切り替えられません

UPDATE

この問題は行末に関係しているようです。

git diff -Rを実行すると、行末が追加されていることがわかります( "^ M")。これは異なります。 gitattributesの* text=autoを削除し(変更を確認して)、再度コミットして、gitattributesがコミットする必要のある自身の変更を通知しないようにしてください。変更はありません。

53
kwiri

私にとっては、コミットされていない変更や追跡されていないファイルはありませんでしたが、Visual Studio 2015は引き続き警告を表示しました。

  1. Visual Studioでソリューションを閉じ、Visual Studioを終了します。
  2. Git Bash(またはお気に入りのGit UI)を開きます
  3. リポジトリに移動します(またはGit UIでリポジトリを開きます)
  4. git pull(またはGit UIでプルを実行)
  5. マージが発生し(私の場合のように、うまくいけば競合しない)、viが開きます(またはデフォルトのマージ解決ツール)
  6. :wqを押してENTERviを押します(または、オプションでポップアップしたマージツールを落ち着かせます)。
  7. Visual Studio 2015を起動し、プロジェクトを開きます

ソリューションとVisual Studioを閉じて開くように指示することで、より安全な手順を追加しました。これは慎重すぎる可能性があり、リロードで十分かもしれません。この症状はVisual Studio Git統合パーツのバグである可能性があり、将来解決される可能性があります。

59
Csaba Toth

そのディレクトリで開かれたコマンドラインにgit statusと入力します。赤や緑のテキストがある場合は、いくつかのものを変更しており、追加もコミットもされていません。ファイルを元に戻す(git checkout -- <file>を実行)か、追加してコミット(git add --allを実行してからgit commit -m "commit message"を実行)します。その後、ブランチまたはその他の必要な操作をチェックアウトできます。

9
TechnicalTophat

コマンドプロンプトでプロジェクトの作業ディレクトリに移動して、これらのコマンドを試してください。

git add -A
git commit -m "your message"
git fetch Origin master
git pull Origin master
git Push Origin master //To Push to the Git system
8
Dhruv

この問題は通常、ローカルでコミットされていないファイル/変更がある場合に発生しますが、プルアクションに含まれます。

たとえば、ローカルGitリポジトリフォルダーから新しいファイル「test.txt」を直接(Visual Studioの外部で)追加します。このファイルは「未追跡ファイル」オプションにリストされている可能性があるため、変更をコミットしても、このファイルは追跡およびコミットされません。そして、別の人も同じパスで「test.txt」を作成し、コミットしてプッシュします。これで、プルアクションを実行すると、「test.txt」ファイルがプルアクションに含まれ、コミットされていない変更があることを示すエラーメッセージが表示されます。そのため、コミットされていないファイル/変更があるかどうかを確認し、プルする前にそれらをコミットする必要があります。

6

Visual Studio 2017ビルド15.5でこの問題が発生し、チームエクスプローラーSettingsGlobal Settingsおよび「フェッチ中にリモートブランチをプルーニング」および「プル時にローカルブランチをリベース」をに設定True

Team Explorer Git Settings

http://www.codewrecks.com/blog/index.php/2017/12/23/configure-visual-studio-2017-15-5-for-pull-rebase/

また、MSの手順は次のとおりです。 https://docs.Microsoft.com/en-us/Azure/devops/repos/git/git-config?tabs=visual-studio&view=vsts#Prune-remote-branches -during-fetch facepalmの瞬間は、「グローバルレベルでこのオプションをTrueに設定することをお勧めします。」これらのアイテムのデフォルト設定ではありません。

この問題の別の例は、別のビルドサーバーがあり、ソリューションがコンパイラで頻繁にNuGetを更新する場合に発生します。 NuGetパッケージを更新してリポジトリを同期する最初のユーザーには問題はありませんが、同期を実行する前に他の誰かがローカルで更新を試みると、このメッセージがポップアップ表示され、VSはコードのプルまたはプッシュを許可しません。この問題を防ぐには、ローカルで更新を行う前に全員が同期の習慣を身に付ける必要があります。一度遭遇したら、解決するために見つけた最善の方法は、保持する必要があるコミットされていないコードを隠しておくことです( https://marketplace.visualstudio.com/items?itemName=vii.GitStashExtension )リポジトリを現在のヘッドにリセットします。

3
user1431356

これは私のために働いた。私はちょうどプロジェクトディレクトリに行き、何かがあるかどうかを確認しました

git status

次に、を使用してプルを実行しました

git pull

その後、Visual Studio 2015を再起動し、このエラーの原因となったブランチをプルしました。今回は問題ありません。 Visual Studio 2015のバグのようです。新しい変更をプルする前に変更を元に戻すときにのみ発生します。この同じ問題は、Visual Studio 2017には存在しないようです。

1
Rachit Chauhan

これは私でも時々起こります。 Visual Studioを使用している場合は、簡単に方法を明確にする方法があります。

Visual Studio 2013以降の場合、次の手順に従ってください。

  • メニューに移動ToolsNuGet Package ManagerPackage Manager Console.
  • git resetと入力してヒット Enter

それでおしまい。 Gitがリセットされ、リクエストを簡単にプルできるようになります。

VS2015:ツール> Nugetパッケージマネージャー>パッケージマネージャーコンソール。魅力のように働いた。ありがとう。

1
Yagnesh Khamar

私もこの問題を抱えていました。簡単な解決策は、ソリューションでCommitを選択して、コミットされていないファイルを表示することです(またはTeam ExplorerChanges)。

次に、右クリックを使用して各ファイルを元に戻します。以前は、ソリューション全体でndoでテストしましたが、正しく機能しませんでした。それから再び、私はTeam ExplorerSyncPullを使用しましたが、うまくいきました。

1
Elnaz

私が従った手順は次のとおりです。

  1. 出力ウィンドウでコミットされていないファイルのパスを参照します
  2. そのパスに移動し、フォルダーからそのファイルを削除します
  3. Visual Studioのチームエクスプローラーから変更を元に戻し、再度追加します
0
CSharp

Visual StudioOutput Windowを開き、Show output fromSource Control - gitに切り替えます。gitname__は、何がプルを停止するかを知らせます。最も一般的な原因の1つは、もちろん次のようなものです。

The pull would overwrite your local changes to the following 44 files:
    <Here you can probably see a list of 44 files>

これは、remotename__リポジトリの一部ではない44個のファイルがlocalname__リポジトリに追加されたことを意味します。 Git Bashを開き、次のコマンドを実行します。

git add *

これにより、問題が解決するか、次のようなエラーが発生する場合があります。

$ git add *
The following paths are ignored by one of your .gitignore files:
TestResults
Use -f if you really want to add them.

localreproに確実に追加する場合は、git add * -fを使用して追加するか、誤って追加したファイルをremotename__から削除してください。

お役に立てれば。

0
Babak

私にとっては、質問の「更新」が答えでした。リポジトリのルートに.gitattributesファイルを追加し、次のみを含めました。これにより、ファイルがテキストの場合にのみ行末が正規化されます。

*.txt text
*.html text
*.css text
*.js text
# These files are text and should be normalized (Convert crlf => lf)
*.gitattributes text
.gitignore text
*.md texttesting 
0
Josh

私にとって、この問題は「Web.Config」と「web.config」の2つのファイルが原因で発生しました。 Linux/Unixではこれで問題ありませんが、Windowsはそれらの1つしかローカルに保存できません。ファイルを調査するAzure devopsでこれを検出しました。それらの1つを削除し、問題が解決しました。この問題は、どのファイルでも発生する可能性があります。

0
Emil Helldin