Объединять, обновлять и извлекать ветки Git, не используя извлечения

Вы можете использовать следующее regex глобально:

\[(.*?)\]

Объяснение:

  • \[: [ является метасимволом, и его необходимо экранировать, если вы хотите сопоставить это буквально.
  • (.*?): совпадение со всем нежелательным способом и захват его.
  • \]: ] является метасимволом и требует чтобы ускользнуть, если вы хотите совместить это буквально.
555
задан charles 28 July 2014 в 05:05
поделиться

5 ответов

Еще один способ эффективно сделать это:

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
0
ответ дан 2 revs 28 July 2014 в 05:05
поделиться
git worktree add [-f] [--detach] [--checkout] [--lock] [-b <new-branch>] <path> [<commit-ish>]

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

Таким образом у Вас может быть два отдельного отслеживания ответвлений в том же мерзавце repo, таким образом, только необходимо выбрать однажды для получения, обновления и в деревьях работы (вместо того, чтобы иметь необходимость к клону мерзавца дважды и в мерзавец надевают каждого)

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

, Когда Вы хотите удалить его, можно вымыться с

git worktree remove [-f] <worktree>
0
ответ дан 22 November 2019 в 22:07
поделиться

только для получения по запросу ведущего устройства, не проверяя ведущее устройство я использую

git fetch origin master:master

0
ответ дан 22 November 2019 в 22:07
поделиться

Абсолютно возможно сделать любое слияние, даже слияния неускоренной перемотки вперед, без 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 ответвление, не переключая Ваш контроль.

0
ответ дан 22 November 2019 в 22:07
поделиться

Вы можете сделать это только в том случае, если слияние является ускоренным. Если это не так, то 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 ветки)

.
19
ответ дан 22 November 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: