Używam szkieletowej aplikacji ZF2 i ma ona plik .gitignore, który zapobiega przekazywaniu bibliotek zewnętrznych do git. Podczas debugowania lubię zmieniać rzeczy tu i tam w źródłach bibliotek, aby dowiedzieć się, jak to działa. Gdyby były one kontrolowane przez wersję, byłoby bardzo łatwo przywrócić je do ich pierwotnego stanu.
Jak zmusić Composera do ponownej instalacji określonego frameworka, aby móc ponownie otrzymać świeżą, niezmodyfikowaną kopię?
PS: Nie sugeruj usuwania pliku .gitignore, ponieważ istnieje z jakiegoś powodu; zapobiega przedostawaniu się bibliotek innych firm do repozytorium mojej aplikacji. Zawsze mogę je zainstalować podczas automatycznego wdrażania.
php
zend-framework2
composer-php
juliański
źródło
źródło
Odpowiedzi:
Możesz użyć
--prefer-source
flagi dla kompozytora, aby pobrać zewnętrzne pakiety z informacjami VCS (jeśli są dostępne). Możesz po prostu powrócić do pierwotnego stanu. Również jeśli wydaszcomposer update
polecenie, kompozytor wykryje wszelkie zmiany, które wprowadziłeś lokalnie i zapyta, czy chcesz je odrzucić.Twój plik .gitignore jest powiązany z Twoim głównym projektem (szkielet ZF2) i uniemożliwia katalogowi dostawcy (gdzie znajdują się biblioteki innych firm) przypisywanie się do Twojego własnego VCS. Plik ignorowania nie jest powiązany z repozytoriami git Twoich dostawców.
źródło
composer status -v
przekazałem mi informacje o zmianach.Po prostu wyczyść folder dostawców
rm -rf vendor/*
źródło
composer clearcache
jest dobrym dodatkiem w takich przypadkach.composer require vendor/package
zrobi to, czego chce PO iw krótszym czasie. Jestem trochę zaskoczony, że tak wielu pozytywnie zagłosowało na tę odpowiedź.Nie chciałem usuwać wszystkich pakietów w
vendor/
katalogu, więc oto jak to zrobiłem:rm -rf vendor/package-i-messed-up
composer install
jeszcze razźródło
composer clearcache
najpierw na wypadek, gdyby pamięć podręczna została z jakiegoś powodu uszkodzona.Co ja zrobiłem:
composer update --prefer-source vendor/library-name
Ponownie pobiera bibliotekę wraz z repozytorium git
źródło
composer clearcache
najpierw na wypadek, gdyby pamięć podręczna została z jakiegoś powodu uszkodzona.Zainstaluj ponownie zależności. Usuń folder dostawcy (ręcznie) lub za pomocą polecenia rm (jeśli jesteś w folderze projektu, oczywiście) w systemie Linux przed:
https://www.dev-metal.com/composer-problems-try-full-reset/
źródło
Jak zauważył użytkownik @aaracrr w komentarzu do innej odpowiedzi, prawdopodobnie najlepszą odpowiedzią jest ponowne zażądanie pakietu z tym samym ograniczeniem wersji.
to znaczy.
composer require vendor/package
lub określając ograniczenie wersji
composer require vendor/package:^1.0.0
źródło
Z jakiegoś powodu nikt nie zasugerował oczywistego i najprostszego sposobu wymuszenia ponownej instalacji:
źródło