2012-01-26 10 views
11

Potrzebuję wyeksportować do archiwum zestaw zatwierdzeń w repozytorium git. Jak to zrobić? Używając svn, mógłbym wybrać zatwierdzenia i eksportować do zip.Git: pobranie określonego zatwierdzenia

+0

masz na myśli różnice eksportowe tych zobowiązań? – CharlesB

+0

Tak, przykro, teraz zdaję sobie sprawę, że nie było to łatwe do zrozumienia. Potrzebuję archiwum z większością plików aktualizacji między 2 zatwierdzeniami. – user1170896

Odpowiedz

18

Aby eksportować repozytorium do pewnego popełnić:

git archive -o export.zip <COMMIT>. Zastąp numer <COMMIT> numerem zatwierdzenia, który chcesz wyeksportować.

Aby utworzyć plaster pomiędzy dwoma zobowiązuje:

git diff COMMIT1 COMMIT2 > patch.txt

+0

Chociaż to polecenie wyeksportuje każde zatwierdzenie w repozytorium, dopóki nie zostanie znaleziony określony commit. Potrzebuję wyeksportować tylko określone zatwierdzenia. Tak jak łatka. – user1170896

+0

Odpowiedź skorygowana. – tobiasbayer

+0

ok ... Ale łatka jest przeznaczona do użycia w innym repozytorium. Zawiera znaczniki, aby zrozumieć, gdzie dokonano modyfikacji. Potrzebuję archiwum z tylko zmodyfikowanymi (zaktualizowanymi) plikami między określonymi zatwierdzeniami. – user1170896

10

Git posiada wygodny sposób tworzenia poprawkę dla każdego popełnić. Chociaż pierwotnie miało to na celu formatowanie poprawek, aby można je było przesłać pocztą e-mail, są one poręcznym sposobem na wyodrębnienie zestawu zmian.

Wymagane polecenie to git format-patch, a sposób zastosowania tych sformatowanych poprawek z powrotem do git jest zgodny z poleceniem git am.

Na przykład, jeśli masz dwie rewizje C1 i CN, które chcesz wyeksportować jako zestaw łatek git wystarczy:

git format-patch -k C1..Cn 

To stworzy zestaw ponumerowanych łat (w bieżącym katalogu). Każda łatka będzie różnicą zatwierdzenia, a także informacjami o zatwierdzeniu (tytuł, komentarz, autor, data itd.).

To znacznie więcej niż zwykły plik różnic między dwoma zatwierdzeniami.

+0

Myślę, że musi to być 'git format-patch -k C1 ~ ..Cn' zamiast' git format-patch -k C1..Cn', ponieważ lewa strona zakresu jest _wyłączna_, więc musisz podać _parent_ ('~') pierwszego zatwierdzenia. – nh2