Переименуйте главную ветку для локальных и удаленных Git-репозиториев.

    [System.IO.FileInfo] $file = Get-Item -Path $FilePath 
    $sequenceBOM = New-Object System.Byte[] 3 
    $reader = $file.OpenRead() 
    $bytesRead = $reader.Read($sequenceBOM, 0, 3) 
    $reader.Dispose() 
    #A UTF-8+BOM string will start with the three following bytes. Hex: 0xEF0xBB0xBF, Decimal: 239 187 191 
    if ($bytesRead -eq 3 -and $sequenceBOM[0] -eq 239 -and $sequenceBOM[1] -eq 187 -and $sequenceBOM[2] -eq 191) 
    { 
        $utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False) 
        [System.IO.File]::WriteAllLines($FilePath, (Get-Content $FilePath), $utf8NoBomEncoding) 
        Write-Host "Remove UTF-8 BOM successfully" 
    } 
    Else 
    { 
        Write-Warning "Not UTF-8 BOM file" 
    }  

Источник Как удалить отметку порядка байтов UTF8 (BOM) из файла с помощью PowerShell

784
задан Albert 11 June 2014 в 03:44
поделиться

4 ответа

Ближайшее к переименованию - это удаление и повторное создание на удаленном компьютере. Например:

git branch -m master master-old
git push remote :master         # delete master
git push remote master-old      # create master-old on remote

git checkout -b master some-ref # create a new local master
git push remote master          # create master on remote

Однако здесь есть много недостатков. Во-первых, ни одна из существующих проверок не будет знать о переименовании - git не , а не пытается отслеживать переименование веток. Если новый мастер еще не существует, git pull выдаст ошибку. Если новый главный был создан. вытягивание попытается объединить главный и главный-старый . Так что, как правило, это плохая идея, если у вас нет сотрудничества со всеми, кто ранее проверял репозиторий.

Примечание: Новые версии git не позволяют вам удаленно удалить главную ветку по умолчанию. Вы можете изменить это, установив для параметра конфигурации receive.denyDeleteCurrent значение warn или ignore в удаленном репозитории. В противном случае, если вы готовы создать новый мастер прямо сейчас, пропустите шаг git push remote: master и передайте - принудительно git push удаленному мастеру шаг. Обратите внимание: если вы не можете изменить конфигурацию пульта, вы выиграете. t иметь возможность полностью удалить главную ветвь!

Это предостережение относится только к текущей ветке (обычно это ветвь master ); любую другую ветку можно удалить и создать заново, как указано выше.

601
ответ дан 22 November 2019 в 21:19
поделиться

Полагаю, вы » Вы по-прежнему спрашиваете о той же ситуации, что и в вашем предыдущем вопросе . То есть master-new не будет содержать master-old в своей истории. * Если вы назовете master-new «master», вы фактически переписываете историю. Не имеет значения , как вы попадаете в состояние, в котором мастер не является потомком предыдущей позиции мастера, просто то, что он находится в этом состоянии.

У других пользователей, пытающихся извлечь, пока мастер не существует, их запросы просто не удастся (на удаленном компьютере такой ссылки нет), и как только он снова появится в новом месте, их извлечения должны будут попытаться объединить свой мастер с новым удаленный мастер, как если бы вы объединили главный-старый и главный-новый в своем репозитории. Учитывая то, что вы здесь пытаетесь сделать, слияние приведет к конфликтам. (Если они были решены, и результат был помещен обратно в хранилище, вы будете в еще худшем состоянии - там обе версии истории.)

Чтобы ответить на ваш вопрос просто: вы должны признать, что иногда в вашей истории будут ошибки. Это хорошо. С кем не бывает. В репозитории git.git есть отмененные коммиты. Важно то, что как только мы публикуем историю, каждый может доверять ей.

* Если бы это было так, это было бы равнозначно отправке некоторых изменений на главный сервер, а затем созданию новой ветки там, где она была раньше. Нет проблем.

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

* Если бы это было так, это было бы равнозначно отправке некоторых изменений на главный сервер, а затем созданию новой ветки там, где она была раньше. Нет проблем.

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

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

11
ответ дан 22 November 2019 в 21:19
поделиться
git update-ref newref oldref
git update-ref -d oldref newref
-5
ответ дан 22 November 2019 в 21:19
поделиться

А как насчет:

git checkout old-branch-name
git push remote-name new-branch-name
git push remote-name :old-branch-name
git branch -m new-branch-name
1
ответ дан 22 November 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: