Git odmawia zresetowania / odrzucenia plików

Mam projekt z pewnymi plikami js, których nie mogę zaktualizować. Uruchamiam OSX lokalnie, a moim serwerem zdalnym / stagingowym jest Linux (CentOS).

Zaraz po klonowaniu mojego projektu lokalnie zauważyłem, że mam wszystkie pliki ze statusem git modified. Nigdy ich nie modyfikowałem, więc próbowałem discard changes lub reset, ale pojawiają się ponownie. Zmiana, która jest w modyfikacji, polega na usunięciu wszystkich wierszy i dodaniu ich ponownie.

Nie jestem pewien, dlaczego tak się dzieje i jak to naprawić, aby mój status git był czysty, jak trzeba.

Oto kilka linijek z git status:

#   modified:   app/webroot/js/ckeditor/plugins/devtools/lang/el.js
#   modified:   app/webroot/js/ckeditor/plugins/devtools/lang/fa.js
#   modified:   app/webroot/js/ckeditor/plugins/devtools/lang/gu.js

UPDATE 1:

Udało mi się zatwierdzić powyższe pliki, ale serwer pośredniczący jest zablokowany, ponieważ nie będzie pobierał nowych edycji:

error: Your local changes to the following files would be overwritten by merge:
    app/webroot/js/ckeditor/_source/lang/ar.js
    app/webroot/js/ckeditor/_source/lang/bg.js
    app/webroot/js/ckeditor/_source/lang/bn.js
    app/webroot/js/ckeditor/_source/lang/cs.js
    ...
Aborting

Nie mogę commit / push ponieważ:

Updates were rejected because a pushed branch tip is behind its remote counterpart

Próbowałem:

git reset --hard

I

git stash
git stash drop

Ale nie działają, nic się nie dzieje.

UPDATE 2:

git diff daje:

The file will have its original line endings in your working directory.
warning: CRLF will be replaced by LF in app/webroot/js/ckeditor/_source/lang/fa.js.
The file will have its original line endings in your working directory.
warning: CRLF will be replaced by LF in app/webroot/js/ckeditor/_source/lang/gu.js.
The file will have its original line endings in your working directory.
...
Author: AD7six, 2013-08-30

4 answers

Normalizacja zakończeń linii

Zmiana, która jest w modyfikacji, polega na usunięciu wszystkich wierszy i dodaniu ich ponownie.

Dzieje się tak dlatego, że nowe linie są zmieniane między zatwierdzonymi plikami a plikami na dysku.

Github ma poręczną stronę opisującą jak radzić sobie z tego typu problemami, w skrócie (dla Linuksa/OSX), krok pierwszy to zmiana konfiguracji Gita tak, aby sortował zakończenia linii dla Ciebie:

git config --global core.autocrlf input

Następnie zatwierdź zakończenia linii normalizacja:

git rm --cached -r .
# Remove everything from the index.

git reset --hard
# Write both the index and working directory from git's database.

git add .
# Prepare to make a commit by staging all the files that will get normalized.
# This is your chance to inspect which files were never normalized. You should
# get lots of messages like: "warning: CRLF will be replaced by LF in file."

git commit -m "Normalize line endings"
# Commit

I wtedy zakończenia linii powinny być obsługiwane poprawnie. Więcej informacji można znaleźć na stronie pomocy na github lub w odpowiedniej sekcji dokumentów git formatowanie i spacje.

Rozwiązywanie konfliktów linux-maszyna

Serwer pośredniczący jest zablokowany, ponieważ nie będzie pobierał nowych edycji.

Komunikat o błędzie brzmi "Twoje lokalne zmiany w następujących plikach zostaną nadpisane przez merge:", co oznacza, że zawierają lokalne zmiany które powinny być popełnione lub odrzucone przed kontynuacją. Zakładając normalne użycie serwera pośredniczącego (nie ma żadnych celowych zmian), zmiany lokalne mogą zostać odrzucone. Na przykład wykonaj następujące czynności:

$ git fetch origin
# Retrieve updates

$ git reset --hard origin/master
# Forcibly change the current branch to match origin/master

Spowoduje to pobranie historii repozytorium bez aktualizowania kopii roboczej, a następnie zaktualizuje, aby dokładnie pasowała do gałęzi master w repozytorium. Zauważ, że ostatnie polecenie odrzuci wszystkie niezatwierdzone zmiany.

 97
Author: AD7six,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-21 17:30:56

Zawsze wspominałem o upewnieniu się, że Twoje core.autocrlf jest ustawione na false, jak w " Git : stuck repo używając stash po normalizacji crlf?"

git config --global core.autocrlf false

Również upewnij się, że nie masz .gitattributes Plik z dyrektywami eol, które próbowałyby przekonwertować końcówki linii.
Podstawową ideą jest: czy nadal widzisz ten Komunikat o błędzie, gdy upewniasz się, że nie ma automatycznej konwersji dowolnego rodzaju?


Ale na wszelki wypadek, rozważ również " Git rebase nie powiedzie się, "Twoje lokalne zmiany w następujących plikach zostaną nadpisane przez scalenie". Żadnych lokalnych zmian?"

Jestem na Macu, a ta niejasna zmiana konfiguracji wydawała się naprawiać wszystkie moje nieszczęścia związane z niestagowanymi zmianami, gdy ich nie było.

git config --global core.trustctime false
 11
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-22 20:24:41

Właśnie spędziłem 2 godziny (!) w tej samej kwestii z a .plik svg (skalarna grafika wektorowa), który zmieniał się po 'revert' bez mojej interwencji.

Tak więc plik wyświetla się jako zmodyfikowany w 'Git status' ; Przywracanie go powiedzie się, ale ciągle się zmienia, więc 'pull' ciągle zawodzi.... irytujące!

No luck with 'Git reset', 'git ignore', 'git untrack" itd...

W końcu rozwiązałem to usuwając Plik z mojego lokalnego systemu (nie 'Git delete' , tylko Shift + Delete) > > teraz 'pull' żądanie przechodzi, a plik jest pobierany ze zdalnego repozytorium.

Tak łatwo, że mogę płakać!

 7
Author: Naor Bar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-20 07:40:34

Ten problem wielokrotnie pojawiał się w repozytorium arkuszy znaków Roll20 na komputerze Ubuntu i mogłem go rozwiązać przez

#!/bin/sh

# Use in root dir of git repository
# Fixes some newline-related weirdness
git rm --cached -r .
git reset --hard

Ale to przestało rozwiązywać problem całkowicie dzisiaj i rozglądając się wokół Stack Overflow znalazłem winowajcę ich Pliku .gitattributes:

# Auto detect text files and perform LF normalization
* text=auto

Po git pull origin master, git status zwrócony:

On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   Star Wars Revised RPG/SWRRPG-updated.html

no changes added to commit (use "git add" and/or "git commit -a")

Rozwiązaniem było usunięcie * text=auto linii zgitattributes:

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   .gitattributes

no changes added to commit (use "git add" and/or "git commit -a")

Zmiany na .gitattributes mogą zostać odrzucone, a Git nadal będzie bądź zadowolony.

Edit +1D:gitattributes" trick " dzisiaj, ale nie git status przed odrzuceniem .gitatt przypisuje zmiany. Bez powodu oczywistym dla mnie (może buforowanie git status?), a git status następnie zwrócił to ponownie:

On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   Star Wars Revised RPG/SWRRPG-updated.html

no changes added to commit (use "git add" and/or "git commit -a")

Robi to ponownie, ale z git status Inbetween zadziałało.

 4
Author: Kreuvf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-09 16:38:54