Zastrzeżone, podejrzewam, jestem tylko kilka dni przed wami learing o poddrzewie :-)
Jeśli tylko przy użyciu git subtree push
nie jesteś podając poddrzewa wystarczająco dużo informacji, aby wyodrębnić i popchnij swoje zmiany.
Jeśli prawidłowo sklonowałeś repo, podtekst będzie już tam. Subtree musi zostać poinformowane, z którego subtree chcesz przejść (nawet jeśli masz tylko jedną), a także musi wiedzieć, do czego się popchnąć - w szczególności, nie chcesz naciskać na repo najwyższego poziomu. Stąd, chcesz coś takiego:
git subtree push --prefix=lib [email protected]:arges-github/lib.git master
Oczywiście repo i refspec powinny być zmienione, aby dopasować swoje repo.
Jeśli chcesz spojrzeć na to, co dzieje się tutaj (i to nie pomaga) subtree faktycznie dzieli zmiany, które wpływają na pliki wewnątrz poddrzewa do innego oddziału, a następnie wypycha że do repo poddrzewa. Aby tak się stało, należy subtree split
git subtree split --rejoin --branch=shared-changes --prefix=lib
następnie przyjrzeć się branży już wykonane:
git checkout lib-changes
i wcisnąć je ręcznie
git push [email protected]:arges-github/lib.git master
Jeśli tak nie jest działa to może być, że nie połączyłeś poddrzewa z repo. Gdy dodasz poddrzewo:
git subtree add --squash --prefix lib [email protected]:arges-github/lib.git master
musisz również scalić poddrzewo i przywrócić je do repozytorium najwyższego poziomu.
git subtree pull --squash --prefix lib [email protected]:arges-github/lib.git master
git push
Jak dodać poddrzewo do projektu najwyższego poziomu? Zrobiłeś tylko katalog i sklonowałeś go? –
Cześć! Dodałem poddrzewo do mojego projektu na najwyższym poziomie, używając "git subtree add". Może moje pytanie nie jest wystarczająco jasne: jeśli sklonuję repo na innej maszynie, mam wszystkie pliki projektów plus poddrzewo "lib". Teraz zmienię coś w obrębie podtekstu "lib" w klonowanym repo, nie mogę przekazać zmian z powrotem do zdalnego serwera za pomocą "git subtree push", to jest mój problem. – arge
Czy odpowiedź była pomocna? –