Когда вы работаете с несколькими разработчиками над одним и тем же проектом, вам необходимо правильно управлять версиями и синхронизацией файлов. Для этого Git - лучшее программное обеспечение для отслеживания изменений в любом файле. Он широко используется для управления работой разработчиков, работающих с одним и тем же фрагментом кода / файлом. Конечная цель - повышение скорости и поддержка распределенных рабочих процессов.
Работать с Git непросто, пока вы не получите полностью функциональное представление о нем. Тем не менее, есть вероятность, что вы можете столкнуться с типичными ошибками в любое время. Давайте обсудим некоторые из них:
1. фатальный: не репозиторий git (или любой из родительских каталогов): .git
Когда вы пытаетесь выполнить команду git вне репозитория git, она выдаст ошибку фатальная: не репозиторий git. Это просто указывает на то, что он не может найти Git в определенном месте для выполнения команды Git. Есть два способа исправить эту ошибку:
- Найдите правильный каталог и перейдите к нему
Вы можете просто запустить ls (для каталога Windows), чтобы узнать. В нем будут перечислены все каталоги и файлы, чтобы вы могли проверить, правильный ли он.
- Инициализировать текущий каталог с помощью git init
Он предоставит ссылку на Git, и вы сможете выполнять все операции Git. Другой способ - клонирование существующего репо.
2. ошибка: ветка "remotes / origin / ABC" не найдена.
Это распространенная ошибка, которая возникает, когда вы запускаете неправильную команду для удаления удаленной или локальной ветки git. Например, вы запускаете `git branch -d remotes / origin / ABC`, но он выдаст данную ошибку, если это ветвь удаленного происхождения. Для этого вам необходимо знать три типа веток:
- Местное отделение ABC.
- Ветвь удаленного происхождения ABC.
- Локальный источник ветки удаленного отслеживания / ABC, который отслеживает удаленную ветку ABC.
У всех трех есть собственная команда для удаления определенных типов веток.
Чтобы удалить локальную ветку, выполните:
> git branch -d branch_name
> git branch -D branch_name
Здесь параметр -d является псевдонимом для - delete, который безопасен в использовании, поскольку он проверяет, что все изменения объединены? Если да, то он сольется, иначе нет. Второй вариант - вы можете использовать параметр -D. Это псевдоним для - delete - force, который удаляет ветку «независимо от ее объединенного статуса». [Источник: man git-branch]
Чтобы удалить эту фактическую удаленную ветку, выполните следующую команду:
git push origin --delete ABC
Здесь вам не нужно писать remotes / origin / ABC, потому что ветки с таким именем не существует.
3. ошибка: неотслеживаемый файл рабочего дерева "xyz / Filename" будет перезаписан слиянием.
Когда вы вносите локальные изменения в тот же файл, который был изменен в удаленном репо, и пытаетесь объединить его локально, вы можете получить такую ошибку.
Есть три способа решить эту ошибку:
- Использовать - жесткий вариант при объединении.
Если вы не хотите вносить локальные изменения и вам нужны только удаленные изменения, вы можете воспользоваться этой опцией. Если вы используете - hard, все ваши изменения и локальная фиксация будут потеряны.
git reset --hard HEAD
git pull
- Сохраните локальные изменения / сделайте резервную копию в другом филиале.
Здесь первый вариант - вы фиксируете свои изменения и отправляете их в удаленное репо.
git add . //It will add all tracked files
git commit =m "Message"
git push origin BRANCH_NAME
Или вы можете просто перенести локальные изменения в другую ветку, если не хотите передавать их удаленно.
git checkout master
git branch new-branch-to-save-current-commits
git fetch --all
git reset --hard origin/master
- Используйте команду Git stash.
Он сохранит все ваши локальные изменения до последнего коммита.
git stash
git pull
4. ошибка: не удалось отправить некоторые ссылки на «www.abc.com/[namepting/[repo visible.git»).
Когда вы фиксируете локальное изменение и пытаетесь отправить его в удаленную ветку, не имеющую ссылок, Git выдает такую ошибку.
Например, вы пытаетесь протолкнуть изменения, запустив:
git push origin master
Однако это не удается, потому что ведущему устройству не назначена ссылка. или решение, вам нужно проверить ссылки, выполнив команду:
git show-ref
Он покажет ссылки, которые у вас есть для вашей ветки. Попробуйте проверить ссылку на свою ветку, которую вы хотите отправить. Если это мастер, это будет похоже на refs / Heads / master.
Затем вы можете попробовать протолкнуть его через:
git push origin HEAD:master
Это означает, что вы хотите отправить локальный HEAD на удаленный эталонный мастер.
5. фатальный: ошибка аутентификации
Это обычная ошибка аутентификации, которую Git выдает, когда не распознает ваш доступ к Git. Если вы включили двухфакторную аутентификацию в своей учетной записи поставщика услуг Git (например, GitLab, GitHub или bitbucket), вы не сможете отправлять сообщения через HTTPS (используя имя пользователя и пароль). В этом случае вам понадобится токен доступа.
Вы можете сгенерировать его в настройках вашего поставщика услуг. После этого вам нужно использовать токен в качестве пароля, чтобы протолкнуть его по HTTPS. Используйте свое имя пользователя как обычно.
Также проверьте настройки репозитория и установите для него HTTPS:
git remote -v
git remote remove origin
git remote add origin [email protected]:user/repo.git
6. ошибка: отказ в обновлении извлеченной ветки
Современная версия Git выдает подобную ошибку, если вы пытаетесь обновить ветку, которая была извлечена. Основная причина, по которой вы не можете попасть в такую ветку, заключается в том, что она будет связываться с владельцем / пользователем этого репо, что приведет к потере данных и истории.
Когда какая-либо ветка извлечена, предстоящие коммиты добавляют новую ветку с головкой текущей ветки в качестве ее родителя.
A ← B
↑
[HEAD,branch1]
будет
A ← B ← C
↑
[HEAD,branch1]
Если кто-то попытается проникнуть в эту ветку посередине, ветка сочтет это отделенной головкой:
A ← B ← X
↑ ↑
[HEAD] [branch1]
Теперь пользователя нет в ветке 1, поэтому все предстоящие коммиты будут зависать:
[HEAD]
↓
C
↙
A ← B ← X
↑
[branch1]
Таким образом, когда вы пытаетесь вставить ветку без головы, это приведет к ошибке.
Для этого есть несколько решений:
- Используйте чистый репозиторий
Когда вы закончите с рабочим каталогом, переместите его в чистый репозиторий, чтобы не загромождать репозиторий. Вы можете клонировать его в любое время:
mv repo repo.old
git clone --bare repo.old repo
- Отправить в ветку без подтверждения
Если вы хотите проверить код ветки ‹remote›, вы можете создать новую ветку и отправить свои изменения через нее. Предположим, вы установили удаленный `origin` в своем локальном репо и находитесь в главной ветке. Затем нужно запустить:
git push origin master:master+machineN
- Чтобы использовать эту ветку, вам необходимо объединить ее с исходным удаленным репо:
git merge master+machineN