На этой странице даются решения, которые подходят в большинстве случаев командной разработки. Однако, нужно учитывать, что в твоей команде может быть принят другой подход и некоторые решения для тебя могут оказаться неправильными.
Ознакомься с различными рабочими процессами при работе с git, чтобы лучше понимать идею конкретных дающихся решений.
Если твоя работа была связана с добавлением/удалением/обновлением зависимостей, тогда да. Нужно добавить в коммит файлы package.json
и package-lock.json
.
Допустим, ты не изменял зависимости, а просто установил их командой npm install
, но файл package-lock.json
все равно модифицировался. Такое может произойти, если файл package-lock.json
из репозитория "запаздывает" от установленных ранее зависимостей.
В таком случае лучше закоммитить package-lock.json
отдельным коммитом, обновить его в репозитории и уведомить об этом других участников разработки.
Конфликт появился потому что после открытия твоего PR на удаленной ветке произошли изменения. К примеру был принят другой PR, затрагивающий тот же самый файл.
На практике не рекомендуется удалять коммит, который был выгружен и стал доступен другим участникам разработки. Это создает больше проблем, чем решает. Самое лучшее в данном случае – это выгрузить новый коммит с исправлениями. Данный совет актуален практически всегда.
Если по какой-то причине коммит все же нужно удалить, то ищи ответ в этом вопросе на Stackoverflow.
Допустим, что твоя ветка называлась feature
и ты делаешь Pull Request на ветку main
. Удаленный репозиторий называется origin
. В этом случае общий алгоритм решения конфликта будет таким:
Убедись, что рабочая директория чистая:
git status
Состояние не должно иметь модифицированные или новые файлы.
Переключись на ветку, на которую делаешь Pull Request:
git switch main
Стяни последние изменения этой ветки с удаленного репозитория:
git pull origin main
Сделай слияние ветки main
на свою ветку feature
:
git switch feature
git merge main
Процесс слияния остановится с уведомлением о конфликте. Открой в редакторе файлы, в которых есть конфликт и исправь их.
Сделай новый коммит, добавив в индекс исправленный файлы:
git add файл1 файл2 файл3
git commit -m "Разрешен конфликт слияния между main и feature"
Осталось запушить новый коммит на ветку feature
:
git push origin feature
В этом случае все предыдущие шаги актуальны, кроме стягивания изменения. Главный репозиторий будет называться иначе, чем origin
(например upstream
).
Стянуть обновления можно будет так:
git pull upstream main
Если забыл точное название главного репозитория, то узнать о нем можно командой
git remote -v
Находясь на той же ветке, с которого делал коммит выполни следующую команду
git reset --soft HEAD~1
Эта команда вернет состояние рабочей директории на момент, который был перед самым последним коммитом.
Набери команду git status
для просмотра текущего состояния. Все файлы, которые были закомичены в последнем коммите должны находиться в режиме staged (будут зеленого цвета).
Убери ненужные файлы из staged следующей командой:
git restore --staged путь-к-файлу
Сделай коммит заново (текст коммита также придется повторить).
Если с текущей ветки ранее был открыт pull request, то исправления нужно выгрузить с флагом -f
, например:
git push origin my-branch -f
git log --author="твой никнейм"
Команда покажет все коммиты автора на текущей ветке.