Когда вы работаете с несколькими разработчиками над одним и тем же проектом, вам необходимо правильно управлять версиями и синхронизацией файлов. Для этого Git - лучшее программное обеспечение для отслеживания изменений в любом файле. Он широко используется для управления работой разработчиков, работающих с одним и тем же фрагментом кода / файлом. Конечная цель - повышение скорости и поддержка распределенных рабочих процессов.

Работать с Git непросто, пока вы не получите полностью функциональное представление о нем. Тем не менее, есть вероятность, что вы можете столкнуться с типичными ошибками в любое время. Давайте обсудим некоторые из них:

1. фатальный: не репозиторий git (или любой из родительских каталогов): .git

Когда вы пытаетесь выполнить команду git вне репозитория git, она выдаст ошибку фатальная: не репозиторий git. Это просто указывает на то, что он не может найти Git в определенном месте для выполнения команды Git. Есть два способа исправить эту ошибку:

  1. Найдите правильный каталог и перейдите к нему

Вы можете просто запустить ls (для каталога Windows), чтобы узнать. В нем будут перечислены все каталоги и файлы, чтобы вы могли проверить, правильный ли он.

  1. Инициализировать текущий каталог с помощью git init

Он предоставит ссылку на Git, и вы сможете выполнять все операции Git. Другой способ - клонирование существующего репо.

2. ошибка: ветка "remotes / origin / ABC" не найдена.

Это распространенная ошибка, которая возникает, когда вы запускаете неправильную команду для удаления удаленной или локальной ветки git. Например, вы запускаете `git branch -d remotes / origin / ABC`, но он выдаст данную ошибку, если это ветвь удаленного происхождения. Для этого вам необходимо знать три типа веток:

  1. Местное отделение ABC.
  2. Ветвь удаленного происхождения ABC.
  3. Локальный источник ветки удаленного отслеживания / 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" будет перезаписан слиянием.

Когда вы вносите локальные изменения в тот же файл, который был изменен в удаленном репо, и пытаетесь объединить его локально, вы можете получить такую ​​ошибку.

Есть три способа решить эту ошибку:

  1. Использовать - жесткий вариант при объединении.

Если вы не хотите вносить локальные изменения и вам нужны только удаленные изменения, вы можете воспользоваться этой опцией. Если вы используете - hard, все ваши изменения и локальная фиксация будут потеряны.

git reset --hard HEAD
git pull
  1. Сохраните локальные изменения / сделайте резервную копию в другом филиале.

Здесь первый вариант - вы фиксируете свои изменения и отправляете их в удаленное репо.

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
  1. Используйте команду 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]

Таким образом, когда вы пытаетесь вставить ветку без головы, это приведет к ошибке.

Для этого есть несколько решений:

  1. Используйте чистый репозиторий

Когда вы закончите с рабочим каталогом, переместите его в чистый репозиторий, чтобы не загромождать репозиторий. Вы можете клонировать его в любое время:

mv repo repo.old
git clone --bare repo.old repo
  1. Отправить в ветку без подтверждения

Если вы хотите проверить код ветки ‹remote›, вы можете создать новую ветку и отправить свои изменения через нее. Предположим, вы установили удаленный `origin` в своем локальном репо и находитесь в главной ветке. Затем нужно запустить:

git push origin master:master+machineN
  • Чтобы использовать эту ветку, вам необходимо объединить ее с исходным удаленным репо:
git merge master+machineN