Файловый объект является буфером . Когда вы читаете из буфера, потребляемая вами часть (позиция чтения сдвигается вперед). Когда вы читаете весь файл, позиция чтения находится в EOF, поэтому он ничего не возвращает, потому что читать нечего.
Если вам по какой-то причине необходимо сбросить позицию чтения на файловый объект, вы можете сделать:
f.seek(0)
$ git push -d <remote_name> <branch_name>
$ git branch -d <branch_name>
Обратите внимание, что в большинстве случаев удаленное имя происхождение
.
В таком случае вам придется использовать такую команду.
$ git push -d origin <branch_name>
Чтобы удалить локальную ветвь , используйте одно из следующих действий:
$ git branch -d branch_name
$ git branch -D branch_name
Примечание: Параметр -d
является псевдонимом для - удаление
, которое удаляет ветвь только в том случае, если она уже была полностью объединена с восходящей ветвью. Вы также можете использовать -D
, который является псевдонимом для - delete --force
, который удаляет ветку «независимо от ее объединенного статуса». [Источник: man git-branch
]
Начиная с Git v1.7.0 , вы можете удалить удаленная ветвь с использованием
$ git push <remote_name> --delete <branch_name>
, которую легче запомнить, чем
$ git push <remote_name> :<branch_name>
, который был добавлен в Git v1.5.0 «для удаления удаленной ветки или тега».
Запуск в Git v2.8.0 вы также можете использовать git push
с параметром -d
в качестве псевдонима для - удалить
.
Таким образом, версия Git, которую вы установили, будет определять, нужно ли вам использовать более простой или более сложный синтаксис.
Из главы 3 Pro Git Скотта Чакона:
Удаление удаленных ветвей
Предположим, вы закончили с удаленная ветка - скажем, вы и ваши соавторы закончили работу над функцией и объединили ее в главную ветку удаленного компьютера (или в любую другую ветвь, в которой находится ваша стабильная строка кода). Вы можете удалить удаленную ветку, используя довольно тупой синтаксис
git push [remotename]: [branch]
. Если вы хотите удалить ветку server-fix с сервера, выполните следующее:$ git push origin: serverfix Кому (скрыто) - [удалено] исправление сервера
Бум. На вашем сервере больше нет веток. Возможно, вы захотите выслушать эту страницу, потому что вам понадобится эта команда, и вы, вероятно, забудете синтаксис. Чтобы запомнить эту команду, можно вызвать синтаксис
git push [remotename] [localbranch]: [remotebranch]
, который мы рассмотрели немного ранее. Если вы опустите часть[localbranch]
, то вы в основном говорите: «Не принимайте ничего на моей стороне и сделайте это[remotebranch]
».
Я выпустил git push origin: bugfix
, и это прекрасно работало. Скотт Чакон был прав - я хочу собачье ухо эту страницу (или фактически собачье ухо, отвечая на этот вопрос на Stack Overflow).
Затем вы должны выполнить это на других машинах
# Fetch changes from all remotes and locally delete
# remote deleted branches/tags etc
# --prune will do the job :-;
git fetch --all --prune
, чтобы распространить изменения.
Самый гибкий путь состоит в том, чтобы использовать пользовательская команда Git. Например, можно создать следующий сценарий Python где-нибудь в Вашем $PATH
под именем git-rmbranch
:
#!/usr/bin/env python3
import argparse
import subprocess
parser = argparse.ArgumentParser(
description='Delete a Git branch locally and remotely')
parser.add_argument('branch_name', help='The branch name')
parser.add_argument('-f', '--force', action='store_true',
help='Force deletion of not fully merged branches')
args = parser.parse_args()
opt = '-D' if args.force else '-d'
try:
subprocess.check_call(['git', 'branch', opt, args.branch_name])
subprocess.check_call(['git', 'push', 'origin', '--delete', args.branch_name])
except subprocess.CalledProcessError:
pass
Тогда использование это в Вашем репозитории как это:
git rmbranch <branch_name>
или с -f
для принуждения удаления локальных ответвлений, которые не полностью объединяются:
git rmbranch -f <branch_name>