2012-04-05 17 views
6

Szukam prostego rozwiązania, aby utworzyć archiwum ostatnio zmienionego pliku.Użycie Git do utworzenia archiwum zmienionych plików

otrzymuję tę prostą komendę z google

git archive -o update.zip HEAD $(git diff --name-only HEAD^) 

Kiedy uruchamiam go w GIT krzak, to powtarza mówiąc śmiertelne: nie jest prawidłową nazwą obiektu

+1

Które polecenie powoduje, że pochodzi? (Jakie są dane wyjściowe 'git diff - only-only HEAD ^'? Jesteś w ważnym repozytorium, prawda?) – Cascabel

+0

git diff - only-only HEAD^wyświetli listę zmienionych plików, które chciałbym archiwum. Przetestowałem to polecenie za pomocą repozytorium testów, działa ono tak jak zostało usunięte. To nie działa w moim prawdziwym repozytorium projektu asp.net – Kuroro

+0

Podejrzewam, że niektóre nie mogą się archiwizować? dwójkowy? – Kuroro

Odpowiedz

11

używam this answer w ten przypadek, który mówi mi, że

tar czf changed-files.tar.gz `git diff --name-only [diff options]` 

Na przykład, aby utworzyć e archiwum zawierające pliki zmieniły się w ciągu ostatnich czterech zmian, zrobiłbym

tar czf changed-files.tar.gz `git diff --name-only HEAD~4..` 

Zakłada –   oczywiście   – że HEAD~4 czy rzeczywiście istnieje.

+0

eckes, Dziękujemy, że możesz wskazać, że HEAD może używać w ten sposób. – Kuroro

+0

-1: To rozwiązanie działa tylko wtedy, gdy pliki w obrębie diff istnieją w HEAD, niezależnie od tego, jakie zatwierdzenie wybierzesz. –

1

Używam tego alias o nowe pliki nie w głowicy:

alias gittar='tar -czvf working-files.tgz \ 
       $(git status -s | sed -r "s/..(.*)/\1 /")' 
Powiązane problemy