Usunięcie śledzenia folderu w gicie

0

Codeblocks generuje mi foldery typu bin i obj, więc chciałbym usunąć je z mojego repository. Dodałem do .gitignore:

# remove folders
bin/
obj/

a następnie na moim branchu wykonałem:

git rm -r bin
git rm -r --cached . 
git add .
git commit -m 'removed filed'
git push

i mimo tego folder bin nadal jest w repository. Jak się go pozbyć?

0

Spróbuj

git rm -r --cached obj
git commit -m "remove obj"
git push
0

Nadal to samo. Co więcej:
do .gitignore dodaję *.o
Do folderu dodaję plik test.o
Nastepnie robię git pull
Wpisując git status dostaję informacje, ze test.o nie jest śledzony, i mogę go śledzić uzywając git add test.o

No przecież spodziewałem sie, że gitignore ustawiam po to, by nie musieć ręcznie wyłączać z śledzenia plików. W taki sposób nie mogę użyć git add .

1

Jak się go pozbyć?

Zacznijmy od tego, że Git nie śledzi katalogów.
Usunąć trzeba pliki w nim zawarte.

do .gitignore dodaję *.o
Do folderu dodaję plik test.o
Nastepnie robię git pull
Wpisując git status dostaję informacje, ze test.o nie jest śledzony

Powinno działać. Pull nie jest potrzebne.

0

Ale nie działa!

Jeszcze raz:
Mam 2 branche: master oraz linux.
W branchu master utworzyłem plik .gitignore w którym dodałem bin/
Przełączyłem się na branch linux i wpisałem git merge master by pobrać plik .gitignore.
Chciałem usunąć folder bin z githuba, więc wpisałem git rm -r --cached bin
Następnie wpisałem git commit -am 'removed bin'
Po wpisaniu git push folder bin został usunięty z githuba.

Ale dlaczego jak teraz wpisuję git status to dostaję informację, że folder bin nie jest śledzony? Spodziewałem się, żę git będzie totalnie ignorował ten folder i nie będzie wspominał o śledzeniu go. Nie mogę teraz użyć git add ., bo znowu dodam ten folder do śledzenia.

Dlaczego ten git musi być tak skomplikowany? Szukam odpowiedzi już n-tą godzinę i nic z tego!

0

Wpis z gitignore nie jest rozpoznawany. Próbowałeś bin/** ?

Dlaczego ten git musi być tak skomplikowany? Szukam odpowiedzi już n-tą godzinę i nic z tego!

PS. Wnioskuję, że niezbyt długo programujesz. Uwierz mi git nie jest skomplikowany. To na co natrafiłeś to nie jest problem. To jest problemiczek. Zacznij się przyzwyczajać ;).

0
Błękitny Jeleń napisał(a):

Mam 2 branche: master oraz linux.
W branchu master utworzyłem plik .gitignore w którym dodałem bin/
Przełączyłem się na branch linux i wpisałem git merge master by pobrać plik .gitignore.

Nie ma potrzeby łączenia obu gałęzi, tylko zrób to tak:

  1. Przełącz się na gałąź linux za pomocą git checkout linux
  2. Dodaj aktualny plik .gitignore z gałęzi master do indeksu gałęzi linux za pomocą git checkout master .gitignore
  3. Zatwierdź zmiany na gałęzi linux za pomocą git commit -m "Update .gitignore" (nie trzeba wykonywać git add .gitignore, bo plik jest już w indeksie)
0

Żadne z waszych rad nie działają. Spróbowałem od nowa:
Utworzyłem nowe repozytorium. Dodałem branch pc na którym dodałem nowy folder i plik tekstowy. Dodałem branch pc2 na który dodałem inny folder i inny plik tekstowy.

git checkout pc // pojawia sie nowy folder 'client'
git status // nothing to commit
git checkout pc2 // pojawia sie nowy folder 'server'
git status // nothing to commit
git checkout master // brak plikow/folderow
git status // nothing to commit
git merge pc // already up to date
git merge pc2 // already up to date 

Szału dostaję z tym gitem. To w ogóle nie ma sensu!

2

Jeleniu,

chyba nie robisz commitów. Zrób tak. W dowolny pustym katalogu wykonaj następujące komendy:

  1. git init
  2. Utwórz pusty plik o nazwie aaa.txt
  3. git add aaa.txt
  4. git commit -m "Add aaa.txt"
  5. git branch linux
  6. Utwórz plik .gitignore zawierający jedną linię z ciągiem znaków bin/
  7. git add .gitignore
  8. git commit -m "Add .gitignore"
  9. git checkout linux
  10. git checkout master .gitignore
  11. git commit -m "Add .gitignore"

Teraz obie gałęzie posiadają ten sam plik .gitignore.

1 użytkowników online, w tym zalogowanych: 0, gości: 1