Chciałem przesłać różnicę do recenzji dla projektu Open Source.
Mam kod przy użyciu SVN (z terminala, Ubuntu). I dokonałem drobnych zmian w kilku plikach. Teraz jest tylko jedna zmiana, którą chcę zgłosić. Pozostałe zmiany, które wprowadziłem, dotyczyły debugowania i nie są już wymagane.
Wygenerowałem diff używając svn di > ~/os/firstdiff.diff
Więc moje pytanie: jak odrzucić moje lokalne zmiany?
Czy istnieje na to sposób SVN? Jeśli nie, będę musiał przejść do każdego pliku i usunąć wszystkie moje zmiany. Następnie wygenerowałbym nowy plik różnicowy i przesłał go.
Musisz cofnąć wszystkie zmiany za pomocą polecenia svn revert :
svn revert foo.c
svn revert --recursive .
źródło
svn revert --recursive .
Pomaga mi dużo .--recursive
parametr odwraca wszelkie lokalne zmiany i to jest pytanie.Aby odrzucić zmiany lokalne w jednym określonym pliku:
Aby odrzucić zmiany lokalne w jednym określonym folderze:
źródło
Proste
svn revert
było wystarczające dla oryginalnego plakatu. Jednak prostesvn revert
nie zrobi tego w bardziej ogólnym przypadkuSugestia @ ErichBSchulza dotycząca zastosowania
git add -p
jest bardzo rozsądna i w takim przypadku ma znacznie bardziej ogólne zastosowanie. W odpowiedzi brakowało tylko niektórych szczegółów. Zakładając, że bieżącym katalogiem jest katalog, w którym chcesz utworzyć łatkę do udostępnienia, możesz zrobić coś takiego:Pobierz dziewiczą wersję z subversion do innego katalogu (wybierz nazwę katalogu, która nie istnieje, tutaj używając podkatalogu
TMP/
).Wykorzystując tę nieskazitelną kasę svn jako podstawę, uruchom repozytorium git, ignorując katalogi .svn; zatwierdzić wszystko w svn head do tymczasowego repozytorium git
Skopiuj nowo przygotowane metadane repozytorium git do oryginalnego katalogu roboczego; ponieważ dziewiczy katalog kasowania subversion nie jest potrzebny, możesz się go pozbyć. Twój katalog roboczy jest teraz zarówno repozytorium git, jak i subversion:
Teraz możesz użyć potężnego i wygodnego,
git add -p
aby interaktywnie wybrać dokładnie to, co chcesz udostępnić, i zatwierdzić je w swoim repozytorium git. Jeśli chcesz dodać pliki do zatwierdzenia, zrób to równieżgit add <file-to-add>
wcześniejgit commit
Za pomocą zatwierdzenia przygotuj łatkę, którą chcesz udostępnić. W tym celu można również użyć
git diff HEAD^..HEAD
lubgit format-patch
(tego ostatniego można użyć do bezpośredniego przygotowania wiadomości e-mail, które zostaną wysłane z poprawką lub wieloma łatami):Aby pozbyć się metadanych git, po prostu zrób
rm -rf .git/
. Jeśli planujesz kontynuować hakowanie przy użyciu oryginalnego katalogu roboczego, możesz nadal używaćgit
do zarządzania lokalnymi zmianami. W takim przypadku prawdopodobnie skorzystasz z inwestycji w naukę obsługigit svn
.Uwaga: jeśli znasz się na
git
tym, improwizowanie jest raczej banalne. W przeciwnym razie wygląda to nieco niechlujnie. Możesz uogólnić to podejście, pisząc skrypt z tych kroków, aby zaimplementować „interaktywne zatwierdzenie” lub „interaktywne tworzenie łatek” dla svn, którego można użyć bez znajomości git.źródło
Możesz użyć
Publikując swój plik różnicowy, nie zapomnij powiedzieć wersji, z którą się różnisz.
Gdy inni odpowiedzieli, możesz również używać
svn revert
ostrożnie. To zależy, czy chcesz zachować lokalne zmiany do przyszłej pracy, czy nie ...źródło
revert
ciągle wprowadzać zmian. Więc skorzystam z twojej drogi w przyszłości.Przejdź do katalogu głównego tego repozytorium i uruchom następujące polecenie
źródło
svn revert -R .
może być krótszyMożesz użyć polecenia commit w pliku, który chcesz umieścić, i użyć polecenia svn revert, aby odrzucić pozostałe zmiany lokalne
źródło