Cum pot ignora următorul mesaj de eroare pe Git pull?
local modificări la fișierele următoare ar fi suprascrise de îmbinare
Ce dacă am *vrea *** pentru a le suprascrie?
Am'am încercat lucruri de genul git pull-f
, dar nimic nu funcționează.
Să fie clar, vreau doar să suprascrie modificările specifice, nu totul.
Dacă doriți elimina toate modificările locale din copia de lucru, pur și simplu a le ascunde:
git stash save --keep-index
Dacă tu nu't nevoie de ele, acum puteți picătură marfa:
git stash drop
Dacă doriți să suprascrieți numai anumite părți ale modificări locale, există două posibilități:
Comite tot ce nu't doriți să suprascrieți și de a folosi metoda de mai sus de restul.
Folosesc git checkout path/to/file/de/revenire pentru modificările pe care doriți să suprascrieți. Asigurați-vă că fișierul nu este pus în scenă prin intermediul git reset CAP path/to/file/de/revenire
.
Puteți fie să se angajeze modificările înainte de a face fuziunea, sau ascunde-le:
Dacă doriți să renunțați la modificările locale pe un fișier, puteți face următoarele:
git checkout -- <file>
Atunci ai putea suprascrie fișierul[s] cu cea mai recentă versiune fac doar:
git pull
Uneori, nici una dintre aceste muncă. Enervant, din cauza LF lucru la care mă gândesc, ce va lucra este deleting fișierele, then trăgând. Nu că aș recomanda această soluție, dar dacă fișierul nu't există, git câștigat't inutil de a vă informa că modificările (care nu poate fi chiar modificări) vor fi înlocuite, și vă va permite să continuați.
Utilizați pe propriul risc.
În ultimii Git, puteți adăuga -r
/--rebazare
pe "pull" comandă pentru a rebazare ta ramură de curent pe partea de sus din amonte de ramură după preluarea. Avertismentul ar trebui să dispară, dar există un risc pe care le'll obține unele conflicte care'll nevoie pentru a rezolva.
Alternativ, puteți checkout altă ramură cu forța, apoi du-te înapoi la "maestru" din nou, de exemplu:
git checkout origin/master -f
git checkout master -f
Apoi trageți-l din nou, ca de obicei:
git pull origin master
Folosind această metodă, puteți economisi timp de ascunzindu (git stash
) și potențiale probleme de permisiune, resetarea fișiere (git reset CAP ... greu
), eliminarea fișierelor (git curat -fd
), etc. De asemenea, cele de mai sus se's ușor să vă amintiți.
Această problemă este pentru că ai făcut schimbări la nivel local pentru fișier/s și același fișier/s există cu modificări în depozit Git, deci, înainte de a trage/împinge veți avea nevoie de marfa modificări locale:
Pentru a suprascrie modificările locale de un singur fișier:
git reset file/to/overwrite
git checkout file/to/overwrite
Pentru a suprascrie toate modificările locale (schimbări în toate fișierele):
git stash
git pull
git stash pop
De asemenea, această problemă poate fi, deoarece sunteți pe o ramură care nu este fuzionat cu ramura de master.
git reset-hard && git curat-df
Atenție: Acest lucru va reseta și a șterge orice untracked fișiere.
Aici este strategia mea de a rezolva problema.
Formularea Problemei
Avem nevoie de a face modificări în mai mult de 10 de fișiere. Am încercat `TRAGE (git pull origine master), dar Git strigat:
eroare: local modificări la fișierele următoare ar fi suprascrise de îmbinare: te Rog, comite modificările sau ascunde-le înainte de a putea îmbinare.
Am încercat să execut comit
și apoi "trage", dar n-au't de lucru, fie.
Soluție
Am fost în murdar etapa de fapt, pentru că dosarele au fost în "Zona" un.k.un "Indice Zona" și unii au fost în "Zona Capului" un.k.un "locale Git director de". Și am vrut să trag modificările la server.
Verificați acest link pentru informații despre diferite etape de Git într-un mod clar: GIT Etape
Am urmat pașii următori
git marfa se aplică
(Aplicate toate modificările din stivă)git commit -m 'mesaj'
(Comis modificări)git marfa drop
(Drop stiva)Să's a înțelege când și de ce ai nevoie de ascunzindu
Dacă sunteți în murdar de stat, înseamnă că fac modificări în fișiere și atunci ești obligat, din orice motiv, să trage sau întrerupător la o altă ramură de ceva foarte urgent de lucru, astfel încât în acest moment se poate't a trage sau a comuta până comite schimba. De marfa
comanda este aici o mână de ajutor.
Din cartea ProGIT, Ediția a 2-a:
de multe ori, atunci când ați fost de lucru pe o parte a proiectului, lucrurile sunt în
- o stare murdar și doriți să comutați ramuri pentru un pic de a lucra pe altceva. Problema este că tu nu vrei să faci un comite de jumătate-lucrat doar astfel încât să puteți obține înapoi la acest punct mai târziu. La răspunsul la această problemă este de git stash de comandă. Ascunzindu ia murdar de stat din directorul de lucru – care este, modificat senile fișiere și pus în scenă de schimbări – și salvează-l pe un teanc de neterminat modificările pe care le poate candida din nou în orice moment.
Dacă doriți să suprascrie modificările specifice, ai nevoie de o modalitate de a spune care dintre ele vrei să uiți.
Ai putea încerca selectiv ascunzindu modificările pe care doriți să-și abandoneze utilizarea git ascunse --patch-uri și apoi scăzând marfa cu
git marfa drop`. Apoi, puteți trage de la distanță schimbări și a le îmbina în mod normal.
Dacă doriți să păstrați modificările din procesul de producție pe server, doar pentru a intra într-un nou element de configurare. Metoda de prelucrare este după cum urmează:
git stash
git pull
git stash pop
Poate că don't să execute toate operațiunile. Poți să știi ce poți face în continuare.
Eroare "locale modificări la fișierele următoare ar fi suprascrise de unificare" vine pentru că au unele schimbări în repo locală, care NU au fost comise încă, așa că înainte de a trage de la distanță repo doar comite modificările locale repo.
Vă permite să spun de la distanță repo are unele ramură xyz și tu vrei asta de la distanță repo xyz ramură să fie comasate în (copiate) locale repo xyz filiala apoi,
{
git checkout xyz //check out to the respective branch in local repo
git commit -m "commiting message" //commit changes if any, in local repo branch xyz
git pull //it pulls remote xyz branch into local xyz branch
}