2012-07-31 17 views
12

Właśnie znaleźć git poddrzewa narzędzie, które jakiś czas temu stał się częścią głównego git repo https://github.com/apenwarr/git-subtree/Jaka jest różnica między git poddrzewa scalania i git-poddrzewie

Jednak nie w pełni zrozumieć, co funkcjonalność czy to narzędzie zapewnia ponad istniejącym już "git read-tree" + "git merge -s subtree". Czy jest to jedyna cecha git-subtree - czy wynikowa historia commitów wygląda lepiej, czy ma więcej funkcji, których przeoczyłem?

Odpowiedz

12

Polecenia, które opisujesz, czytają poddrzewo w repozytorium. Komenda git-subtree ma wiele więcej opcji, jak opisana przez the documentation. Między innymi można (adnotacjami dla uproszczenia):

add:: 
    Create the <prefix> subtree by importing its contents 
    from the given <refspec> or <repository> and remote <refspec>. 
merge:: 
    Merge recent changes up to <commit> into the <prefix> 
    subtree. 
pull:: 
    Exactly like 'merge', but parallels 'git pull' in that 
    it fetches the given commit from the specified remote 
    repository. 
push:: 
    Does a 'split' (see above) using the <prefix> supplied 
    and then does a 'git push' to push the result to the 
    repository and refspec. This can be used to push your 
    subtree to different branches of the remote repository. 
split:: 
    Extract a new, synthetic project history from the 
    history of the <prefix> subtree. The new history 
    includes only the commits (including merges) that 
    affected <prefix>, and each of those commits now has the 
    contents of <prefix> at the root of the project instead 
    of in a subdirectory. Thus, the newly created history 
    is suitable for export as a separate git repository. 

Istnieją również różne flagi, że pomoc i manipulować wyżej. Uważam, że wszystkie te opcje były wcześniej dostępne za pośrednictwem łańcuchów poleceń hydraulicznych. git-subtree.sh po prostu je otacza i znacznie ułatwia ich wykonanie.

5

Jeśli spojrzysz na stary kod poddrzewa, zanim został on dodany do git jako moduł contrib: https://github.com/apenwarr/git-subtree/blob/master/git-subtree.sh widać, że narzędzie poddrzewa git jest naprawdę bardziej zaawansowanym opakowaniem wokół strategii łączenia git podrzędnych niższego poziomu.

W zasadzie wykorzystuje te strategie w rozsądny sposób, ułatwiając zarządzanie pod-drzewem. Szczególnie - rzeczy są naprawdę przydatne.

Powiązane problemy