Z jakiegoś powodu mam tylko jedno repozytorium .
Ale mam wiele projektów, w tym java
projekty php scripts
i Android
projekty aplikacji.
Teraz mój problem polega na tym, że muszę umieścić je w różnych podfolderach w repozytorium.
Używam różnych IDE. Wiesz, każde IDE może mieć własny obszar roboczy.
Kto może mi powiedzieć najlepszą praktykę rozwiązania problemu?
Odpowiedzi:
Podczas gdy większość ludzi powie Ci, abyś używał wielu repozytoriów, uważam, że warto wspomnieć o innych rozwiązaniach.
Rozwiązanie 1
Jedno repozytorium może zawierać wiele niezależnych gałęzi, zwanych gałęziami osieroconymi . Oddziały sieroce są całkowicie oddzielone od siebie; nie dzielą się historiami.
Spowoduje to utworzenie nowej gałęzi, niezwiązanej z bieżącą gałęzią. Każdy projekt powinien znajdować się we własnej osieroconej gałęzi.
Teraz z jakiegokolwiek powodu, git potrzebuje trochę porządkowania po sierocie przy kasie.
Upewnij się, że wszystko zostało zatwierdzone przed usunięciem
Po oczyszczeniu gałęzi sierocej możesz z niej korzystać normalnie.
Rozwiązanie 2
Unikaj wszelkich kłopotów z sierocymi gałęziami. Utwórz dwa niezależne repozytoria i wypchnij je do tego samego pilota. Wystarczy użyć różnych nazw gałęzi dla każdego repozytorium.
źródło
Rozwiązanie 3
Służy do korzystania z jednego katalogu dla wielu projektów. Używam tej techniki do niektórych ściśle powiązanych projektów, w których często muszę wprowadzać zmiany z jednego projektu do drugiego. Jest podobny do pomysłu osieroconych gałęzi, ale gałęzie nie muszą być osierocone. Po prostu uruchom wszystkie projekty z tego samego stanu pustego katalogu.
Rozpocznij wszystkie projekty z jednego zatwierdzonego pustego katalogu
Nie oczekuj cudów od tego rozwiązania. Jak widzę, zawsze będziesz mieć problemy z nieśledzonymi plikami. Git tak naprawdę nie ma pojęcia, co z nimi zrobić, więc jeśli istnieją pliki pośrednie wygenerowane przez kompilator i zignorowane przez plik .gitignore, jest prawdopodobne, że przez jakiś czas będą zawieszane, jeśli spróbujesz szybko zamienić między - na przykład - projektem oprogramowania a projektem pracy doktorskiej.
Jednak tutaj jest plan. Rozpocznij, tak jak powinieneś rozpocząć wszelkie projekty git, zatwierdzając puste repozytorium, a następnie uruchom wszystkie projekty z tego samego stanu pustego katalogu. W ten sposób masz pewność, że dwie partie plików są dość niezależne. Nadaj też swoim gałęziom odpowiednią nazwę i nie leniwie używaj po prostu „master”. Twoje projekty muszą być oddzielne, więc nadaj im odpowiednie nazwy.
Git commits (a więc tagi i gałęzie) zasadniczo przechowują stan katalogu i jego podkatalogów, a Git nie ma pojęcia, czy są to części tego samego czy innego projektu, więc naprawdę nie ma problemu z przechowywaniem różnych projektów w tym samym repozytorium. Problem polega na tym, aby wyczyścić nieśledzone pliki z jednego projektu podczas korzystania z innego lub oddzielić projekty później.
Utwórz puste repozytorium
Zacznij swoje projekty od pustych.
Pracuj nad jednym projektem.
Rozpocznij kolejny projekt
kiedykolwiek chcesz.
Przełączaj się tam iz powrotem
W dowolnym momencie możesz przechodzić między projektami. Ten przykład wraca do projektu oprogramowania szachowego.
Nieśledzone pliki są denerwujące
Podczas wymiany między projektami / oddziałami będziesz jednak zirytowany nieśledzonymi plikami.
To nie jest problem nie do pokonania
Z definicji, git tak naprawdę nie wie, co zrobić z nieśledzonymi plikami i od Ciebie zależy, jak sobie z nimi poradzić. Możesz zatrzymać przenoszenie nieśledzonych plików z jednej gałęzi do drugiej w następujący sposób.
Zapewniając, że katalog jest pusty przed sprawdzeniem naszego nowego projektu, upewniliśmy się, że nie ma zawieszonych nieśledzonych plików z innego projektu.
Wyrafinowanie
Jeśli te same daty zostaną określone przy każdym zatwierdzeniu pustego repozytorium, wówczas niezależnie utworzone zatwierdzenia pustego repozytorium mogą mieć ten sam kod SHA1. Umożliwia to niezależne utworzenie dwóch repozytoriów, a następnie scalenie ich w jedno drzewo ze wspólnym katalogiem głównym w jednym repozytorium później.
Przykład
Wynik
Używasz podkatalogów na projekt?
Może to również pomóc, jeśli przechowujesz swoje projekty w podkatalogach, jeśli to możliwe, np. Zamiast plików
mieć
W takim przypadku będzie to nieśledzony plik oprogramowania
chess/untracked_software_file.prog
. Podczas pracy wthesis
katalogu nie powinny przeszkadzać nie śledzone pliki programów szachowych i mogą się zdarzyć sytuacje, w których możesz pracować z radością bez usuwania nieśledzonych plików z innych projektów.Ponadto, jeśli chcesz usunąć nieśledzone pliki z innych projektów, szybsze (i mniej podatne na błędy) będzie zrzucenie niechcianego katalogu niż usunięcie niechcianych plików poprzez wybranie każdego z nich.
Nazwy oddziałów mogą zawierać znaki „/”
Możesz więc nazwać swoje oddziały jakoś
źródło
Chciałbym użyć
git submodules
.zobacz tutaj Repozytorium Git w repozytorium Git
Sugerowałbym, jak na luty 2015 r
Monorepos
źródło
git submodule add [url to git repo]
- git-scm.com/book/en/v2/Git-Tools-Submodules