Những câu trả lời ngắn
Nếu bạn muốn giải thích chi tiết hơn về các lệnh sau, hãy xem câu trả lời dài trong phần tiếp theo.
Xóa một nhánh từ xa
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
Xóa một chi nhánh địa phương
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force-delete un-merged branches
Xóa một nhánh theo dõi từ xa cục bộ
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
Các câu trả lời dài : có ba chi nhánh khác nhau để xóa!
Khi bạn đang xử lý xóa các nhánh cả cục bộ và từ xa, hãy nhớ rằng có ba nhánh khác nhau có liên quan :
- Các chi nhánh địa phương
X
.
- Các chi nhánh nguồn gốc từ xa
X
.
- Nhánh theo dõi từ xa cục bộ theo dõi nhánh
origin/X
từ xa X
.
Các poster ban đầu được sử dụng:
git branch -rd origin/bugfix
Mà chỉ xóa chi nhánh theo dõi từ xa cục bộ của mình origin/bugfix
, và không phải chi nhánh từ xa thực tế bugfix
trên origin
.
Để xóa chi nhánh từ xa thực tế đó , bạn cần
git push origin --delete bugfix
Chi tiết bổ sung
Các phần sau đây mô tả chi tiết bổ sung cần xem xét khi xóa các nhánh theo dõi từ xa và theo dõi từ xa của bạn.
Nhấn để xóa các nhánh từ xa cũng loại bỏ các nhánh theo dõi từ xa
Lưu ý rằng việc xóa nhánh từ xa X
khỏi dòng lệnh bằng cách sử dụng a git push
cũng sẽ xóa nhánh theo dõi từ xa cục bộ origin/X
, do đó không cần thiết phải cắt nhánh theo dõi từ xa đã lỗi thời bằng git fetch --prune
hoặc git fetch -p
. Tuy nhiên, nó sẽ không đau nếu bạn làm điều đó.
Bạn có thể xác minh rằng nhánh theo dõi từ xa origin/X
cũng bị xóa bằng cách chạy như sau:
# 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
Cắt xén nguồn gốc chi nhánh theo dõi từ xa cục bộ / X
Nếu bạn không xóa chi nhánh từ xa X
khỏi dòng lệnh (như trên), thì kho lưu trữ cục bộ của bạn sẽ vẫn chứa (một nhánh theo dõi từ xa đã lỗi thời) origin/X
. Điều này có thể xảy ra nếu bạn xóa một chi nhánh từ xa trực tiếp qua giao diện web của GitHub.
Một cách điển hình để loại bỏ các nhánh theo dõi từ xa lỗi thời này (kể từ phiên bản Git 1.6.6) là chỉ cần chạy git fetch
với --prune
hoặc ngắn hơn -p
. Lưu ý rằng việc này sẽ xóa tất cả các nhánh theo dõi từ xa cục bộ đã lỗi thời đối với mọi nhánh từ xa không còn tồn tại trên điều khiển từ xa :
git fetch origin --prune
git fetch origin -p # Shorter
Dưới đây là trích dẫn có liên quan từ ghi chú phát hành 1.6.6 (nhấn mạnh của tôi):
"git fetch" đã học --all
và --multiple
các tùy chọn, để chạy tìm nạp từ nhiều kho lưu trữ và --prune
tùy chọn để loại bỏ các nhánh theo dõi từ xa đã cũ. Những điều này làm cho "git remote update" và "git remote prune" ít cần thiết hơn (mặc dù không có kế hoạch loại bỏ "cập nhật từ xa" hay "prune remote").
Thay thế cho việc cắt tỉa tự động ở trên cho các nhánh theo dõi từ xa lỗi thời
Ngoài ra, thay vì cắt tỉa các nhánh theo dõi từ xa cục bộ đã lỗi thời của bạn git fetch -p
, bạn có thể tránh thực hiện thêm thao tác mạng bằng cách chỉ xóa thủ công các nhánh bằng --remote
hoặc -r
cờ:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
Xem thêm