Я не уверен, какова цель этого отдельного голого клона (голый клон - это тот, который, как вы говорите, находится на сетевом диске), но если это не клон mirror - зеркала являются конкретный тип чистого клона - у него есть собственные имена веток, независимые от всех других репозиториев Git. 1 Следовательно, вам нужно указать обновить любой конкретной ветки, если и когда Вы хотите, чтобы он подчинял себя какому-нибудь другому хранилищу Git.
Я не могу использовать git pull
или git reset
, так как это голый репо ...
Это правда, что вы не можете использовать git pull
, потому что это пустой репозиторий и git pull
означает run git fetch
, затем выполните вторую команду Git , и эта вторая команда Git всегда одна это нуждается в рабочем дереве. Однако это не случай, когда вы не можете использовать git reset
. То, что вы не можете сделать, это сделать смешанный или полный сброс:
$ git reset
fatal: mixed reset is not allowed in a bare repository
$ git reset --hard
fatal: this operation must be run in a work tree
A --soft
сброс, однако, разрешен:
$ git reset --soft
$
, поэтому один из способов перемещения локального master
в соответствие origin/master
:
$ git reset --soft origin/master
Однако наиболее подходящим вариантом, вероятно, является либо полное прекращение использования этого пустого хранилища, либо использование зеркального клона (см. Сноску 1).
1 Технически, даже зеркальный клон имеет свои собственные имена ветвей. Ключевое различие между клоном без зеркала и клоном без зеркала состоит в том, что у клона зеркала все имена ветвей подчинены своему источнику. 2 В частности, конфигурация fetch
для зеркального клона: :
[remote "origin"]
fetch = +refs/heads/*:refs/heads/*
вместо стандартных:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
Стандартная настройка извлечения означает, что при запуске git fetch
в таком клоне все имена refs/remotes/origin/*
обновляются в соответствии с именами refs/heads/*
источника. Нестандартный параметр зеркала означает, что git fetch
, запущенный в зеркальном клоне, принудительно обновляет все имена refs/heads/*
, немедленно забывая (и таким образом теряя любые коммиты, которые только достижимы из) его собственных имен ветвей в пользу использования вместо этого извлеченных имен. Вот что делает зеркало зеркалом: оно удаляет любые коммиты, которые были эксклюзивными для своих собственных ветвей, заменяя свои собственные хеши фиксации имени ветви на то, что он видел на удаленном компьютере.
2 Приведенное выше описание предполагает стандартное имя удаленного устройства origin
. Если вы использовали какое-то другое имя, все остается в силе, просто вместо origin
строковый литерал будет тем именем, которое вы использовали.