Làm thế nào để loại bỏ một chi nhánh địa phương?


159

Tôi có một chủ và một chi nhánh dev trong kho lưu trữ của tôi. Tôi muốn xóa nhánh chính khỏi máy tính của mình để không vô tình cam kết với nó (nó đã xảy ra ..).

Có những câu hỏi ở đây về cách xóa các nhánh cục bộ từ xa, nhưng tôi không thể tìm ra cách chỉ xóa một nhánh cục bộ.

Một câu trả lời cho biết sử dụng điều này:

git branch -d local_branch_name

Nhưng tôi đã thử điều đó và chi nhánh vẫn xuất hiện trong ứng dụng GitHub.


Đầu ra từ lệnh đó là gì? Bạn đang ở chi nhánh nào? Làm thế nào nó xuất hiện trong giao diện điều khiển?
SLaks

@SLaks Tôi đã có một loại trong câu hỏi của tôi. Trong bảng điều khiển, nó thực sự nói rằng nhánh đã bị xóa, nhưng trong ứng dụng GitHub (ngay cả sau khi khởi động lại), nhánh và cam kết vẫn hiển thị. Đầu ra làDeleted branch master (was e8a8e29).
Nate

GitHub cho Windows cũng hiển thị các chi nhánh từ xa
SLaks

@SLaks Vì vậy, sau khi xóa chi nhánh cục bộ, nếu tôi nhấp vào nó trong ứng dụng GitHub cho Windows thì nó có được sao chép lại không? Tôi muốn ngăn bản thân mình có thể thay đổi trực tiếp đến nhánh chính.
Nate

Câu trả lời:


114

Tôi nghĩ (dựa trên ý kiến ​​của bạn) rằng tôi hiểu những gì bạn muốn làm: bạn muốn bản sao lưu trữ cục bộ của mình không có chi nhánh địa phương thông thường master, cũng không phải chi nhánh theo dõi từ xa origin/master, mặc dù kho lưu trữ mà bạn đã nhân bản của github Đây là một chi nhánh địa phương mastermà bạn không muốn xóa khỏi phiên bản github.

Bạn có thể làm điều này bằng cách xóa nhánh theo dõi từ xa cục bộ, nhưng nó sẽ quay trở lại mỗi khi bạn yêu cầu git của bạn đồng bộ hóa kho lưu trữ cục bộ của bạn với kho lưu trữ từ xa, bởi vì git của bạn hỏi git của bạn "bạn có những nhánh nào" và nó nói "Tôi có master" để git (re) origin/mastercủa bạn tạo cho bạn, để kho lưu trữ của bạn có những gì họ có.

Để xóa chi nhánh theo dõi từ xa cục bộ bằng giao diện dòng lệnh:

git branch -d -r origin/master

nhưng một lần nữa, nó sẽ quay trở lại khi đồng bộ hóa lại. Đó khả năng để đánh bại này là tốt (sử dụng remote.origin.fetchthao tác), nhưng bạn có lẽ tốt hơn hết chỉ cần bị xử lý kỷ luật, đủ để không tạo ra hoặc sửa đổi mastertại địa phương.




17

Theo tôi có thể hiểu được vấn đề ban đầu, bạn đã thêm các cam kết với chủ địa phương do nhầm lẫn và chưa thúc đẩy các thay đổi đó. Bây giờ bạn muốn hủy các thay đổi của mình và hy vọng xóa các thay đổi cục bộ của bạn và tạo một nhánh chính mới từ xa.

Bạn chỉ có thể đặt lại các thay đổi của mình và tải lại chủ từ máy chủ từ xa:

git reset --hard origin/master

13

Ứng dụng Github cho Windows hiển thị tất cả các nhánh từ xa của kho lưu trữ. Nếu bạn đã xóa chi nhánh cục bộ với $ git branch -d [branch_name], nhánh từ xa vẫn tồn tại trong kho Github của bạn và sẽ xuất hiện bất kể trong ứng dụng Windows Github.

Nếu bạn muốn xóa chi nhánh hoàn toàn (từ xa), hãy sử dụng lệnh trên kết hợp với $ git push origin :[name_of_your_new_branch]. Cảnh báo: lệnh này xóa tất cả các nhánh hiện có và có thể gây mất mã. Hãy cẩn thận, tôi không nghĩ rằng đây là những gì bạn đang cố gắng làm.

Tuy nhiên, mỗi khi bạn xóa các thay đổi của nhánh cục bộ, nhánh từ xa sẽ vẫn xuất hiện trong ứng dụng. Nếu bạn không muốn tiếp tục thay đổi, chỉ cần bỏ qua nó và không nhấp, nếu không bạn có thể sao chép kho lưu trữ. Nếu bạn có thêm bất kỳ câu hỏi, xin vui lòng cho tôi biết.


1

bạn cần chuyển sang một chi nhánh khác và thử tương tự.

chi nhánh git -d


1
Đây có phải là một câu trả lời? Hoặc một sự làm rõ q đốt? Hay một câu hỏi đơn giản? Nó quá ngắn tôi không thể nói. Bạn có muốn giải thích?
Yunnosch

0

Theo thẻ của bạn, tôi giả sử bạn sử dụng Github. Tại sao không tạo một số quy tắc bảo vệ chi nhánh cho chi nhánh chính của bạn? Theo cách đó, ngay cả khi bạn cố gắng đẩy lên thành thạo, nó sẽ từ chối nó.

1) Chuyển đến tab 'Cài đặt' trong repo của bạn trên Github.

2) Nhấp vào 'Chi nhánh' trên menu bên trái.

3) Nhấp vào 'Thêm quy tắc'

4) Nhập 'master' cho mẫu nhánh.

5) Kiểm tra 'Yêu cầu đánh giá yêu cầu kéo trước khi hợp nhất'

Tôi cũng sẽ khuyên bạn nên làm tương tự cho chi nhánh dev của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.