[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
Ближайшее к переименованию - это удаление и повторное создание на удаленном компьютере. Например:
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
); любую другую ветку можно удалить и создать заново, как указано выше.
Полагаю, вы » Вы по-прежнему спрашиваете о той же ситуации, что и в вашем предыдущем вопросе . То есть master-new не будет содержать master-old в своей истории. * Если вы назовете master-new «master», вы фактически переписываете историю. Не имеет значения , как вы попадаете в состояние, в котором мастер не является потомком предыдущей позиции мастера, просто то, что он находится в этом состоянии.
У других пользователей, пытающихся извлечь, пока мастер не существует, их запросы просто не удастся (на удаленном компьютере такой ссылки нет), и как только он снова появится в новом месте, их извлечения должны будут попытаться объединить свой мастер с новым удаленный мастер, как если бы вы объединили главный-старый и главный-новый в своем репозитории. Учитывая то, что вы здесь пытаетесь сделать, слияние приведет к конфликтам. (Если они были решены, и результат был помещен обратно в хранилище, вы будете в еще худшем состоянии - там обе версии истории.)
Чтобы ответить на ваш вопрос просто: вы должны признать, что иногда в вашей истории будут ошибки. Это хорошо. С кем не бывает. В репозитории git.git есть отмененные коммиты. Важно то, что как только мы публикуем историю, каждый может доверять ей.
* Если бы это было так, это было бы равнозначно отправке некоторых изменений на главный сервер, а затем созданию новой ветки там, где она была раньше. Нет проблем.
Важно то, что как только мы публикуем историю, каждый может доверять ей.* Если бы это было так, это было бы равнозначно отправке некоторых изменений на главный сервер, а затем созданию новой ветки там, где она была раньше. Нет проблем.
Важно то, что, как только мы публикуем историю, каждый может доверять этому.* Если бы это было так, это было бы равнозначно отправке некоторых изменений на главную, а затем созданию новой ветки там, где она была раньше. Нет проблем.
git update-ref newref oldref
git update-ref -d oldref newref
А как насчет:
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