Удалить отслеживание веток больше не на удаленном

Так как это работает на C ++. В C ++ управление доступом работает на основе per-class , а не на основе каждого объекта.

Управление доступом в C ++ реализовано как статическая функция времени компиляции. Я думаю, что довольно очевидно, что на этапе компиляции реально невозможно реализовать какой-либо значимый контроль доступа к каждому объекту. Этот способ может быть реализован только для каждого класса.

Некоторые рекомендации по управлению объектами присутствуют в спецификации protected access , поэтому он даже имеет свою собственную выделенную главу в стандарт (11.5). Но все же описанные там характеристики каждого объекта довольно рудиментарны. Опять же, управление доступом на C ++ предназначено для работы на основе класса.

862
задан Andrew Spencer 13 August 2018 в 13:38
поделиться

3 ответа

На основе Git Tip: Удаление старых локальных веток , которое выглядит как решение jason.rickman . Для этой цели я реализовал пользовательскую команду под названием git seen используя Bash:

$ git gone
usage: git gone [-pndD] [<branch>=origin]
OPTIONS
  -p  prune remote branch
  -n  dry run: list the gone branches
  -d  delete the gone branches
  -D  delete the gone branches forcefully

EXAMPLES
git gone -pn    prune and dry run
git gone -d     delete the gone branches

git gone -pn объединяет сокращение и вывод списка «пропавших» ветвей:

$ git gone -pn
  bport/fix-server-broadcast         b472d5d2b [origin/bport/fix-server-broadcast: gone] Bump modules
  fport/rangepos                     45c857d15 [origin/fport/rangepos: gone] Bump modules

Затем вы можете нажать на курок, используя git gone -d или git gone -D.

Примечания

  • Я использовал регулярное выражение "$BRANCH/.*: gone]", где $BRANCH обычно будет origin. Это, вероятно, не сработает, если ваш вывод Git локализован на французский и т. Д.
  • Себастьян Виснер также портировал его на Rust для пользователей Windows. Этот также называется Git Gone .
2
ответ дан Eugene Yokota 13 August 2018 в 13:38
поделиться

Еще один другой ответ для кучи, в значительной степени основанный на ответе Патрика (который мне нравится, потому что, похоже, он устраняет любую двусмысленность в отношении того, где gone] будет совпадать в выводе git branch) но добавив * nix bent:

git branch --list --format "%(if:equals=[gone])%(upstream:track)%(then)%(refname)%(end)" \
  | sed 's,^refs/heads/,,;/^$/d' \
  | xargs git branch -D

Я завернул это в сценарий git-gone на моем пути:

#!/usr/bin/env bash

action() {
  ${DELETE} && xargs git branch -D || cat
}

get_gone() {
  git branch --list --format "%(if:equals=[gone])%(upstream:track)%(then)%(refname)%(end)" \
    | sed 's,^refs/heads/,,;/^$/d'

}

main() {
  DELETE=false
  while [ $# -gt 0 ] ; do
    case "${1}" in
      (-[dD] | --delete) DELETE=true ;;
    esac
    shift
  done
  get_gone | action
}

main "${@}"

NB - Опция --format, кажется, довольно новый; Мне нужно было обновить git с 2.10 до 2.16.3, чтобы получить его.

8
ответ дан Toby Speight 13 August 2018 в 13:38
поделиться

Я нашел ответ здесь: Как я могу удалить все ветки git, которые были объединены?

git branch --merged | grep -v "\*" | xargs -n 1 git branch -d

Убедитесь, что мы сохраним мастер

Вы можете убедиться что master, или любая другая ветвь в этом отношении, не удаляется, если добавить еще одну grep после первой. В этом случае вы бы пошли:

git branch --merged | grep -v "\*" | grep -v "YOUR_BRANCH_TO_KEEP" | xargs -n 1 git branch -d

Так что, если мы хотим сохранить, например, master, develop и staging, мы бы пошли:

git branch --merged | grep -v "\*" | grep -v "master" | grep -v "develop" | grep -v "staging" | xargs -n 1 git branch -d

Сделайте этот псевдоним

Так как он немного длинный, вы можете добавить псевдоним в .zshrc или .bashrc. Шахта называется gbpurge (для git branches purge):

alias gbpurge='git branch --merged | grep -v "\*" | grep -v "master" | grep -v "develop" | grep -v "staging" | xargs -n 1 git branch -d'

Затем перезагрузите ваш .bashrc или .zshrc:

. ~/.bashrc

или

. ~/.zshrc
48
ответ дан Community 13 August 2018 в 13:38
поделиться
Другие вопросы по тегам:

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