Khi nào Git làm mới danh sách các chi nhánh từ xa?


496

Sử dụng git branch --all cho thấy tất cả các chi nhánh từ xađịa phương . Khi nào Git làm mới danh sách này?

Khi kéo / đẩy? Và làm cách nào để làm mới nó bằng Git Bash ?


5
Như một lưu ý, git ls-remotecó thể thú vị ở đây.
jthill

Câu trả lời:


1221

Để cập nhật danh sách địa phương của các chi nhánh từ xa:

git remote update origin --prune

Để hiển thị tất cả các chi nhánh địa phương và từ xa mà (địa phương) Git biết về

git branch -a

143
git remote update origin --prunelà những gì tôi đang tìm kiếm
WonderLand

6
Về sự khác biệt giữa câu trả lời này, sử dụng git remote updatevà câu trả lời được chấp nhận, sử dụng git fetch, xem tại đây
The Red Pea

6
Đây là câu trả lời chính xác. git fetchđã không loại bỏ bộ nhớ cache cục bộ của tôi của các chi nhánh từ xa. Chỉ --prunecó thể làm sạch tất cả.
Felipe Alvarez

23
Bạn có thể có git tự động làm điều này vớigit config remote.origin.prune true
kjhf

8
git remote prune origincó tác dụng tương tự và bạn gõ ít hơn.
Dvin

27

Tôi tin rằng nếu bạn chạy git branch --alltừ Bash rằng danh sách các nhánh từ xa và cục bộ mà bạn nhìn thấy sẽ phản ánh những gì Git địa phương của bạn "biết" về thời điểm bạn chạy lệnh. Vì Git của bạn luôn cập nhật liên quan đến các chi nhánh địa phương trong hệ thống của bạn, nên danh sách các chi nhánh địa phương sẽ luôn chính xác.

Tuy nhiên, đối với các chi nhánh từ xa thì điều này không cần phải như vậy. Git cục bộ của bạn chỉ biết về các nhánh từ xa mà nó đã thấy trong lần tìm nạp cuối cùng (hoặc kéo). Vì vậy, có thể bạn có thể chạy git branch --allkhông thấy một nhánh từ xa mới xuất hiện sau lần cuối bạn tải hoặc kéo.

Để đảm bảo rằng danh sách chi nhánh địa phương từ xa của bạn được cập nhật, bạn có thể thực hiện git fetch trước khi chạy git branch --all.

Để biết thêm thông tin, các nhánh "từ xa" xuất hiện khi bạn chạy hoàn toàn git branch --allkhông phải là điều khiển từ xa; họ thực sự là người địa phương. Ví dụ: giả sử có một nhánh trên điều khiển từ xa featuremà bạn đã kéo ít nhất một lần vào Git cục bộ của mình. Bạn sẽ thấy origin/featuređược liệt kê như một chi nhánh khi bạn chạy git branch --all. Nhưng chi nhánh này thực sự là một chi nhánh Git địa phương . Khi bạn làm như vậy git fetch origin, nhánh theo dõi này sẽ được cập nhật với bất kỳ thay đổi mới nào từ xa. Đây là lý do tại sao trạng thái địa phương của bạn có thể bị cũ, bởi vì có thể có các nhánh từ xa mới hoặc các nhánh theo dõi của bạn có thể trở nên cũ.


4
Đúng, git fetchđã làm nó.
BendEg

14
Lưu ý đối với những người downvoters: Nếu bạn cảm thấy thông tin chính xác với lời giải thích có chủ đích xứng đáng với một downvote, thì ít nhất hãy lên tiếng và để lại nhận xét.
Tim Biegeleisen

3
git fetchkhông làm việc cho tôi, cần thêm --prune. Btw, tôi không downvoter;)
Đức Thanh

3
git fetchkhông xóa các chi nhánh từ xa bị xóa. Đó có lẽ là lý do tại sao một số người bị hạ thấp
Jérôme MEVEL

@ JérômeMEVEL Thật kỳ diệu với tôi rằng câu trả lời được chấp nhận hiện có 1000 lượt upvote. Thật điên rồ ... ước gì tôi có được sự tiếp xúc như vậy :-)
Tim Biegeleisen

24

OP không yêu cầu dọn dẹp cho tất cả các điều khiển từ xa, thay vào đó là tất cả các nhánh của điều khiển từ xa mặc định.

Vì thế git fetch --prune những gì nên được sử dụng.

Thiết lập git config remote.origin.prune truelàm --prunetự động. Trong trường hợp git fetchđó, cũng sẽ cắt tỉa các nhánh từ xa từ bản sao cục bộ. Xem thêm Tự động cắt tỉa với Git lấy hoặc kéo .

Lưu ý rằng điều này không làm sạch các nhánh cục bộ không còn theo dõi một nhánh từ xa. Xem Cách cắt tỉa các nhánh theo dõi cục bộ không còn tồn tại trên remote nữa .


Để làm cho nó ngắn hơn một chútgit fetch -p
Michael Warner

2

Sử dụng git fetchđể lấy tất cả các nhánh được tạo mới nhất.


1
git fetchkhông thay đổi bất cứ điều gì với tôi với git 2.17.1. Phiên bản và tùy chọn nào bạn đang sử dụng?
PointedEars

2
Bạn cần một trong hai --prunehoặc git config remote.NAME.prune trueđể giải quyết câu hỏi OP
Oliver

-1

Nếu bạn đang sử dụng Eclipse và muốn xem các nhánh mới từ thượng nguồn;

Trong phối cảnh Git, nhấp chuột phải vào kho Git và sau đó chọn "Tìm nạp từ thượng nguồn". Điều này lấy các chi nhánh từ xa mới.


-8

Nếu bạn đang sử dụng Eclipse,

  1. Mở "Kho Git"
  2. Tìm Kho lưu trữ của bạn.
  3. Mở "Chi nhánh" rồi "Theo dõi từ xa".

Git

Tất cả họ nên ở trong đó. Nhấp chuột phải và "thanh toán."


Làm thế nào để trả lời câu hỏi này? - "Khi nào Git làm mới danh sách các chi nhánh từ xa?"
Peter Mortensen

Khi tôi muốn làm mới các nhánh địa phương của mình trong nhật thực, tôi đã googled và nó đưa tôi đến đây. Bài đăng này đã thực sự giúp một số người vì nó đã có một số upvote. Có lẽ tôi đã hiểu nhầm câu hỏi. Đối với tôi, Eclipse IS Git (giao diện với nó). Xin lỗi vì đã xúc phạm tất cả mọi người!
markthegrea
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.