Witam i dzięki za zajrzenie!
Na wstępie chciałbym zgłosić pewną uwagę. Jak widać w temacie mam pewne wątpliwości dotyczące Git. Jednak nie wiedziałem w którym dziale się poradzić. Zdecydowałem się na ten dział, dlatego że większość innych postów(Szukaj... -> Git) znajdowało się tu. Gdybym ich nie znalazł ich to bym zdecydował się na Newbie, Inżynieria oprogramowania lub Off-Topic. Moim zdaniem przydałby się dział na temat kontroli wersji. :)
Jeżeli chodzi o Git to z tego co przeczytałem wynika, że w pierwszym commicie jakiegoś pliku tekstowego Git przechowuje cały plik. W drugim commicie(i kolejnych) tego pliku przechowuje tylko różnice pliku między commitem pierwszym a drugim. Mam racje?
Co się stanie, gdy w przykładzie powyżej commitujemy plik wykonywalny? W tedy Git będzie robił kopie całych plików przy każdym commicie, jeżeli znajdzie jakąś różnice? I to za każdym razem całości?
Pytam się, bo jeżeli moje przypuszczenia są prawdziwe to mogę mieć dużo syfu w historii Gita: wiele plików wykonywalnych. Martwię się o przestrzeń dyskową.
Wiem, że ten problem można rozwiązać za pomocą .gitignore, jednak co w sytuacji, gdy kilka plików wykonywalnych zostało commitowanych i nagle dochodzę do wniosku, że mi są nie potrzebne. Da się pojedyncze pliki usunąć, które zostały już commitowane?
Pracuje zarówno na Debianie i Windowsie. Właśnie dzięki Git mogę łatwo współdzielić pracę między dwoma laptopami, zamiast biegać z Pendrive'em. Jeżeli chodzi o pliki wykonywalne pod Windowsem to problemu aż takiego nie ma, bo można do .gitignore dodać *.exe
, ale co w sytuacji, gdy np. Lazarus od Delphi na Debianie generuje pliki wykonywalne bez rozszerzenia? Jak to dodać do .gitignore?
No i chyba ostatnia wątpliwość: Czy można tworzyć kilka plików .gitignore w różnych poziomach katalogów? Żeby zobrazować o co mi chodzi:
~/A$ tree -a
.
├── B
│ └── .gitignore
└── .gitignore
Załóżmy, że folder A jest korzeniem Git'a. Oczywistym jest to, że wpisy w .gitignore, który jest w folderze A dotyczą wszystkich katalogów/plików, które są w niżej - czyli też B. Ale czy wpisy w .gitignore w folderze B dotyczą tylko folderu B(ewentualnie podfolderów folderu B)? Czy Git dopuszcza/widzi .gitignore niżej niż w katalogu zawierającym folder .git?