2013-08-30 24 views
17

W repozytorium A folder sub jest dołączony jako poddrzewo git repozytorium S - wskazujące na gałąź master.git subtree: czy można zmienić gałąź/ścieżkę poddrzewa w rozwidlonym repozytorium?

Mam rozwidlone repozytorium A w F. Teraz chcę zrobić jedną z następujących czynności w F:

  • zmiany sub użyć innego oddziału S (tj develop oddział)
  • czyli zmiana sub użyć innego repozytorium całkowicie

Czy jedno z nich jest możliwe, a jeśli tak, to w jaki sposób? Czy będą jakieś skutki uboczne, o których powinienem wiedzieć?

Jak mogę się upewnić, że zmiana mojego poddrzewa nie zostanie zaktualizowana w repozytorium A po scaleniu moich zmian (żądanie pobrania)? Mam na myśli, oprócz izolowania zatwierdzeń.

Odpowiedz

28

Jeśli użyłeś git subtree (i nie git submodule) do utworzenia poddrzewa, to po prostu normalny katalog. Aby przełączyć ją do innej gałęzi, po prostu ją usuń i odtwórz poddrzewo z nowego oddziału. Jest to:

git rm <subtree> 
git commit 
git subtree add --prefix=<subtree> <repository_url> <branch> 

To powinno działać bez problemów.

+0

i to nie będzie zsynchronizowane w górę strumienia? Sądzę, że wtedy spróbuję. – LearnCocos2D

+0

Nie zostanie zsynchronizowane w górę strumienia. '' nie jest nigdzie zapisane; jest po prostu używany do polecenia, aby wiedzieć, skąd pobrać pliki. Następnie otrzymasz normalny subdir w repozytorium. – elmart

+0

Ach ok, widzę, że teraz ... subtree po prostu "kopiuje" stan zatwierdzenia innego repozytorium, tak jakbym go skopiował ręcznie (ale zachowując historię commitów, a co nie). To nie zmienia pierwotnego problemu z niezsynchronizowaniem określonego folderu między dwoma repozytoriami, ale wystarczająco odpowiada na to pytanie. – LearnCocos2D