Не работает git fetch

Содержание
  1. git fetch работает, но ветка checkout не работает
  2. 5 ответов
  3. Самые типичные ошибки и вопросы, связанные с Git, и удобные способы их решения
  4. Ошибка в комментарии к коммиту
  5. Как отменить последний коммит?
  6. Удалить ветку на сервере
  7. В чём разница между «git pull» и «git fetch»?
  8. Как отменить «git add» до коммита?
  9. Как разрешать конфликты слияния?
  10. Удалить все локальные файлы и директории, которые не отслеживает Git, из вашей текущей копии
  11. Клонировать все ветки с сервера
  12. Переименовать локальную ветку
  13. Вернуться к любому коммиту
  14. Удалить подмодуль (submodule)
  15. Перезаписать локальные файлы во время git pull
  16. Как добавить пустую директорию в репозиторий?
  17. Экспортирование исходников аналогично «svn export»
  18. Отменить все изменения, кроме тех, что уже добавлены в планируемый коммит
  19. Создать новую ветку на сервере из текущей локальной ветки
  20. Восстановить удалённый файл
  21. Вернуть один конкретный файл в состояние, в котором он был в каком-либо коммите
  22. Сделать так, чтобы Git игнорировал изменения прав файлов
  23. Заставить Git помнить пароль при работе с https
  24. git fetch не обновляет мой локальный репозиторий
  25. 3 ответов
  26. Попытка git pull с ошибкой: не удается открыть.git / FETCH HEAD: разрешение отказано
  27. 17 ответов
  28. Это сработало для меня:
  29. Попытка выполнить git pull с ошибкой: невозможно открыть .git / FETCH_HEAD: разрешение отклонено

git fetch работает, но ветка checkout не работает

Я пытаюсь checkout ветку, которую я только что получил из моего upstream удаленного репо, но она не работает.

Я делаю что-то не так?

5 ответов

Ветвь, вероятно, присутствует более чем в одном пульте. (Вы можете подтвердить это с помощью git branch —list —remotes ‘*/feature-branch’ .) git checkout создает такие ветки только в том случае, если они однозначны. От git-checkout(1) :

Если
не найден, но существует ветвь отслеживания ровно в одном удаленном (называемом ) с соответствующим именем, обрабатывать как эквивалент

Так что вам нужно сделать это вместо:

Есть некоторые автоматизации, которые могут произойти, когда вы просите проверить локальную ветвь, которая не существует (например, создать ее из какой-нибудь удаленной ветки), но это не сработает для вас: git checkout upstream/feature-branch . Единственное, что ни одна локальная ветка не создается.

Вы хотите, чтобы git понимал нотацию «быстрого доступа», но кажется, что она неприменима. Возможно, у нескольких пультов есть ветви с именем feature_branch ?

Ну, так или иначе, git checkout -b feature-branch -track upstream/feature-branch должен работать

Этот пост решил это для меня. Я забыл, что сделал мелкий клон репо. Как преобразовать мелкий клон Git в полный клон ?

Команда ниже (git version 1.8.3) преобразует мелкий клон в обычный

Затем, чтобы получить доступ ко всем веткам по происхождению (спасибо @Peter в комментариях)

Когда вы запускаете git checkout feature-branch git, попробуйте удалить все несохраненные изменения в файле с именем feature-branch . Для checkout вашей ветки используйте параметр -b , например git checkout -b feature-branch .

Источник

Самые типичные ошибки и вопросы, связанные с Git, и удобные способы их решения

Если вы хотите получше узнать те части Git, про которые раньше боялись спросить, то этот список для вас. Тут собраны наиболее типичные ситуации и способы их решения как из личного опыта автора, так и собранные по всему Интернету.

Ошибка в комментарии к коммиту

Если коммит ещё не был отправлен на сервер (push), то можно воспользоваться простой командой, позволяющей редактировать текст сообщения к последнему коммиту:

git commit --amend

Как отменить последний коммит?

Можно использовать git reset , вот так:

git reset --hard HEAD

1 означает один коммит до HEAD, т.е. до текущего положения. Стоит заметить, что это «ядерный» способ, который отменит все изменения. Если вам нужно сохранить всё, что вы сделали, но еще не успели закоммитить, используйте:

git reset --soft HEAD

Удалить ветку на сервере

git push origin --delete имя_ветки

В чём разница между «git pull» и «git fetch»?

git pull — это, по сути, git fetch , после которого сразу же следует git merge . git fetch получает изменения с сервера и сохраняет их в refs/remotes/ . Это никак не влияет на локальные ветки и текущие изменения. А git pull вливает все эти изменения в локальную копию.

Читайте также:  Сломался смывной бачок унитаза

Как отменить «git add» до коммита?

Вы выполнили git add имя_файла случайно и хотите отменить добавление файла. Если коммит ещё не был сделан, то поможет:

git reset имя_файла

Как разрешать конфликты слияния?

Используйте программу git mergetool , которая предоставляет удобный интерфейс для разрешения конфликтов.

Удалить все локальные файлы и директории, которые не отслеживает Git, из вашей текущей копии

Осторожно! Лучше сделайте перед этим бэкап.

Клонировать все ветки с сервера

Скорее всего, вы это уже сделали, а ветки просто скрыты. Вот команда, чтобы показать их:

Можно использовать git checkout origin/имя_ветки , чтобы посмотреть на нужную ветку. Или git checkout -b имя_ветки origin/имя_ветки , чтобы создать локальную ветку, соответствующую удалённой.

Переименовать локальную ветку

git branch -m oldname newname

Вернуться к любому коммиту

Можно использовать git reset , как показано ранее. Это будет означать, что вы хотите навсегда вернуться к тому состоянию, в котором вы были, а не просто посмотреть на него (для этого надо сделать checkout). Идентификатор коммита должен быть такой, какой прописан в выводе команды git log .

git reset --hard идентификатор_коммита

Ещё раз повторим: команда отменит все текущие изменения, так что убедитесь, что вам это действительно нужно. Или используйте --soft вместо --hard.

Удалить подмодуль (submodule)

Создание подмодулей используется довольно редко, но иногда они всё-таки встречаются. Вот, что вам нужно:

git submodule deinit submodulename
git rm submodulename
git rm --cached submodulename
rm -rf .git/modules/submodulename

Перезаписать локальные файлы во время git pull

Вам снова поможет git reset :

git fetch --all
git reset --hard origin/master

Как добавить пустую директорию в репозиторий?

Никак! Такая возможность просто не поддерживается, т.к. считается, что вам это не нужно. Но есть один трюк. Можно создать файл .gitignore в нужной директории со следующим содержимым:

# Игнорируем всё в этой директории
*
# Кроме самого файла .gitignore
!.gitignore

Экспортирование исходников аналогично «svn export»

Используйте git archive , например, так:

git archive --format zip --output /путь/к/файлу/файл.zip master

Отменить все изменения, кроме тех, что уже добавлены в планируемый коммит

Создать новую ветку на сервере из текущей локальной ветки

git config --global push.default current
git push -u

Восстановить удалённый файл

Сначала нужно найти последний коммит, где файл ещё существует:

git rev-list -n 1 HEAD -- имя_файла

Потом восстановить этот файл:

git checkout найденный_коммит^ -- имя_файла

Вернуть один конкретный файл в состояние, в котором он был в каком-либо коммите

Почти как в прошлом примере, только чуть проще:

git checkout идентификатор_коммита имя_файла

Сделать так, чтобы Git игнорировал изменения прав файлов

git config core.fileMode false

Заставить Git помнить пароль при работе с https

Для запоминания на 15 минут:

git config --global credential.helper cache

Можно настроить и более долгий период:

git config --global credential.helper "cache --timeout=XXXX"

Хинт для программистов: если зарегистрируетесь на соревнования Huawei Cup, то бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.

Перейти к регистрации

Источник

git fetch не обновляет мой локальный репозиторий

обновить все новости коммиты с сервера с моим локальным репозиторием во всех ветвях, но не объединять ветви (просто присоединиться к строкам истории).

Я пробую эту команду

Я думал, что он будет работать нормально, потому что он показывает:

но, что означает этот результат? Если я вижу журнал, это не обновление. Если я делаю клон с сервера, все новые коммиты есть. Так. Команда не работает. Затем я пытаюсь ветвь, которая существует на сервере, но не в моем локальном репозитории

и какого-либо успеха. Даже если я не знаю всех ветвей, и моя ветка была обновлена, я хочу получить эти изменения и могу видеть в своем журнале.

есть идеи, как это сделать?

3 ответов

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

Читайте также:  Мышь hyperx pulsefire surge не работает сенсор

после загрузки, попробуйте следующее:

вы видите разницу?

вы должны увидеть удаленные изменения в newbranchname.

вы также можете объединить эти изменения в свою ветку с

я столкнулся с этой проблемой раньше, основная причина в том, что вы не настроили удаленный.происхождение.получите локальную конфигурацию git.

используйте команду ниже, чтобы исправить вашу проблему:

после этого запустите "git fetch origin", я думаю, вы получите ожидаемый результат.

git fetch просто вносит изменения в локальную копию удаленной ветви. Если вы хотите обновить РЕПО или локальную ветку, вы должны следовать fetch С merge , или просто используйте git pull за один выстрел.

Источник

Попытка git pull с ошибкой: не удается открыть.git / FETCH HEAD: разрешение отказано

помогите мне пожалуйста, я пытаюсь запустить это на моем терминале:

тогда я попробую этот

помогите мне, я не понимаю этой проблемы.

17 ответов

похоже, что первый не работает, потому что у вашего пользователя нет разрешений для изменения этого каталога, а второй, потому что у вашего пользователя root нет правильных ключей SSH для доступа к этому репозиторию git.

в зависимости от того, что вы пытаетесь сделать, может быть, лучше клонировать репозиторий в другой каталог, или, может быть, chown текущий каталог, чтобы иметь полный доступ для

проверьте, есть ли у вас достаточно разрешений на

это проблема разрешения UNIX. Не используйте sudo для клонирования репозитория. У вас нет тех же ключей ssh, что и root, и вы все равно не должны работать как root. Попробуйте ls-la найти разрешения на файлы и использовать chmod (или sudo chown), чтобы исправить их. Надеюсь, это поможет.

Если вы хотите дать разрешение группе,

работал лучше всего для меня.

ответ на этот вопрос, убедитесь .git / FETCH_HEAD имеет права на запись, и вы будете настроены.

У меня была эта проблема в Windows, и она была решена путем предоставления разрешений на запись.

в unix можно запустить chmod a+rw .git/FETCH_HEAD из репозитория проекта, после чего он должен работать.

в моем случае отлично работают после этого:

в моем случае, у меня был только на чтение .файл git/FETCH_HEAD. Я должен был сделать " sudo chmod g+w .git / FETCH_HEAD", чтобы иметь возможность выполнить запрос на вытягивание.

У меня была первая проблема (разрешение FETCH_HEAD отказано) в Windows.

я исправил это, запустив Git Bash как администратор (щелкните правой кнопкой мыши, запустите как администратор).

если вы не добавили себя в группу, которой принадлежит .git/ , то вы должны.

  1. выясняет, какая группа владеет .git/ и добавляет пользователя в эту группу.
  2. делает, что члены группы имеют те же права, что и собственнику .git/ .
  3. повторяет это .gitignore , который вам, вероятно, понадобится
  4. выход из системы и обратно, чтобы обновить файл членства в группе разрешения

если вы недавно сделали что-то подобное (добавили себя в группу, которой принадлежит .git/ ), затем вам нужно выйти и вернуться, прежде чем вы сможете написать в .git/FETCH_HEAD во время git pull .

Шаг 1: сначала проверьте, кто вы? он вернет текущее имя пользователя e.g ubuntu

Шаг 2: затем установите разрешение для вашего текущего пользователя, в этом случае,ubuntu by

запуск Windows 7, когда у меня была эта проблема, это было потому, что я скрыл .папка git. Разрешения были в порядке, они просто были скрыты. Показ папки разрешил его.

смотреть на владельца и группу .git каталог с (Сначала перейдите в родительский каталог .git) ll .git , посмотрите на группу и владельца каталога, добавьте пользователя в группу владельца с sudo usermod -a -G yourusername groupsofonwner , затем logout => login и все, что получает работу.

так в summeries

перейдите в родительский каталог git

найти владельца группы .git директриса!--8-->

добавьте пользователя в эту группу

выход из системы и войти в систему, чтобы это изменение вступило в силу.

получил эту проблему, когда .папка git скрыта, и все файлы в ней тоже скрыты. Составить всего. папка git скрыта без обновления рекурсивных файлов, и она будет работать.

Читайте также:  Как настроить автомагнитолу philips

Это сработало для меня:

  1. Правой Кнопкой Мыши .папку с Git
  2. нажмите кнопку "Информация"
  3. установить разрешение для вашего пользователя
  4. щелкните значок шестеренки и нажмите Применить к вложенным элементам

больше нет разрешений отказано в ошибках в git.

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

попробуйте оба решения, которые должны работать для вас

если это не работает, пожалуйста, попробуйте следующее решение, надеюсь, что это решит вашу проблему

Я получил это, потому что у меня было более 1 учетной записи на моей коробке. Я вошел в систему как пользователь A и был в Каталоге для пользователя B. У пользователя A не было разрешения на вещи пользователя B. Как только я понял, что я не там, где я думал, что был в файловой системе, эта ошибка имела смысл.

У меня было это сообщение при использовании расширений git для windows. Мое исправление состояло в том, чтобы просто закрыть расширения git, а затем снова открыть как администратор

Источник

Попытка выполнить git pull с ошибкой: невозможно открыть .git / FETCH_HEAD: разрешение отклонено

Помогите мне, пожалуйста, я пытаюсь запустить это в моем терминале:

Тогда я попробую этот

Помоги мне, я не понимаю этой проблемы.

Похоже, что первый не работает, потому что у вашего пользователя нет прав на изменение этого каталога, а второй, потому что у вашего пользователя root нет правильных ключей SSH для доступа к этому репозиторию git.

В зависимости от того, что вы пытаетесь сделать, может быть лучше клонировать репозиторий в другой каталог, или, возможно, chown текущий каталог, чтобы иметь полный доступ для вашего пользователя

Проверьте, достаточно ли у вас прав доступа к .git/ каталогу. У вас должны быть разрешения на запись. Вы можете установить их с помощью следующей команды.

Перейдите в папку вашего проекта:

Если вы хотите дать разрешение группе,

работал лучше для меня.

Это проблема разрешения UNIX. Не используйте sudo для клонирования хранилища. У вас нет тех же ключей ssh, что и у root, и вы все равно не должны работать как root. Попробуйте ls -la найти разрешения для файлов и использовать chmod (или sudo chown ) для их исправления. Надеюсь, это поможет.

В моем случае нормально работает после этого:

Ответьте на этот вопрос и убедитесь, что у .git / FETCH_HEAD есть права на запись, и все будет готово.

У меня была эта проблема в Windows, и она была решена путем предоставления разрешений на запись.

В Unix можно запустить chmod a+rw .git/FETCH_HEAD из репозитория проекта, после чего он должен работать.

Шаг 1: Сначала проверь, кто ты? он вернет текущее имя пользователя, например, Ubuntu

Шаг 2: Затем установите разрешение текущего пользователя, в этом случае, убунт по

В моем случае я имел доступ только для чтения к файлу .git / FETCH_HEAD. Я должен был сделать "sudo chmod g + w .git / FETCH_HEAD", чтобы иметь возможность сделать запрос на получение.

У меня была первая проблема (отказано в разрешении FETCH_HEAD) в Windows.

Я исправил это, запустив Git Bash от имени администратора (щелкните правой кнопкой мыши, запустите от имени администратора).

Если вы не добавили себя в группу, которая владеет .git/ , то вам следует.

  1. узнает, какой группе принадлежит .git/ и добавит вашего пользователя в эту группу.
  2. гарантирует, что члены группы имеют те же разрешения, что и владелец .git/ .
  3. повторяет это для .gitignore , что вам, вероятно, понадобится
  4. выходит из системы и возвращается, чтобы обновить разрешения для файла членства в группе

Если вы только недавно сделал что - то вроде этого (добавили себя к группе , к которой принадлежит .git/ ), то вам необходимо выйти из системы и обратно , прежде чем вы сможете писать .git/FETCH_HEAD во время вашего git pull .

Установите разрешение для текущего пользователя, выполнив команду

Источник

Оцените статью