-
Notifications
You must be signed in to change notification settings - Fork 26
Conflicts Git
Q: Как вернуть потерянный коммит (и указатель HEAD) после git rebase & git push -f
или git chekout/branch
?
A: Для восстановления воспользуйтесь последними записями локального журнала.
- Команда просмотра локального журнала изменений
git reflog
. В первой колонке будет указан SHA коммита. - Использовать комманду
git reset --hard <SHA1>
с SHA коммита, который нужно восстановить в локальном репозитории. Требуется выбрать коммит который является продолжением ветви. - На следующем этапе можно изменить комментарий коммита
git commit --amend
- Отправить коммит в удаленный репозиторий командой
git push origin
При сохранении файла из текстового редактора "Блокнот" в кодировке UTF‑8 записываются служебные символы BOM. Сторонние приложения как
dos2unix
могут удалить BOM, но и меняют символы переноса строки Windows с CRLF на LF.
A: Удаление BOM без замены символа переноса строки будет выполнять клиентский хук.
-
Нужно сохранить клиентский хук в директорию
<REPO>\.git\hooks
без расширения.sh
Хук будет выполняться перед сохранением изменений (commit). -
Для Windows необходимо задать настройку
git config --global core.autocrlf true
A: Когда автор не задал свойства бывает невозможно проследить дальнейшие изменения.
- Сначала нужно узнать символы перевода строки (line‑ending) в репозитории
по команде
git ls-files -mo --eol
. Атрибут-mo
выберет только изменённые файлы. - Далее нужно открыть файл .gitattributes и прописать свойство
eol
# для всех файлов
*.js text eol=LF
# или для конкретного файла
<FILE>.js text eol=LF
- Если символы перевода строки (line‑ending) будут заменены, то после добавления файлов в индекс в консоли появится предупреждение
warning: CRLF will be replaced by LF in <FILE>.
The file will have its original line endings in your working directory.
- По завершению нужно сохранить изменения (commit); до этого изменения нельзя будет увидеть.
Репозиторий для практики: https://github.com/teamtam/git-line-endings
||
Important
- Wiki по работе с GIT и IDE. Заметки с решением мелких задач.