2013-06-02 10 views

Odpowiedz

3

Można też spróbować:

git update-index --skip-worktree -- file 
# to cancel it: 
git update-index --no-skip-worktree -- file 

Należy oprzeć git reset --hard. (zobacz this answer na temat używania podwójnego łącznika "--")
Zobacz ten blog post.

  • Wygląda skip-worktree jest bardzo stara się zachować swoje dane lokalne. Ale to nie przeszkadza Ci uzyskać zmiany w górę, jeśli jest to bezpieczne. Plus git nie resetuje flagi przy ciągnięciu. Ale ignorowanie polecenia "resetuj - trudne" może stać się paskudną niespodzianką dla programisty.
  • Flaga może zostać utracona podczas operacji przeciągania, a lokalne zmiany w takich plikach nie wydają się ważne dla git.
    Założenie niezmienione zakłada, że ​​programista nie powinien zmieniać pliku. Jeśli plik został zmieniony - zmiana nie jest ważna. Ta flaga służy do zwiększania wydajności niezmodyfikowania folderów, takich jak SDK. Ale jeśli obietnica zostanie złamana, a plik zostanie faktycznie zmieniony, git zmieni flagę, aby odzwierciedlić rzeczywistość. Prawdopodobnie w porządku jest posiadanie niespójnych flag w ogólnie nie przeznaczonych do zmiany folderach.

Z drugiej strony, skip-worktree przydaje się, gdy instruujesz Git, aby nie dotykał konkretnego pliku w historii. Jest to przydatne w przypadku już śledzonego pliku konfiguracyjnego. W głównym repozytorium znajduje się konfiguracja gotowa do produkcji, ale chciałbyś zmienić niektóre ustawienia w konfiguracji, aby móc wykonać lokalne testy. I nie chcesz przypadkowo sprawdzić zmian w takim pliku, aby wpłynąć na konfigurację produkcyjną. W takim przypadku skip-worktree tworzy doskonałą scenę.

+0

Dzięki, to działa! Jak mogę usunąć tę flagę? – freemanoid

+1

@freemanoid po prostu 'git update-index --no-skip-worktree - aFile' – VonC

+0

Hmm, nie znalazłem tego podczas patrzenia przez człowieka, ale było tam. Więc '' 'git update-index --no-skip-worktree my_file''' działa. – freemanoid

5

Możesz użyć git stash, aby tymczasowo przechowywać zmiany, a następnie pobrać je później - patrz: Pro Git chapter on stashing.

+0

Tak wiem o '' 'git stash''' ale nie chcę przechować zmian za każdym razem. – freemanoid

+3

@freemanoid, ok, udawajmy, że twoje wyimaginowane polecenie 'git preserve-this-and-these-changes' istnieje; następnie za każdym razem, gdy chcesz zachować coś, aby przetrwać "git reset --hard", musisz wywołać to wymyślone polecenie, a następnie wywołać kolejne polecenie, aby "cofnąć" ten stan zachowania, który ustawił na wybranych plikach. Teraz, jak to by się różniło od 'git stash' /' git stash pop'? – kostix

1

Jeśli nie chcesz, aby te zmiany zostały zatwierdzone, ale zawsze będą potrzebne lokalnie, rozważ utworzenie i zatwierdzenie skryptu lub pliku poprawki dla lokalnych zmian. Następnie możesz przechowywać i dokumentować zmiany, a także łatwo je stosować po twardym resecie.

Jeśli masz zmiany specyficzne dla twojego środowiska, warto je przekazać do pliku konfiguracyjnego.

Powiązane problemy