.gitignore i „Następujące nieśledzone pliki drzewa roboczego zostaną nadpisane przez kasę”

826

Więc dodałem folder do mojego pliku .gitignore.

Kiedy to zrobię git status, mówi mi to

# On branch latest
nothing to commit (working directory clean)

Jednak gdy próbuję zmienić gałęzie, otrzymuję następujące informacje:

My-MacBook-Pro:webapp marcamillion$ git checkout develop
error: The following untracked working tree files would be overwritten by checkout:
    public/system/images/9/thumb/red-stripe.jpg
    public/system/images/9/original/red-stripe.jpg
    public/system/images/8/thumb/red-stripe-red.jpg
    public/system/images/8/original/red-stripe-red.jpg
    public/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpg
    public/system/images/7/thumb/red-stripe-dark.jpg
    public/system/images/7/original/red-stripe-dark.jpg
    public/system/images/7/original/DSC07833.JPG
    public/system/images/6/thumb/red-stripe-bw.jpg
    public/system/images/6/original/website-logo.png
    public/system/images/6/original/red-stripe-bw.jpg
    public/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/5/original/logocompv-colored-squares-100px.png
    public/system/images/5/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/4/thumb/DSC_0001.JPG
    public/system/images/4/original/logo.png
    public/system/images/4/original/DSC_0001.JPG
    public/system/images/4/original/2-up.jpg
    public/system/images/3/thumb/logo2.gif
    public/system/images/3/original/logo2.gif
    public/system/images/3/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/3/original/11002000962.jpg
    public/system/images/2/thumb/Profile Pic.jpg
    public/system/images/2/original/Profile Pic.jpg
    public/system/images/2/original/02 Login Screen.jpg
    public/system/images/1/original/Argentina-2010-World-Cup.jpg
Please move or remove them before you can switch branches.
Aborting

Tak wygląda mój plik .gitignore:

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*

Jak mogę to uruchomić, aby móc przełączać gałęzie bez usuwania tych plików?

Jeśli dokonam zmiany, czy wpłynie to na te pliki? Innymi słowy, jeśli później wrócę do tej gałęzi, czy wszystko będzie idealnie jak do mojego ostatniego zatwierdzenia?

Nie chcę stracić tych plików, po prostu nie chcę ich śledzić.

marcamillion
źródło
10
jeśli naprawdę nie przejmujesz się tymi plikami: git checkout -f <odgałęzienie> w moim przypadku pliki są generowane w procesie kompilacji, więc nie obchodzi mnie to mniej więcej
Hobbamok
Czasami zdarza się, jeśli wykonasz „git checkout” (bez nazwy oddziału). Aby to naprawić, zrób „git checkout branchname”
crafter
Oddzielne, ale krytycznie powiązane pytanie: dlaczego w ogóle występuje ten błąd? dlaczego git nie może po prostu przełączać się między gałęziami?
ahnbizcad
@ahnbizcad Ponieważ jeśli pracujesz nad nowym plikiem, a ktoś w innym oddziale akceptuje plik o tej samej nazwie, byłbyś wkurzony, gdyby git zniszczył twoją wersję po zmianie gałęzi. Właśnie dlatego istnieje flaga -f.
Matthew Sharp

Odpowiedzi:

263

Wygląda na to, że chcesz zignorować pliki, ale zostały już zatwierdzone. .gitignore nie ma wpływu na pliki, które są już w repozytorium, więc należy je usunąć za pomocą git rm --cached. --cachedBędzie zapobiec konieczności żadnego wpływu na swojej kopii roboczej i będzie to tylko oznaczyć jako usunięte podczas następnego zatwierdzenia. Po usunięciu plików z repozytorium .gitignore uniemożliwi ich ponowne dodanie.

Ale masz inny problem z .gitignore, nadmiernie używasz symboli wieloznacznych i powoduje to, że pasuje mniej, niż się spodziewasz. Zamiast tego zmieńmy .gitignore i spróbuj tego.

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/
public/system/images/
public/system/avatars/
Arrowmaster
źródło
2
Dzięki .... Usunąłem wszystkie pliki z bieżącego oddziału i utworzyłem ich kopię zapasową. Następnie zmieniłem gałęzie i odłożyłem je z powrotem. To się udało. Ponadto dziękuję za wskazówkę dotyczącą
.gitignore
@marcamillion: Co rozumiesz przez „to działało”? Jeśli pliki były śledzone w gałęzi, do której się przełączyłeś, nadpisałeś je swoimi wersjami, które mogą być inne ...
Cascabel
1
Miałem problem z folderem / build, który nie wymaga śledzenia. Więc usunąłem folder lokalny, zatwierdziłem mój plik .gitignore, a następnie sprawdziłem inny oddział. To w końcu zadziałało dla mnie.
Mike S.
16
Myślę, że pierwsza część dotyczy odwrotności tego konkretnego komunikatu o błędzie. Ten błąd oznacza, że ​​użytkownik jest obecnie w oddziale, w którym nie ma śledzonych plików JPG, a użytkownik próbuje przejść do takiego, który to robi. W ten sposób git rm --cachednie zrobi to różnicy, te pliki nie istnieją w bieżącej gałęzi. W przypadku tego błędu uważam, że zamiast tego użytkownik musi postępować zgodnie z odpowiedzią @Greg Hewgill - „przenieś je z kopii roboczej, przełącz gałęzie i cofnij”.
studgeek
4
W jaki sposób jeden przejść o rozwiązaniu your files would be overwrittenze fatal: pathspec 'test/node_modules' did not match any fileskiedy zrobić git rm -r --cache test/node_modules? Nie mogę wyciągnąć z powodu nadpisanej wiadomości i nie mogę usunąć, ponieważ git nie może ich znaleźć (są tam)
HMR
1045

OSTRZEŻENIE: usunie nieśledzone pliki, więc nie jest to świetna odpowiedź na postawione pytanie.

Uderzyłem również w tę wiadomość. W moim przypadku nie chciałem przechowywać plików, więc zadziałało to dla mnie:

git 2.11 i nowsze

git clean  -d  -f .

starszy git

git clean  -d  -f ""

Jeśli chcesz również usunąć pliki ignorowane przez git, wykonaj następujące polecenie.

BYĆ OSTRZEŻONYM!!! NAJBARDZIEJ PRAWDOPODOBNIE NISZCZY TWÓJ PROJEKT, WYKORZYSTAJ TYLKO JEŻELI WIESZ 100% CO ROBISZ

git 2.11 i nowsze

git clean  -d  -fx .

starszy git

git clean  -d  -fx ""

http://www.kernel.org/pub/software/scm/git/docs/git-clean.html

  • -x oznacza, że ​​ignorowane pliki są również usuwane, a także pliki nieznane dla git.

  • -d oznacza usunięcie nieśledzonych katalogów oprócz nieśledzonych plików.

  • -f jest wymagane, aby wymusić uruchomienie.

Scott Schafer
źródło
7
Dzięki, po tym wyczyszczeniu mogłem się opierać;
Alexander Beletsky
139
UWAŻAJ PODCZAS PRACY git clean!
Noel
249
Aby uniknąć twarzy, najpierw uruchom ją z opcją suchego biegu, aby zobaczyć, co by to zrobiło: git clean -dfxnlubgit clean -dfx --dry-run
Dennis
74
O kurczę. Spowoduje to usunięcie wszystkich plików konfiguracyjnych z mojego xcode, a teraz projekt zmienia się w projekt Mac. BĄDŹ BARDZO UWAŻNY PRZY URUCHOMIENIU TEGO POLECENIA Myślałem, że usunie to tylko z git.
tyegah123
25
Ta -xopcja mnie boli
Wener
589

Ostrzeżenie: spowoduje to usunięcie plików lokalnych, które nie są indeksowane

Po prostu wymuś: git checkout -f another-branch

Régis
źródło
78
Ostrzeżenie: spowoduje to usunięcie plików lokalnych, które nie są indeksowane.
ofiarował
git clean nie działał dla mnie, ale siła była dokładnie tym, czego potrzebowałem. Utknął na tej gałęzi i potrzebowałem jej tylko do zmiany gałęzi.
Simon The Cat
7
Nie chciałem pliku, który nie został zindeksowany! +1 dla ciebie
ryansstack
dostałem ten błąd ,,, :(error: pathspec 'mybranch' did not match any file(s) known to git.
Budi Mulyo
2
To jest prawdziwa odpowiedź.
metamonkey
145

Jeśli korzystasz z systemu OS X, przyczyną może być to, że w nazwie pliku zmieniła się wielkość liter. Spróbuj ustawić następującą opcję konfiguracji:

git config core.ignorecase true
mattbasta
źródło
13
Działa również w systemie Windows, wygląda na to, że ta sytuacja zdarzyła się przede wszystkim ze względu na zmianę sprawy, której GIT nie mógł określić
SagiLow 30.01.2015
4
To właśnie miałem problem, ścieżka pliku różniła się wielkością liter - Windows traktuje to tak samo, ale GIT nie ma problemu.
Daniel Sokołowski
1
Mój problem zdarzył się przy kasie innej gałęzi w Windows 10 i tylko to działa dla mnie, dzięki
Weijie niedz.
niesamowite! to rozwiązało mój problem, gdy poruszałem się między tagami
William Añez
1
Działa również, jeśli spróbujesz git rebase. Dzięki.
user3890355,
42

Git mówi ci, że chce tworzyć pliki (o nazwie public/system/images/9/...itp.), Ale masz już pliki w tym katalogu, które nie są śledzone przez Git. Być może ktoś inny dodał te pliki do repozytorium Git i po raz pierwszy przeszedłeś do tej gałęzi?

Prawdopodobnie istnieje powód, dla którego te pliki w twoim developoddziale, ale nie w bieżącym oddziale. Być może będziesz musiał zapytać współpracowników, dlaczego tak jest.

jak mogę to uruchomić, aby móc przełączać gałęzie bez usuwania tych plików?

Nie możesz tego zrobić, jeśli pliki nie znikną. Na razie możesz zmienić nazwę publicna my_publiclub coś takiego.

jeśli wrócę później do tej gałęzi, czy wszystko będzie idealnie jak do mojego ostatniego zatwierdzenia?

Jeśli zatwierdzisz zmiany, Git ich nie utraci. Jeśli nie zatwierdzisz zmian, Git bardzo się postara, aby nie nadpisać wykonanej pracy. Właśnie o tym ostrzega Git w pierwszej instancji (kiedy próbowałeś zmienić gałąź).

Greg Hewgill
źródło
Dziękuję za wyjaśnienie. Utworzyłem kopię zapasową plików, zmieniłem gałęzie i scaliłem je, a następnie zastąpiłem pliki w folderze publicznym. To się udało.
marcamillion
1
Jak skomentowałem odpowiedź @ Arrowmaster. To jest poprawna odpowiedź na komunikat o błędzie. To może nie być właściwa odpowiedź dla tego szczególnie pytającego, ponieważ jego prawdziwymi problemami wydaje się być jego gitignore.
studgeek
37

To zadziałało dla mnie.

 1. git fetch --all
 2. git reset --hard origin/{branch_name}
Chamara Jayalath
źródło
5
Dodaj wyjaśnienie swojego rozwiązania. patrz stackoverflow.com/help/how-to-answer
user7294900
Oto moje zdanie. Twoja lokalna kopia zdalnego oddziału faktycznie w jakiś sposób zawiera wszystkie nieśledzone pliki. Sprawdzasz to, aby przywrócić nieśledzone pliki, na które pierwotnie narzekał. Teraz możesz przejść do innych oddziałów
ahnbizcad
2
Z jakiegoś powodu jest to dla mnie jedyne działające rozwiązanie. Dzięki stary.
Kiwad
Rozwiązałem mój problem. Dzięki
Devashis Kant
Wielkie dzięki, takie proste! git reset - łagodne pochodzenie / rozwijanie. Jak nienawidzę edytowania konfliktów scalania. To polecenie jest takie miłe i proste.
nine9five
22

Dla tego delikatnego zadania istnieje polecenie (trwałe usunięcie nieśledzonych plików)

git clean -i

Wtedy git pullzrobi.

Abhishek Goel
źródło
13

Dla tych, którzy potrzebują czegoś mniej dalekosiężnego niż odpowiedź Scotta Schafera ,

git clean -f

prawdopodobnie zadziała. I bardzo sugerują działa

git clean --dry-run

pierwszy. To polecenie wyświetli listę plików, które Git usunie, jeśli uruchomisz git clean -f, i może zaoszczędzić ci bólu związanego z przypadkowym usunięciem czegoś, czego nie chciałeś.

Zobacz tę odpowiedź Stos Oveflow lub docs aby uzyskać więcej informacji na temat git clean.

mc_kaiser
źródło
12

Niestety, ani git rm --cachedczy git clean -d -fx ""zrobił to dla mnie.

Moje rozwiązanie zakończyło się wypychaniem mojego oddziału do zdalnego, klonowaniem nowego repozytorium, a następnie scalaniem w nowym repozytorium. Inne osoby uzyskujące dostęp do repozytorium musiały zrobić to samo.

Morał tej historii: użyj .gitignorepliku od samego początku.

Kyle Clegg
źródło
10

Jeśli chcesz szybko rozwiązać to pytanie, możesz użyć tego polecenia:

git checkout -f dev
GeekHades
źródło
Pomogło mi to, gdy mój problem nie był związany z .gitignoreafaik.
Nakilon,
error: pathspec 'dev' nie pasuje do żadnego pliku (ów) znanego z git.
Czarny
@Black 'dev' to nazwa oddziału, zamiast tego wpisz swój oddział
Vinit Solanki
8

Miałem ten sam problem podczas sprawdzania w oddziale na podstawie wcześniejszego zatwierdzenia. Git odmówił realizacji transakcji z powodu nieśledzonych plików.

Znalazłem rozwiązanie i mam nadzieję, że to również pomoże.

Dodanie katalogów, których dotyczy problem, .gitignorei wydawanie $ git rm -r --cachedna nich najwyraźniej nie wystarczy.

Załóżmy, że chcesz, aby gałąź była oparta na wcześniejszym zatwierdzeniu K w celu przetestowania niektórych rzeczy i powrotu do bieżącej wersji. Zrobiłbym to w następujących krokach:

  1. Skonfiguruj nieśledzone pliki: edytuj .gitignorei zastosuj $ git rm -r --cacheddo plików i katalogów, które git ma ignorować. Dodaj także .gitignoresam plik .gitignorei nie zapomnij go wydać $ git rm -r --cached .gitignore. Zapewni to zachowanie ignorowania git pozostawi to samo we wcześniejszych zatwierdzeniach.

  2. Zatwierdź właśnie wprowadzone zmiany:

    $ git add -A
    $ git commit

  3. Zapisz bieżący dziennik, w przeciwnym razie możesz mieć problemy z powrotem do bieżącej wersji

    $ git log > ../git.log

  4. Twardy reset do zatwierdzenia K

    $ git reset --hard version_k

  5. Utwórz gałąź na podstawie zatwierdzenia K

    $ git branch commit_k_branch

  6. Kasa do tego oddziału

    $ git checkout commit_k_branch

  7. Rób swoje rzeczy i popełniaj je

  8. Kasa ponownie do mistrza

    $ git checkout master

  9. Zresetuj ponownie do bieżącej wersji

    $ git reset current_version lub $ git reset ORIG_HEAD

  10. Teraz możesz ciężko zresetować HEAD

    git reset --hard HEAD

UWAGA! Nie pomijaj kroku od ostatniego do ostatniego (jak np. $ git reset --hard ORIG_HEAD ), Ponieważ nieśledzone pliki, które skarżył się powyżej, zostaną utracone.

Upewniłem się również, że pliki, na które skarżył się git, nie zostały usunięte. Skopiowałem je do pliku tekstowego i wydałem polecenie$ for i in $(cat ../test.txt); do ls -ahl $i; done

Jeśli ponownie dokonujesz płatności do wyżej wymienionej gałęzi, nie zapomnij wydać polecenia, $ git statusaby upewnić się, że nie pojawią się niepożądane zmiany.

Juri Sinitson
źródło
8

Zdarzyło mi się to w systemie Windows 8 , używając Git z wiersza polecenia. Reszta mojego zespołu używa TFS , a ja używam git-tf Microsoftu do wypychania / ściągania między TFS a moim lokalnym repozytorium Git.

Problem powstał z powodu zmiany nazw niektórych plików tylko w celu zmiany ich wielkości . Wydaje się, że tak się stało:

  • Pliki były rejestrowane z mieszaną obudową w ich nazwach.
  • W późniejszym zatwierdzeniu nazwy plików zostały zmienione na wszystkie małe litery.
  • git-tf początkowo dostał pliki w różnych przypadkach.
  • Gdy nazwy plików zmieniono na małe, git-tf nie otrzymał plików, ponieważ w systemie Windows 8 te nazwy plików są równoważne.
  • Ponieważ w Git rozróżniana jest wielkość liter, narzekał, że mam pliki o różnej wielkości liter, które nie były pod kontrolą źródła. Ale przy użyciu git statusnie widziałem żadnych zmian, ponieważ w wierszu polecenia systemu Windows te nazwy plików są równoważne.

Najprostszym rozwiązaniem dla mnie było:

  • git checkoutpoprzednia wersja projektu, na długo przed dodaniem tych plików .
  • Następnie git checkoutnajnowsza wersja projektu z poprawną obudową pliku.
Ryan Lundy
źródło
+1 Byłem w stanie użyć git log na bieżącej gałęzi i gałęzi, aby dokonać zmiany bazy, aby zobaczyć, kiedy nastąpiło zatwierdzenie, które zmieniło sprawę; potem hackowałem to ...
mędrzec
4

Te dwie funkcje (git rm --cached, git checkout -f another-branch) NIE działały dla mnie.

Zamiast tego fizycznie usunąłem plik (zaćmienie) zgodnie z poleceniem Gita; Proszę je przenieść lub usunąć, zanim będzie można zmienić oddziały.

a następnie dodaję / zatwierdzam.

a potem pociągnąłem i zadziałało!

Młody Choung
źródło
4

W moim przypadku problem dotyczył submodułów. masterzostał połączony z innym oddziałem, który dodał nowy podmoduł do projektu. Oddział, który próbowałem wyewidencjonować, nie miał go, dlatego git narzekał na nieśledzone pliki i żadne inne sugerowane rozwiązanie nie działało dla mnie. Zmusiłem kasę do mojego nowego oddziału i pociągnąłem mistrza.

  • git checkout -f my_branch
  • git pull origin master
  • git submodule update --init
Bruno Pinheiro
źródło
3

W moim przypadku git rm --cachednie działało. Ale mam to zgit rebase

Hillkorn
źródło
3

Miałem również podobny problem i wypróbowałem wszystkie powyższe rozwiązania, ale to nie zadziałało

Kwestia ta była spowodowana kiedy przemianowano mój onMusicUpdateListener.javaTO OnMusicUpdateListener.javaw developbranży.

Teraz mastermiał onMusicUpdateListener.java i developmiał taki sam plik jakOnMusicUpdateListener.java

Teraz, gdy przełączałem się na master, dawał mi błąd

The following untracked working tree files would be overwritten by checkout

a potem to aborted.

Aby rozwiązać ten problem, i mocno checked out mastergałęzi i następnie przemianowany na mój onMusicUpdateListener.javado OnMusicUpdateListener.java, committedto i wtedy mergedona z developgałęzi.

Potem aktualizowane mój developoddział przez mergingniego do masteri teraz wszystko wróciło do normy i problem został rozwiązany.

Sheraz Ahmad Khilji
źródło
Wcześniej miałem podobne problemy. Moim zdaniem problem z rozróżnianiem wielkości liter wydaje się być problemem tylko w systemie Windows. Myślę, że rozwijasz się w systemie Windows?
Ji_in_coding
2

Może to być problem z pozwoleniem,

zmienić własność,

sudo chown -v -R usr-name:group-name folder-name
Zwycięstwo Jun Bae
źródło
Miałem również ten sam problem co Won. Dodałem .gitignore do folderu, który już był śledzony. Usunąłem plik, a następnie mogłem zrobić kasę git.
cbloss793
2

Problemem mogą być 2 pliki o tej samej nazwie, ale w innym przypadku.

Możesz usunąć jeden z tych plików lub zmienić jego nazwę. Dawny:

Pdf.html.twig (The GOOD one)

pdf.html.twig (The one I deleted)
Samuel Vicent
źródło
2

Przenieś pliki zamiast usuń

Jednym ze sposobów uniknięcia usuwania plików jest ich przeniesienie. Na przykład:

cd "`git rev-parse --show-toplevel`"
git checkout 2>&1 | while read f; do [ ! -e "$f" ] || mv "$f" "$f".bak; done
gmatht
źródło
1

Jeśli nazwa pliku została zmieniona lokalnie, a następnie wykonaj pull, zostanie wyświetlony ten komunikat o błędzie.

Łubosław Kanev
źródło
Jak w takim przypadku pokonać ten błąd? Ten komunikat pojawia się również przy zmianie gałęzi po zmianie wielkości liter w nazwie pliku (MyFile => myfile).
Bernhard Döbler
1

to łatwe do rozwiązania, git mówi, że masz te same pliki w obu gałęziach, dlatego musisz usunąć określone pliki z gałęzi master, a następnie będziesz mógł scalić:

git scala „twoją gałąź”

Mam nadzieję, że to zadziała, właśnie rozwiązałem swój błąd. mój błąd to:

błąd: Następujące nie śledzone pliki działającego drzewa zostaną zastąpione przez scalanie: .vs / slnx.sqlite Proszę przenieść lub usunąć je przed scaleniem. Przerwanie

Teraz działa! W moim przypadku .vs / slnx.sqlite został wygenerowany przez visual studio, musiałem go zamknąć przed usunięciem.

jeirueda
źródło
0

W moim przypadku widziałem ten błąd, ponieważ korzystam z popularnego CMS typu open source, a katalog, który powodował problemy, to katalog do przesyłania, do którego CMS zapisuje.

Mówił więc, że istnieją pliki, których nie masz, ale których nie można uzyskać z wersji.

Pobieram wszystkie pliki z witryny na żywo do mojego lokalnego, a następnie sprawdzę to w repozytorium w nadziei, że to rozwiąże problem.

Markozaur
źródło
0

Usuń .gitignore plik appname / Gen / , aby rozwiązać ten problem.

vishnuc156
źródło
0

Po prostu poszedłem do systemu plików i bezpośrednio usunąłem plik, a następnie kontynuowałem sprawdzanie git i zadziałało.

Problem występował kilka razy i może być związany z programistami wykonującymi usuwanie, wypychanie, ponowne dodawanie, wypychanie lub coś takiego.

Phil Carter
źródło
0

Większość odpowiedzi rozważa usunięcie lub usunięcie plików, co jest łatwym sposobem. Ale czasami nie chcesz pozbyć się lokalnych plików. Ale połącz się ze strategią, więc git też ma na to rozwiązanie;

git merge --strategy=ours master 
Erdinç Çorbacı
źródło
0

Wystarczy usunąć pliki lub zmienić ich nazwę.

na przykład

$ git pull
Enter passphrase for key '/c/Users/PC983/.ssh/id_rsa':
error: Your local changes to the following files would be overwritten by merge:
        ajax/productPrice.php
Please commit your changes or stash them before you merge.
error: The following untracked working tree files would be overwritten by merge:
        ajax/product.php
Please move or remove them before you merge.
Aborting
Updating a04cbe7a..6aa8ead5

Musiałem zmienić nazwę / usunąć ajax / product.php i ajax / produtPrice.php .

Nie martw się, git pull przywróci je. Sugeruję zmianę nazwy zamiast usuwania, ponieważ możesz utracić niektóre zmiany.

Jeśli to nie pomoże, musisz usunąć cały Oddział i utworzyć go ponownie, a następnie zrobić git pull origin remotebranch

czarny
źródło
0

Aby zapisać zmodyfikowane pliki i użyć zmodyfikowanej zawartości później. Znalazłem ten błąd, gdy próbuję sprawdzić gałąź i podczas próby zmiany bazy. Wypróbuj skrytkę Git

git stash

MöĦämëđ ÏbŗäĦïm
źródło
0

Sprawdź, czy nazwa folderu ma symbol „/” lub jakiś specjalny symbol, a następnie zmień nazwę tego folderu. Następnie klonujesz repozytorium w inne miejsce.

Codemaker
źródło
0

Prostym rozwiązaniem może być: Upewnij się, że jesteś w odpowiednim katalogu roboczym GitBash. Wiadomość ta pojawia się prawie za każdym razem, gdy użytkownik próbuje scalić katalog zbyt wysoko w swojej hierarchii folderów.

Przykład:

/workspace/git/myBashSourceFolder/myProjectSourcefolder

Scenariusz: Użytkownik sklonował repozytorium w git-folder, stworzył nowy projekt Java w Eclipse, zaimportował sklonowane repozytorium. Eclipse ustawił myProjectSourceFolder jako folder źródłowy w swoim lokalnym projekcie. dlatego Użytkownik wprowadził go w git bash i pchnął, pociągnął i zlecił swój projekt stamtąd. git synchronizuje więc myProjectSourceFolder- ale nie ma w swojej historii żadnego rekordu dla myBashSourceFolder. Dlatego push / pull / merge z myBashSourceFolder wygeneruje dane wyjściowe, jeśli użytkownik spróbuje synchronizować stamtąd następnym razem, zamiast folderu, który wcześniej pracował.

Rozwiązanie: Wprowadź poprawny folder i spróbuj ponownie. Niemal za każdym razem, gdy się spotkałem, to rozwiązanie działało dobrze :)

mZed
źródło