Могу ли я уничтожить и воссоздать удаленную ветку Git одной командой?

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

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

Это мой текущий рабочий процесс:

git checkout my_branch
git rebase master
git push origin :my_branch  # Delete remote version of the branch
git push origin my_branch   # Push up my new version of history on this branch

Есть ли одна атомарная команда, которая может заменить две последние команды?

 Shahbaz01 июн. 2012 г., 16:07
Я не знал, что вы не можете продвинуть перебазированную ветвь. Кто-нибудь знает почему ?! Кажется, что повторная база данных является довольно распространенной операцией, почему бы «просто не работать»?
 Shahbaz01 июн. 2012 г., 16:12
@ Стефан, да ладно, старый добрый мерзавец, тогда это для меня.
 Stefan01 июн. 2012 г., 16:10
квотированиеhelp.github.com/rebase "It is considered bad practice to rebase commits which you have already pushed to a remote repo. Doing so may invoke the wrath of the git gods... you have been warned."
 Nathan Long01 июн. 2012 г., 16:14
@Stefan - я бы никогда не попробовал это на мастере, но в моей команде у нас часто бывают «личные». ветви, над которыми больше никто не будет работать; они по сути являются резервными копиями нашей работы на случай, если здание сгорит.
 Nathan Long01 июн. 2012 г., 16:13
@Shahbaz - Git имеет концепцию «фарфора»; и «сантехника»; команды, первая строится из последних. Например,git pull это действительно сочетаниеfetch а такжеmerge, Я представляю чтоpush похож.merge а такжеrebase несовместимы, потому чтоmerge о поиске общих коммитов и добавлении недостающих.rebase в этом случае означает, что две копии ветви не имеют какой-либо общей истории, прежде чем они отделятся отmaster.

Ответы на вопрос(1)

Решение Вопроса

Если вам разрешено переписывать удаленную ветку, вы можете использоватьgit push --force my_remote my_branch.

 Nathan Long01 июн. 2012 г., 16:16
@Stefan - это точно мой случай; это моя эксклюзивная ветка. Я бы не сделал это иначе.
 01 июн. 2012 г., 16:14
Это решит вопрос, как и было задано, но Стефан на правильном пути. Повторная отправка коммитов, которые вы уже отправили на удаленный компьютер, обычно не является хорошей практикой.
 04 июн. 2012 г., 09:36
@ twalberg я знаю о+ синтаксис, но я всегда нахожу его немного загадочным и предпочитаю многословие--force.
 01 июн. 2012 г., 16:15
Ну, если ты единственный, кто работает в этой ветке, то, наверное, все в порядке.
 01 июн. 2012 г., 16:23
Альтернативный синтаксис для того же эффекта будетgit push origin +my_branch, «+» говорит, что можно перезаписать ветку назначения.

Ваш ответ на вопрос