У короткі відповіді
Якщо ви хочете більш детальні пояснення наступних команд, то дивіться довгі відповіді в наступному розділі.
Видалення віддаленої гілки
git push origin --delete <branch> # Git version 1.7.0 or newer
git push origin -d <branch> # Shorter version (Git 1.7.0 or newer)
git push origin :<branch> # Git versions older than 1.7.0
Видалення місцевої філії
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force-delete un-merged branches
Видалення локальної гілки віддаленого відстеження
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete remote-tracking branches
git fetch <remote> -p # Shorter
Довгий відповідь : є три різні гілки , щоб видалити!
Якщо ви маєте справу зі видаленням гілок як локально, так і віддалено, майте на увазі, що тут задіяні три різні гілки :
- Місцева філія
X
.
- Віддалене походження гілка
X
.
- Місцева гілка дистанційного відстеження,
origin/X
яка відстежує віддалену гілку X
.
Використовується оригінальний плакат:
git branch -rd origin/bugfix
Який тільки видалив його локальну дистанційне відстеження гілки origin/bugfix
, а не фактичний віддалений філія bugfix
на origin
.
Щоб видалити цю фактичну віддалену гілку , вам потрібно
git push origin --delete bugfix
Додаткові деталі
У наступних розділах описані додаткові деталі, які слід враховувати при видаленні гілок віддаленого та віддаленого відстеження.
Натискання на видалення віддалених гілок також видаляє гілки віддаленого відстеження
Зауважте, що видалення віддаленої гілки X
з командного рядка за допомогою а git push
також видалить локальну гілку віддаленого відстеження origin/X
, тому не потрібно обрізати застарілу гілку віддаленого відстеження за допомогою git fetch --prune
або git fetch -p
. Однак, це не завадило б, якби ти все-таки зробив це.
Ви можете переконатися, що відділення віддаленого відстеження origin/X
також було видалено, виконавши наступне:
# View just remote-tracking branches
git branch --remotes
git branch -r
# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a
Обрізка застарілого локального походження відділення відстеження / X
Якщо ви не видалили віддалену гілку X
з командного рядка (наприклад, вище), ваш локальний сховище все ще буде містити (тепер застаріле) відділення віддаленого відстеження origin/X
. Це може статися, якщо ви видалили віддалену гілку безпосередньо через веб-інтерфейс GitHub.
Типовим способом видалення цих застарілих гілок віддаленого відстеження (починаючи з версії Git 1.6.6) є просто запустити git fetch
з --prune
або коротше -p
. Зауважте, що це видаляє всі застарілі локальні гілки віддаленого відстеження для будь-яких віддалених гілок, яких більше немає на віддаленому :
git fetch origin --prune
git fetch origin -p # Shorter
Ось відповідна цитата із приміток до випуску 1.6.6 (моє наголос):
"git fetch" дізнався --all
і --multiple
параметри, запустити завантаження з багатьох сховищ та --prune
можливість видалити гілки віддаленого відстеження, які застаріли. Вони роблять "віддалене оновлення git" та "git remote prune" менш необхідним (хоча планувати видалення "віддаленого оновлення" та "віддаленого чорносливу" немає).
Альтернатива вищезазначеної автоматичної обрізки для застарілих віддалених гілок
Крім того, замість того, щоб обрізати застарілі локальні гілки віддаленого відстеження git fetch -p
, ви можете уникнути додаткової операції в мережі , просто видаливши гілки вручну за допомогою --remote
або -r
прапорів:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
Дивись також