2015-03-17 11 views
10

Kiedy zrobićGit cofnąć wszystkie zmiany, które są ignorowane przez diff git -w

git diff -w file_name 

widzę tylko dodanych linii, ale kiedy usunąć -w widzę dużo wyjęta i ponownie dodanych linii zbyt.

Chcę zmienić plik, tak aby wyświetlać tylko zmiany, które nie są ignorowane przez opcję -w.

Czy jest na to polecenie?

+0

Może za pomocą skryptu podobnego do haka poprzedzającego zatwierdzenie, o którym wspomniałem w http://stackoverflow.com/a/592014/6309? – VonC

+0

@VonC: Byłbym bardzo wdzięczny, gdybyś mógł zadowolić ten skrypt dla nas. –

+0

@Abhishek masz na myśli tak jak ten? https://github.com/imoldman/config/blob/master/pre-commit.git.sh – VonC

Odpowiedz

0

Można zrobić

git diff --no-color > stage.diff && git apply -R stage.diff && git apply --whitespace=fix stage.diff && rm -f stage.diff 

Jeśli nie popełniły żadnych zmian.

+0

To nie działa dla mnie. Otrzymuję wiele błędów "nie powiodło się". –

5

jupp0r był na dobrej drodze. Najpierw, cd do katalogu głównego repozytorium. Następnie:

git commit -a -m 'Backup commit.' 
git branch pre-patch 
git reset --hard HEAD~ 
git diff --patch -w HEAD pre-patch > patch.diff 
git apply patch.diff 

Nie jestem pewien, czy to zadziała w przypadku zmian binarnych. Jeśli nie, możesz je wcześniej osobno zatwierdzić. Jeśli ten proces się nie powiedzie, Twój kod znajduje się w gałęzi pre-patch.

Co to robi:

  • Tworzy popełnić i oddział przechowywać pełen zmian. To również służy jako kopia zapasowa.
  • Powoduje cofnięcie o krok przed tymi zmianami.
  • Pobiera "diff -w" ze starego kodu do nowego kodu, sformatowanego jako łatka.
  • Umożliwia zastosowanie poprawki.

Uwaga: jeśli już wprowadziłeś zmianę i chcesz ją zmodyfikować, po prostu pomiń pierwszy krok.