Bạn đã bao giờ rơi vào tình huống có cả đống cành cây lộn xộn và muốn dọn dẹp chưa?
Quá trình này thực sự khá đơn giản. Tất cả những gì bạn cần là một số mẫu biểu thức chính quy để nhắm mục tiêu tên nhánh, sau đó bạn lướt qua chúng
Lệnh trông như thế này
$ git branch | grep [PATTERN] | xargs git branch -D
Đây là ba lệnh được kết hợp với nhau. Đây là cách họ làm việc
2 in danh sách các chi nhánh. Nó đứng trước nhánh hiện tại với dấu hoa thịgit branch
3 tìm kiếm danh sách và trả về những dòng phù hợp với mẫugit branch
4 cung cấp cho chúng tôi danh sách được trả về từgit branch
5, sau đó chúng tôi chuyển những danh sách đó chogit branch
6, thao tác này sẽ xóa nhánhgit branch
Kiểm tra nó đầu tiên
Có thể hữu ích khi thực hiện nhanh hai lệnh đầu tiên để bạn biết mình sẽ xóa gì. Ví dụ: để xem danh sách tất cả các nhánh, ngoại trừ nhánh hiện tại, bạn có thể chạy lệnh này
$ git branch | grep "^[ ]"
Thiết lập một mô hình
Có một khuôn mẫu về cách bạn đặt tên cho các nhánh có thể hữu ích khi dọn dẹp như thế này. Ví dụ: tôi thường đặt trước các nhánh bằng một số khi chúng đang giải quyết một vấn đề cụ thể. Để cung cấp danh sách các nhánh bắt đầu bằng một số, tôi có thể chạy lệnh này
Sau một thời gian, danh sách các nhánh git cục bộ của bạn có thể vượt khỏi tầm kiểm soát, đặc biệt nếu bạn thực hiện tất cả quá trình phát triển của mình trên một nhánh, tạo yêu cầu kéo, hợp nhất nó với nhánh chính và sau đó xóa nhánh git từ xa khi nó được sáp nhập vào nhánh chính. Khi nhánh bị xóa trên kho lưu trữ từ xa, không cần phải giữ nó cục bộ nữa
Dưới đây là lệnh xóa tất cả các nhánh cục bộ đã được hợp nhất vào nhánh chính. Nếu bạn git trunk branch không phải main hoặc bạn muốn xóa tất cả các nhánh đã gộp thành nhánh khác với nhánh chính thì chỉ cần thay đổi 2 chỗ trong lệnh main thành tên nhánh của bạn là gì
Xóa các nhánh đã gộp vào nhánh chính
Mở git bash và điều hướng đến kho lưu trữ git mà bạn muốn dọn dẹp
Lấy bản mới nhất từ git
git fetch
Xem danh sách các chi nhánh git địa phương
git branch
Xóa tất cả các nhánh cục bộ đã được hợp nhất với nhánh chính
git branch --merged main | grep -v "^\* main" | xargs -n 1 -r git branch -d
Xem danh sách các nhánh git địa phương còn lại
git branch
Xóa các nhánh cục bộ không còn tồn tại trên điều khiển từ xa
Mở git bash và điều hướng đến kho lưu trữ git mà bạn muốn dọn dẹp
Lấy bản mới nhất từ git
git fetch
Xem danh sách các chi nhánh git địa phương
git branch
Xóa tất cả các nhánh cục bộ đã được hợp nhất với nhánh chính
________số 8
Xem danh sách các nhánh git địa phương còn lại
git branch
Tuy nhiên, nếu bạn muốn xóa một nhánh như vậy [e. g. bởi vì bạn đã tự lập trình vào ngõ cụt và tạo ra các cam kết không đáng để giữ], bạn có thể làm như vậy với cờ "-D"
$ git branch | grep "^[ ]"
0Điều này sẽ buộc xóa nhánh, ngay cả khi nó chứa các xác nhận chưa được hợp nhất/chưa được xử lý. Nó đi mà không nói. hãy cẩn thận với lệnh này
Tôi có thể hoàn tác việc xóa một chi nhánh không?
Trong hầu hết các trường hợp, nếu bạn không để quá nhiều thời gian, bạn có thể khôi phục nhánh đã xóa
Nếu bạn đang làm việc với Git trên Dòng lệnh, bạn nên xem qua công cụ Git có tên "Reflog". Tìm hiểu thêm về điều này trong loạt video Bộ sơ cứu miễn phí dành cho Git của chúng tôi
Nếu bạn đang sử dụng ứng dụng khách Tower Git, bạn chỉ cần nhấn CMD + Z - giống như bạn sẽ hoàn tác các thay đổi trong trình soạn thảo văn bản - để hoàn tác việc xóa và khôi phục nhánh
Bạn đã chất đống rất nhiều cành cây mà bạn thậm chí không sử dụng nữa và muốn dọn dẹp chúng?
Ghi chú. Chỉ sử dụng cái này nếu bạn chắc chắn rằng các nhánh không còn cần thiết nữa
Xóa chi nhánh địa phương
Bạn có thể xóa một nhánh cục bộ đã được hợp nhất vào điều khiển từ xa và cũng có thể xóa một nhánh cục bộ chưa được hợp nhất. Bạn muốn chắc chắn rằng bạn biết nhánh nào được hợp nhất hay không và để làm điều đó, bạn có thể sử dụng các lệnh sau
2 - để liệt kê tất cả các chi nhánh địa phươnggit branch
8 - để liệt kê tất cả các chi nhánh từ xagit branch
9 - để liệt kê cả các chi nhánh địa phương và từ xagit branch
10 - để liệt kê tất cả các chi nhánh đã được hợp nhất$ git branch | grep "^[ ]"
11 - để liệt kê tất cả các nhánh không được hợp nhất$ git branch | grep "^[ ]"
Bây giờ để xóa các nhánh cục bộ, bạn muốn thực hiện một trong hai cách này
$ git branch | grep "^[ ]"
3Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Xóa nhiều chi nhánh địa phương
Cảm thấy đủ tự tin và bạn muốn xóa nhiều nhánh cục bộ, bạn có thể thực hiện bằng cách sử dụng lệnh
Ghi chú. Bạn cần cẩn thận khi thực hiện việc này để không xóa một nhánh chưa được hợp nhất và thêm cờ
12 giúp xác định rằng bạn không làm điều đó$ git branch | grep "^[ ]"
$ git branch | grep "^[ ]"
1Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Để giải thích rõ hơn về lệnh trên,
$ git branch | grep "^[ ]"
10 sẽ liệt kê tất cả các nhánh đã hợp nhất, $ git branch | grep "^[ ]"
14 sẽ đảm bảo nhánh chính và nhánh chính không bị xóa, bạn có thể thêm các nhánh khác mà bạn muốn loại trừ tại đây. $ git branch | grep "^[ ]"
15 sẽ tiếp tục và xóa các nhánh còn lại$ git branch | grep "^[ ]"
9Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Xóa chi nhánh từ xa
Trong trường hợp bạn cần xóa nhánh từ xa vì bạn đã hoàn thành công việc trên nhánh đó và nhánh đó đã được hợp nhất vào nhánh chính từ xa. Bạn có thể xóa một nhánh từ xa bằng cách sử dụng cờ
$ git branch | grep "^[ ]"
16 và git Push tới nhánh từ xagit fetch
1Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Xóa nhiều chi nhánh từ xa
Khi bạn cần xóa nhiều nhánh từ xa và không muốn thực hiện chúng riêng lẻ bằng lệnh đã nêu trước đó, bạn có thể thực hiện bằng cách sử dụng
git fetch
2Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Thao tác này sẽ xóa tất cả các nhánh đã hợp nhất từ xa ngoại trừ
$ git branch | grep "^[ ]"
17 và $ git branch | grep "^[ ]"
18. Để giải thích thêm về lệnh
19 - sẽ liệt kê tất cả các nhánh từ xa được hợp nhất$ git branch | grep "^[ ]"
14 - loại trừ nhánh chính và nhánh chính$ git branch | grep "^[ ]"
91 - bởi vì các nhánh từ xa có tiền tố là$ git branch | grep "^[ ]"
92, lệnh này sẽ lọc phần đó ra để nó chỉ trả về tên nhánh$ git branch | grep "^[ ]"
93 - xóa các nhánh còn lại$ git branch | grep "^[ ]"
Bây giờ nếu bạn cảm thấy rất tự tin và muốn xóa tất cả các nhánh chưa hợp nhất hoặc tất cả các nhánh từ xa, hãy sử dụng cái này
git branch
0Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Tôi đã thêm lệnh
$ git branch | grep "^[ ]"
94 để in những gì tôi sẽ làm ra màn hình để tôi chắc chắn rằng mình biết mình sắp xóa những gì