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がコミットする必要のある自身の変更を通知しないようにしてください。変更はありません。
私にとっては、コミットされていない変更や追跡されていないファイルはありませんでしたが、Visual Studio 2015は引き続き警告を表示しました。
Git Bash
(またはお気に入りのGit UI)を開きますgit pull
(またはGit UIでプルを実行)vi
が開きます(またはデフォルトのマージ解決ツール):wq
を押してENTER
でvi
を押します(または、オプションでポップアップしたマージツールを落ち着かせます)。ソリューションとVisual Studioを閉じて開くように指示することで、より安全な手順を追加しました。これは慎重すぎる可能性があり、リロードで十分かもしれません。この症状はVisual Studio Git統合パーツのバグである可能性があり、将来解決される可能性があります。
そのディレクトリで開かれたコマンドラインにgit status
と入力します。赤や緑のテキストがある場合は、いくつかのものを変更しており、追加もコミットもされていません。ファイルを元に戻す(git checkout -- <file>
を実行)か、追加してコミット(git add --all
を実行してからgit commit -m "commit message"
を実行)します。その後、ブランチまたはその他の必要な操作をチェックアウトできます。
コマンドプロンプトでプロジェクトの作業ディレクトリに移動して、これらのコマンドを試してください。
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
この問題は通常、ローカルでコミットされていないファイル/変更がある場合に発生しますが、プルアクションに含まれます。
たとえば、ローカルGitリポジトリフォルダーから新しいファイル「test.txt」を直接(Visual Studioの外部で)追加します。このファイルは「未追跡ファイル」オプションにリストされている可能性があるため、変更をコミットしても、このファイルは追跡およびコミットされません。そして、別の人も同じパスで「test.txt」を作成し、コミットしてプッシュします。これで、プルアクションを実行すると、「test.txt」ファイルがプルアクションに含まれ、コミットされていない変更があることを示すエラーメッセージが表示されます。そのため、コミットされていないファイル/変更があるかどうかを確認し、プルする前にそれらをコミットする必要があります。
Visual Studio 2017ビルド15.5でこの問題が発生し、チームエクスプローラーSettings→Global Settingsおよび「フェッチ中にリモートブランチをプルーニング」および「プル時にローカルブランチをリベース」をに設定True。
また、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 )リポジトリを現在のヘッドにリセットします。
これは私のために働いた。私はちょうどプロジェクトディレクトリに行き、何かがあるかどうかを確認しました
git status
次に、を使用してプルを実行しました
git pull
その後、Visual Studio 2015を再起動し、このエラーの原因となったブランチをプルしました。今回は問題ありません。 Visual Studio 2015のバグのようです。新しい変更をプルする前に変更を元に戻すときにのみ発生します。この同じ問題は、Visual Studio 2017には存在しないようです。
これは私でも時々起こります。 Visual Studioを使用している場合は、簡単に方法を明確にする方法があります。
Visual Studio 2013以降の場合、次の手順に従ってください。
git reset
と入力してヒット Enterそれでおしまい。 Gitがリセットされ、リクエストを簡単にプルできるようになります。
VS2015:ツール> Nugetパッケージマネージャー>パッケージマネージャーコンソール。魅力のように働いた。ありがとう。
私もこの問題を抱えていました。簡単な解決策は、ソリューションでCommitを選択して、コミットされていないファイルを表示することです(またはTeam Explorer→Changes)。
次に、右クリックを使用して各ファイルを元に戻します。以前は、ソリューション全体でndoでテストしましたが、正しく機能しませんでした。それから再び、私はTeam Explorer→Sync→Pullを使用しましたが、うまくいきました。
私が従った手順は次のとおりです。
Visual Studio
でOutput Window
を開き、Show output from
をSource Control - git
に切り替えます。git
name__は、何がプルを停止するかを知らせます。最も一般的な原因の1つは、もちろん次のようなものです。
The pull would overwrite your local changes to the following 44 files:
<Here you can probably see a list of 44 files>
これは、remote
name__リポジトリの一部ではない44個のファイルがlocal
name__リポジトリに追加されたことを意味します。 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.
local
reproに確実に追加する場合は、git add * -f
を使用して追加するか、誤って追加したファイルをremote
name__から削除してください。
お役に立てれば。
私にとっては、質問の「更新」が答えでした。リポジトリのルートに.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
私にとって、この問題は「Web.Config」と「web.config」の2つのファイルが原因で発生しました。 Linux/Unixではこれで問題ありませんが、Windowsはそれらの1つしかローカルに保存できません。ファイルを調査するAzure devopsでこれを検出しました。それらの1つを削除し、問題が解決しました。この問題は、どのファイルでも発生する可能性があります。