Вы можете использовать следующее regex глобально:
\[(.*?)\]
Объяснение:
\[
: [
является метасимволом, и его необходимо экранировать, если вы хотите сопоставить это буквально. (.*?)
: совпадение со всем нежелательным способом и захват его. \]
: ]
является метасимволом и требует чтобы ускользнуть, если вы хотите совместить это буквально. Еще один способ эффективно сделать это:
git fetch
git branch -d branchB
git branch -t branchB origin/branchB
Поскольку это строчный регистр -d
, он будет удалять его только в том случае, если данные еще будут где-то существовать. Это похоже на ответ @ kkoehne, за исключением того, что оно не вызывает. Из-за -t
он снова настроит пульт.
У меня была немного другая потребность, чем в OP, который должен был создать новую ветвь функции из develop
(или master
) после объединения запроса на извлечение. Это может быть выполнено в одной строке без силы, но это не обновляет локальную ветвь develop
. Нужно просто проверить новую ветку и сделать так, чтобы она основывалась на origin/develop
:
git checkout -b new-feature origin/develop
git worktree add [-f] [--detach] [--checkout] [--lock] [-b <new-branch>] <path> [<commit-ish>]
можно попробовать git worktree
, чтобы иметь два ответвления, открытые рядом, это кажется, что могло бы быть тем, что Вы, что, но очень отличающийся, чем некоторые из других ответов я видел здесь.
Таким образом у Вас может быть два отдельного отслеживания ответвлений в том же мерзавце repo, таким образом, только необходимо выбрать однажды для получения, обновления и в деревьях работы (вместо того, чтобы иметь необходимость к клону мерзавца дважды и в мерзавец надевают каждого)
, Worktree создаст новый рабочий каталог для кода, где можно было проверить другое ответвление одновременно вместо того, чтобы подкачать ответвления на месте.
, Когда Вы хотите удалить его, можно вымыться с
git worktree remove [-f] <worktree>
только для получения по запросу ведущего устройства, не проверяя ведущее устройство я использую
git fetch origin master:master
Абсолютно возможно сделать любое слияние, даже слияния неускоренной перемотки вперед, без git checkout
. Эти worktree
ответ @grego является хорошей подсказкой. Подробно остановиться на этом:
cd local_repo
git worktree add _master_wt master
cd _master_wt
git pull origin master:master
git merge --no-ff -m "merging workbranch" my_work_branch
cd ..
git worktree remove _master_wt
Вы теперь объединили локальное ответвление работы с локальным master
ответвление, не переключая Ваш контроль.
Вы можете сделать это только в том случае, если слияние является ускоренным. Если это не так, то git должен иметь проверенные файлы, чтобы он мог их объединить!
Чтобы сделать это только для быстрой перемотки:
git fetch <branch that would be pulled for branchB>
git update-ref -m "merge <commit>: Fast forward" refs/heads/<branch> <commit>
где
- извлечённый коммит, тот, на который вы хотите перемотать. По сути, это похоже на использование git branch -f
для перемещения ветки, за исключением того, что это также записывается в рефлог, как если бы вы действительно выполнили слияние.
Пожалуйста, пожалуйста, пожалуйста не делайте этого для чего-то, что не является быстрым переходом, иначе вы просто сбросите свою ветку на другой коммит. (Чтобы проверить, посмотрите, выдаёт ли git merge-base
SHA1 ветки)