git генерирует новый master.блокируйте файл каждый раз, когда я вытаскиваю

#git #git-push #git-pull

#git #git-push #git-pull

Вопрос:

Запустив git в Windows 10, я получаю похожие проблемы в разных git-приложениях (git GUI, git в оболочке UBUNTU, git в терминале).

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

 git pull                                                                           
error: cannot lock ref 'refs/remotes/origin/master': Unable to create '/mnt/c/users
/simon/Dropbox/Universitet/dark/datorarkitektur/.git/refs/remotes/origin/master.loc
k': File exists.                                                                                                                                                      
Another git process seems to be running in this repository, e.g.                   
an editor opened by 'git commit'. Please make sure all processes                   
are terminated then try again. If it still fails, a git process                    
may have crashed in this repository earlier:                                       
remove the file manually to continue.                                              
From https://git.cs.umu.se/c18sjn/datorarkitektur                                   
! 7b1722c..c2c55fa  master     -> origin/master  (unable to update local ref)
  

Я удаляю .файл блокировки, расположенный в .git/refs/remotes/origin/master .блокировка, но она генерируется каждый раз, когда я вытаскиваю. Я попытался удалить все свои редакторы с интегрированной функциональностью GIT и завершил все процессы, кроме одного терминала.

Если моя ветка отстает, я могу вытащить (с аналогичными предупреждениями, но работает), а затем нажать, но я вообще не могу нажать, если моя ветка впереди перед вытягиванием (потому что вытягивание завершается неудачно). Пример push:

 git push                                                                           
To https://git.cs.umu.se/c18sjn/datorarkitektur.git                                 
! [rejected]        master -> master (non-fast-forward)                           
error: failed to push some refs to 'https://git.cs.umu.se/c18sjn/datorarkitektur.git'                                                                                 hint: Updates were rejected because the tip of your current branch is behind       
hint: its remote counterpart. Integrate the remote changes (e.g.                   
hint: 'git pull ...') before pushing again.                                        
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
  

Комментарии:

1. Что git status говорит?

2. И в нем говорится, что вам нужно сначала вытащить…

Ответ №1:

Хотя многие люди предлагают поместить репозиторий Git в Dropbox, есть проблемы. Из часто задаваемых вопросов git-remote-dropbox

Почему я не должен хранить свой репозиторий Git в Dropbox и позволять клиенту синхронизировать его?

… Настольный клиент не знает, как Git управляет его форматом на диске, поэтому при одновременных изменениях или задержках синхронизации возможны конфликты, которые приводят к повреждению репозитория Git. Это может быть необычно из-за того, как работает синхронизация в случае одного пользователя, но это все равно небезопасно!

Dropbox предназначен для синхронизации файлов. Git не знает об этом. Фактически у вас есть несколько нескоординированных пользователей, пытающихся одновременно использовать один и тот же локальный репозиторий. Dropbox может «синхронизировать» файлы репозитория Git и повредить репозиторий. Например, он может восстановить файл блокировки.

git-remote-dropbox устраняет эти проблемы.

Этот помощник Git remote позволяет Dropbox действовать как настоящий Git remote. Он поддерживает все гарантии, предоставляемые традиционным Git remote, при использовании Dropbox в качестве резервного хранилища. Это означает, что он работает корректно, даже когда в репозитории одновременно работают несколько человек, что позволяет использовать общую папку Dropbox в качестве пульта Git remote для совместной работы.

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

Объявите удаленный сервер, используя dropbox URL-адрес.

 git remote add origin "dropbox:///mnt/c/users
/simon/Dropbox/Universitet/dark/datorarkitektur/"
  

При следующем нажатии он создаст удаленный репозиторий /mnt/c/users/simon/Dropbox/Universitet/dark/datorarkitektur/ .

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