Переместить указатель ветви на другую фиксацию без проверки
чтобы переместить указатель ветви извлеченной ветви, можно использовать . Но как переместить указатель ветви не проверенной ветви, чтобы указать на другую фиксацию (сохраняя все остальные вещи, такие как отслеживаемая удаленная ветвь)?
6 ответов:
N. B. Если вы просто хотите переместить филиала в другой фиксации самый простой способ -
git branch -f branch-name new-tip-commitвы можете сделать это для произвольного судьи. Вот как переместить указатель ветви:
git update-ref -m "reset: Reset <branch> to <new commit>" refs/heads/<branch> <commit>общий вид:
git update-ref -m "reset: Reset <branch> to <new commit>" <ref> <commit>вы можете выбрать гниды о сообщении reflog, если вам нравится - я верю
branch -fодно отличается от другого. изreset --hardодин, и это точно не один из них.
вы также можете передать
git reset --hardфиксация ссылка.например:
git checkout branch-name git reset --hard new-tip-commitЯ нахожу, что я делаю что-то вроде этого полу-часто:
предполагая, что эта история
$ git log --decorate --oneline --graph * 3daed46 (HEAD, master) New thing I shouldn't have committed to master * a0d9687 This is the commit that I actually want to be master # Backup my latest commit to a wip branch $ git branch wip_doing_stuff # Ditch that commit on this branch $ git reset --hard HEAD^ # Now my changes are in a new branch $ git log --decorate --oneline --graph * 3daed46 (wip_doing_stuff) New thing I shouldn't have committed to master * a0d9687 (HEAD, master) This is the commit that I actually want to be master
просто чтобы обогатить обсуждение, если вы хотите двигаться
myBranchфилиала в настоящее commit, просто опустите второй аргумент после-fпример:
git branch -f myBranch
Я обычно делаю это, когда я
rebaseнаходясь в отстраненном состоянии головы:)
на
gitk --all:
- правой кнопкой мыши на фиксации вы хотите
- ->создать новую ветку
- введите имя существующей ветви
- нажмите кнопку return в диалоговом окне, которое подтверждает замену старой ветви этого имени.
будьте осторожны, что воссоздание вместо изменения существующей ветви потеряет отслеживание-информация о филиале. (Вот как правило, это не проблема для простых случаев использования, когда есть только один удаленный, и ваша локальная ветвь имеет то же имя, что и соответствующая ветвь в удаленном устройстве. См. комментарии для получения более подробной информации, Спасибо @mbdevpl за указание на этот недостаток.)
было бы здорово, если
gitkбыла функция, в которой диалоговое окно имело 3 варианта: перезаписать, изменить существующий или отменить.
даже если вы обычно наркоман командной строки, как я,
git guiиgitkдовольно красиво разработанный для подмножества использования git они позволяют. Я настоятельно рекомендую использовать их для того, в чем они хороши (т. е. выборочно размещать куски в/из индекса в графическом интерфейсе git, а также просто совершать. (сочетание клавиш Ctrl-S, Чтобы добавить подпись-не горит: линия, комбинация Ctrl-Enter, чтобы совершить.)
gitkотлично подходит для отслеживания нескольких ветвей, пока вы сортируете свои изменения в красивую серию патчей, чтобы отправить вверх по течению, или что-нибудь еще, где вам нужно отслеживать, что вы находитесь в середине с несколькими ветви.у меня даже нет графического браузера файлов, но я люблю gitk/Git gui.
на рекомендуемое решение
git branch -f branch-pointer-to-move new-pointerна TortoiseGit:
- "Git Show log"
- Проверьте "Все Ветви"
- в строке, на которую вы хотите переместить указатель ветви (new-pointer):
- щелкните правой кнопкой мыши, "создать ветку в этой версии"
- рядом с "ветвью" введите имя ветви для перемещения (указатель ветви для перемещения)
- в разделе "Base On" проверьте, что новый указатель правильно
- Проверить "Силу"
- ОК


Comments