Получение ошибки 'receive.denyCurrentBranch' при нажатии на голое репозиторий Git
Сделайте удаленный репозиторий git bare, на который я вставил ветку с одной машины и вытащил на другую.
Сделал некоторые изменения на другой машине, пытаясь отодвинуть эти изменения обратно в удаленное репозитарий, и я получаю ошибку 'receive.denyCurrentBranch'.
В чем дело?
Это не должно происходить на голом репо - на нем ничего не проверено.
Ветви, как видно из машины 2:
Fix
dev1
dev2
remotes/origin/HEAD -> origin/dev1
remotes/origin/Fix
remotes/origin/dev1
remotes/origin/dev2
remotes/origin/master
"Fix" - это текущая ветка на обеих машинах разработчика.
Когда я первоначально вытащил эту ветку на машине 2, я сделал:
git pull
git checkout -b Fix origin/Fix
Я с подозрением отношусь к первой строке 'remotes' - кажется, что HEAD должен указывать на мою текущую ветку, но это не так. Думаю, я что-то упустил, здесь..
Обновление 1 Я слил ветку 'Fix' с веткой dev1, а затем протолкнул ветку 'dev1' - все работало нормально (я все равно собирался это сделать).
Таким образом, это был обходной путь, но я думаю, что реальная проблема заключалась в том, что HEAD был привязан не к текущей ветви ("Fix"), а к неактивной ветви ("dev1"). Я не уверен, как сменить голову на удаленном репо?
1 ответ
С компьютера 2 для загрузки ссылок из локального репозитория в удаленный репозиторий вы можете использовать явные ссылки в команде push:
git push origin Fix:refs/heads/Fix
После этого на компьютере 1 вы должны использовать команду fetch для получения удаленных ссылок.
git fetch
В списке ветвей (git branch -a) вы найдете origin/Fix (или remotes/origin/Fix), вы можете просматривать содержимое удаленной ветви напрямую, используя команду checkout:
git checkout origin/Fix
Внесите изменения, зафиксируйте и т. Д., А затем нажмите его, используя ту же команду, что и на компьютере 2
git push origin Fix:refs/heads/Fix
Чтобы отследить ветку (то есть создать локальную ветку, которая "указывает" на удаленную ветку, используйте команду checkout с параметром --track):
git checkout --track -b Fix origin/Fix
Затем вы можете работать с локальной веткой Fix и делать push и pull без других аргументов.
git pull
git commit
git push