gitignore i " następujące Nie śledzone pliki drzewa roboczego zostaną nadpisane przez checkout"

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

Gdy zrobię git status mówi mi

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

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

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
To jest to, co moje .plik gitignore wygląda następująco:
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*

Jak to działa, żebym mógł 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 wrócę do tego oddziału później wszystko będzie idealne, jak do mojego najnowszego zaangażować?

Nie chcę stracić tych plików, po prostu nie chcę ich śledzić.
Author: SherylHohman, 2011-02-01

26 answers

Wygląda na to, że chcesz, aby pliki były ignorowane, ale zostały już zatwierdzone. .gitignore nie ma wpływu na pliki, które są już w repo, więc należy je usunąć za pomocą git rm --cached. --cached uniemożliwi jej wpływ na twoją kopię roboczą i po prostu zaznaczy ją jako usuniętą przy następnym zatwierdzeniu. Po usunięciu plików z repo następnie .gitignore uniemożliwi ich ponowne dodanie.

Ale masz inny problem ze swoim .gitignore, jesteś nadmiernie używasz symboli wieloznacznych i powoduje, że dopasowuje się mniej niż się spodziewasz. Zamiast tego pozwala zmienić .gitignore i spróbuj tego.
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/
public/system/images/
public/system/avatars/
 222
Author: Arrowmaster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-11 08:25:15

Ostrzeżenie: usunie pliki, które nie są śledzone, więc nie jest to świetna odpowiedź na stawiane pytanie.

Ja też trafiłem w tę wiadomość. W moim przypadku nie chciałem zatrzymywać plików, więc to działało na mnie:

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 git.

  • -d oznacza usuwanie nie śledzonych katalogów oprócz Nie śledzonych plików.

  • -f jest wymagane, aby zmusić go do uruchomienia.

 845
Author: Scott Schafer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-24 15:26:43

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

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

 482
Author: Régis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-20 15:23:27

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

git config core.ignorecase true
 115
Author: mattbasta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-30 17:54:00

Git mówi ci, że chce tworzyć pliki (o nazwie public/system/images/9/... itd.), ale masz już istniejące pliki w tym katalogu, które nie są śledzone przez Git. Być może ktoś jeszcze dodał te pliki do repozytorium Git, a ty po raz pierwszy przełączyłeś się na tę gałąź?

Prawdopodobnie istnieje powód, dla którego te pliki są w Twojej gałęzi develop, ale nie w bieżącej gałęzi. Być może będziesz musiał zapytać swoich współpracowników, dlaczego tak jest.

skąd mam to wziąć? działa, więc mogę przełączać gałęzie bez usuwania tych plików?

Nie da się tego zrobić bez spowodowania, że pliki znikną. Na razie możesz zmienić nazwę public na my_public.

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

Jeśli zatwierdzisz zmiany, Git ich nie straci. Jeśli nie zatwierdzisz zmian, to Git będzie starał się bardzo mocno , a nie nadpisać pracę, którą wykonałeś zrobione. To jest to, o czym Git ostrzega cię w pierwszej instancji tutaj (kiedy próbowałeś zmienić gałęzie).

 41
Author: Greg Hewgill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-01 01:47:15

Istnieje polecenie do tego delikatnego zadania (trwałe usuwanie nie śledzonych plików)

git clean -i

Wtedy git pull zrobi się.

 21
Author: Abhishek Goel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-21 08:37:58

Niestety ani git rm --cached ani git clean -d -fx "" nie zrobiły tego dla mnie.

Moje rozwiązanie skończyło się popychaniem mojej gałęzi do zdalnego, klonowaniem nowego repo, a następnie scalaniem w nowym repo. Inni ludzie uzyskujący dostęp do repo musieli zrobić to samo.

Morał historii: użyj pliku .gitignore Od początku.

 11
Author: Kyle Clegg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-09 05:33:41

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

git clean -f
Prawdopodobnie zadziała. I wysoce sugerują bieganie
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 nieumyślnego usunięcia czegoś, czego nie chciałeś.

Zobacz ten stos Oveflow answer lub docs aby uzyskać więcej informacji na temat git clean.

 9
Author: mc_kaiser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-14 19:01:12

Miałem ten sam problem przy sprawdzaniu gałęzi bazującej na wcześniejszym commicie. Git odmówił checkout z powodu nie śledzonych plików.

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

Dodawanie katalogów do .gitignore i wystawianie na nich $ git rm -r --cached to najwyraźniej za mało.

Załóżmy, że chcesz zrobić gałąź opartą na wcześniejszym commicie K, aby przetestować pewne rzeczy i wrócić do bieżącej wersji. Zrobiłbym to w następujący sposób kroki:

  1. Konfigurowanie plików nie śledzonych: edytuj .gitignore i zastosuj $ git rm -r --cached na plikach i katalogach, które chcesz zignorować. Dodaj również sam plik .gitignore do .gitignore i nie zapomnij wydać $ git rm -r --cached .gitignore. Zapewni to, że ignorowane zachowanie Gita pozostawi to samo we wcześniejszych commitach.

  2. Zatwierdź wprowadzone zmiany:

    $ git add -A
    $ git commit

  3. Zapisz bieżący dziennik, w przeciwnym razie mogą pojawić się problemy z powrotem do aktualna wersja

    $ git log > ../git.log

  4. Hard reset do commit K

    $ git reset --hard version_k

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

    $ git branch commit_k_branch

  6. Wymeldowanie do tego oddziału

    $ git checkout commit_k_branch

  7. Zrób swoje rzeczy i zatwierdź je

  8. Kasowanie z powrotem do mistrza ponownie

    $ git checkout master

  9. Przywróć ponownie aktualną wersję

    $ git reset current_version lub $ git reset ORIG_HEAD

  10. Teraz możesz zresetować mocno do głowy

    git reset --hard HEAD

Uwaga! Nie pomijaj następnego do ostatniego kroku (np.]} ) w przeciwnym razie nie śledzone pliki Git zgłoszony powyżej zostaną utracone.

Upewniłem się również, że pliki, na które narzekał 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 dokonasz zakupu w wyżej wymienionym oddziale ponownie, nie zapomnij wydać $ git status, aby upewnić się, że nie ma niechcianych pojawiają się zmiany.

 7
Author: Juri Sinitson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-24 03:55:37

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

git checkout -f dev
 7
Author: GeekHades,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-07 02:40:01

Przydarzyło mi się to w systemie Windows 8 , używając Gita z wiersza polecenia. Reszta mojego zespołu używa TFS , a ja używam Git-TF Microsoftu do przesuwania/ciągnięcia pomiędzy TFS a moim lokalnym repozytorium Gita.

Problem powstał z powodu niektórych plików, które zostały przemianowane tylko w celu zmiany ich przypadku . Wygląda na to, że stało się tak:

  • akta były sprawdzane z mieszanymi łuskami w nazwach.
  • w późniejszym commicie plik nazwy zostały zmienione na wszystkie pisane małymi literami.
  • git - tf początkowo pobrał pliki w przypadku mieszanym.
  • kiedy zmieniono nazwę plików na małe litery, git-tf nie otrzymał plików, ponieważ w Windows 8 te nazwy plików są równoważne.
  • ponieważ Git jest wrażliwy na wielkość liter, narzekał, że mam pliki o mieszanych sprawach, które nie były kontrolowane przez źródło. Ale używając git status, nie mogłem zobaczyć żadnych zmian, ponieważ w wierszu polecenia systemu Windows te nazwy plików są równoważne.

Najprostszy rozwiązanie dla mnie było:

  • git checkout poprzednia wersja projektu, na długo przed dodaniem tych plików .
  • wtedy git checkout najnowsza wersja projektu, z prawidłową obudową pliku.
 7
Author: Ryan Lundy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-30 08:02:31

To mi pomogło.

 1. git fetch --all
 2. git reset --hard origin/{branch_name}
 4
Author: Chamara Jayalath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-08 12:54:37

W moim przypadku problem był z podmodułami. master został połączony z inną gałęzią, która dodała nowy podmoduł do projektu. Gałąź, którą chciałem sprawdzić, nie miała tego, dlatego git narzekał na nie śledzone pliki i żadne inne sugerowane rozwiązania nie zadziałały na mnie. Zmusiłem kase do nowego oddziału i wyciągnąłem mistrza.

  • git checkout -f my_branch
  • git pull origin master
  • git submodule update --init
 4
Author: Bruno Pinheiro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-16 21:48:50

Miałem również do czynienia z podobnym problemem i próbowałem wszystkich rozwiązań zamieszczonych powyżej, ale to nie działało

Problem powstał, gdy przemianowałem Moje onMusicUpdateListener.java na OnMusicUpdateListener.java w gałęzi develop.

Now master had onMusicUpdateListener.java i develop miał ten sam plik co OnMusicUpdateListener.java

Teraz, gdy przełączyłem się na master, dało mi to błąd

The following untracked working tree files would be overwritten by checkout

A potem aborted.

Aby to rozwiązać, stanowczo checked out master oddział a potem przemianowałem Moje onMusicUpdateListener.java na OnMusicUpdateListener.java, committed on i następnie merged to z develop gałęzią.

Potem zaktualizowałem moją develop gałąź o merging do master i teraz wszystko wróciło do normy i problem został rozwiązany.

 3
Author: Sheraz Ahmad Khilji,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-01 06:47:11

Te dwie funkcje (git RM --cached, git checkout - f another-branch) nie działa dla mnie.

Zamiast tego fizycznie usunąłem plik (w eclipse) jako to, co Git każe ci zrobić; proszę przenieść lub usunąć je, zanim będziesz mógł zmienić gałęzie.

A potem dodaję / popełniam.

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

 3
Author: In-young Choung,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 16:46:46

W moim przypadku {[0] }nie zadziałało. But I got it with a git rebase

 2
Author: Hillkorn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-02 10:40:31

To może być problem z pozwoleniem,

Zmień właściciela,

sudo chown -v -R usr-name:group-name folder-name
 2
Author: Won Jun Bae,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-24 20:10:00

2 pliki o tej samej nazwie, ale inny przypadek może być problemem.

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

Pdf.html.twig (The GOOD one)

pdf.html.twig (The one I deleted)
 2
Author: Samuel Vicent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-10 12:29:07

Przenieś pliki, zamiast delete

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

cd "`git rev-parse --show-toplevel`"
git checkout 2>&1 | while read f; do [ ! -e "$f" ] || mv "$f" "$f".bak; done
 2
Author: gmatht,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-10 06:16:38

To jest łatwe do rozwiązania, git mówi, że masz te same pliki w obu gałęziach, dlatego musisz usunąć konkretne pliki z gałęzi master i wtedy będziesz mógł scalić:

Git merge "your branch"

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

Błąd: następujące Nie śledzone pliki drzewa roboczego zostaną nadpisane przez merge: .vs / slnx.sqlite Proszę przenieść lub usunąć je przed połączeniem. Przerywanie

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

 1
Author: jeirueda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-28 18:38:19

W moim przypadku zauważyłem ten błąd, ponieważ używam popularnego CMS open source, a katalog, który powodował problemy, to katalog uploads, do którego CMS pisze.

Więc chodziło o to, że są pliki, których nie masz, ale których nie możesz uzyskać z wersjonowania.

Pobieram wszystkie pliki z aktywnej strony do mojego lokalnego, a następnie sprawdzę to w repo w nadziei, że to rozwiąże problem.

 0
Author: Markosaurus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-31 11:12:09

Usuń .gitignore Plik z appname/gen/ aby rozwiązać ten problem.

 0
Author: vishnuc156,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-19 09:32:02

Jeśli zmieniłeś nazwę pliku lokalnie, a następnie wykonasz pull, wyświetli się ten Komunikat o błędzie.

 0
Author: lyuboslav kanev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-23 08:50:37

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

Miałem problem wystąpił kilka razy i może to być związane z deweloperami robi delete, push, re-add, push lub coś takiego.

 0
Author: Phil Carter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-13 21:27:22

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

git merge --strategy=ours master 
 0
Author: Erdinç Çorbacı,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-02 14:50:05

Po Prostu Usuń pliki lub zmień ich nazwę.

Np.

$ 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 / produkt.php i ajax / produtPrice.php .

Nie martw się, git pull je przywróci. Sugeruję zmianę ich nazw zamiast usuwania, ponieważ możesz stracić pewne zmiany.

Jeśli to nie pomoże, musisz usunąć całą gałąź i utworzyć ją ponownie, a następnie wykonać git pull origin remotebranch

 0
Author: Black,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-29 13:23:55