2011-09-27 24 views
6

Nếu các nhà phát triển khác đẩy chi nhánh cục bộ của họ vào một kho lưu trữ từ xa được chia sẻ trước khi cam kết chia sẻ (để chia sẻ, sao lưu hoặc lưu trữ chúng) máy), có cách nào để tôi dễ dàng chỉ lấy các nhánh của riêng mình hoặc xóa một cách có chọn lọc các tham chiếu cục bộ đến các nhánh từ xa của người khác không? Nếu không, có cách nào để chỉ hiển thị một tập hợp con của các nhánh từ xa trong gitk, vì vậy tôi có thể thấy các nhánh của tôi có liên quan đến các nhánh từ xa của tôi không, nhưng không có đồ thị lộn xộn bởi các nhánh xa của mọi người?Chỉ tìm nạp một tập hợp con của các nhánh git từ xa hoặc chỉ hiển thị một tập hợp con trong gitk

+0

Tôi hy vọng rằng tôi đã chỉnh sửa một chút cho tiêu đề của bạn vì từ xa "git" là một khái niệm riêng biệt từ một nhánh trong điều khiển từ xa - câu hỏi của bạn là về sau, và tiêu đề là một chút sai lầm. –

+0

Nói về 'thân cây' trong ngữ cảnh Git hơi lạ, phải không? – knittl

Trả lời

5

Dưới đây là một cách để chỉ lấy chi nhánh cụ thể từ một từ xa:

Các refs (bao gồm cả chi nhánh) được lấy từ một từ xa được kiểm soát với các tùy chọn cấu hình remote.<remote-name>.fetch. Ví dụ, remote.origin.fetch của bạn có lẽ là refspec:

+refs/heads/*:refs/remotes/origin/* 

... có nghĩa là để làm cho lấy tên của tất cả các refs dưới refs/heads/ trong kho từ xa, và làm cho họ phát hành theo refs/remotes/origin/ trong kho lưu trữ tại địa phương. (+ có nghĩa là thực hiện cập nhật bắt buộc, vì vậy các chi nhánh theo dõi từ xa của bạn có thể được cập nhật ngay cả khi bản cập nhật không chuyển tiếp nhanh.)

Thay vào đó, bạn có thể liệt kê nhiều phân đoạn xác định các nhánh cụ thể để tìm nạp, ví dụ: thay đổi điều này bằng:

git config remote.origin.fetch +refs/heads/master:refs/remotes/origin/master 
git config --add remote.origin.fetch +refs/heads/blah:refs/remotes/origin/blah 

... và sau đó lần sau chỉ masterblah sẽ được tìm nạp.

Tất nhiên, bạn đã có nhiều chi nhánh theo dõi từ xa, và gitk sẽ vẫn hiển thị các chi nhánh đó. Bạn có thể xóa từng mục mà bạn không quan tâm với:

git branch -r -d origin/uninteresting 
+0

Thay vì xóa từng nhánh theo dõi từ xa một cách riêng biệt, bạn sẽ có thể thực hiện 'git remote prune origin', mà tôi nghĩ sẽ lấy fetchspecs vào xem xét – knittl

+0

@knittl: Tài liệu không đề xuất điều đó, và tôi vừa thử nghiệm trong git 1.7.0.4, với 'remote.origin.fetch = + refs/heads/master: refs/remotes/origin/master' và nó dường như không loại bỏ chúng ... –

+0

ok, sai giả định từ phía tôi:) sẽ rất thú vị nếu được coi là hành vi mong đợi – knittl

Các vấn đề liên quan