Git lấy chi nhánh từ xa


2261

Đồng nghiệp của tôi và tôi đang làm việc trên cùng một kho lưu trữ. Chúng tôi đã phân nhánh nó thành hai nhánh, mỗi nhánh về mặt kỹ thuật cho các dự án khác nhau, nhưng chúng có những điểm tương đồng, vì vậy đôi khi chúng tôi muốn cam kết trở lại * mastertừ branch.

Tuy nhiên, tôi có branch. Làm thế nào đồng nghiệp của tôi có thể kéo chi nhánh đó cụ thể?

Một git clonetrong những kho lưu trữ dường như không tạo ra các nhánh cục bộ cho anh ta, mặc dù tôi có thể thấy chúng sống không ổn định sau một nỗ lực thúc đẩy tôi.

Ngoài ra, khi tôi ban đầu làm chi nhánh, tôi đã làm -b checkout. Điều đó có làm cho nhiều sự khác biệt?

$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master

$ git fetch origin discover
$ git checkout discover

Đây là những lệnh tôi đã chạy. Nhưng nó chắc chắn không hoạt động.

Tôi muốn có thể kiểm tra chi nhánh đó và sau đó đẩy và cam kết chỉ các chi nhánh thay đổi từ các cộng tác viên hoặc máy trạm khác nhau .



33
Tôi đã sử dụng : git fetch --all, Sau đó để xem tất cả các chi nhánh:, git branchSau đó, tôi kiểm tra chi nhánh:git checkout nameofnewbranch
Jeff Mattson



6
git fetch origin discover:discover && git checkout discover
Gayan Weerakutti

Câu trả lời:


3061

Bạn cần tạo một nhánh cục bộ theo dõi một nhánh từ xa. Lệnh sau sẽ tạo một nhánh cục bộ có tên là daves_branch , theo dõi nguồn gốc của nhánh từ xa / daves_branch . Khi bạn thay đổi, chi nhánh từ xa sẽ được cập nhật.

Đối với các phiên bản gần đây nhất của Git:

git checkout --track origin/daves_branch

--tracklà viết tắt cho git checkout -b [branch] [remotename]/[branch]nơi [remotename] là nguồn gốc trong trường hợp này và [nhánh] giống nhau gấp đôi, daves_branch trong trường hợp này.

Đối với Git 1.5.6.5, bạn cần điều này:

git checkout --track -b daves_branch origin/daves_branch

Đối với Git 1.7.2.3 trở lên, điều này là đủ (có thể đã bắt đầu sớm hơn, nhưng đây là xác nhận sớm nhất tôi có thể tìm thấy nhanh chóng):

git checkout daves_branch

Lưu ý rằng với các phiên bản Git gần đây, lệnh này sẽ không tạo ra một nhánh cục bộ và sẽ đưa bạn vào trạng thái 'tách rời'. Nếu bạn muốn một chi nhánh địa phương, sử dụng --tracktùy chọn.

Chi tiết đầy đủ có tại đây: Chi nhánh 3,5 Git - Chi nhánh từ xa, Chi nhánh theo dõi


134
"git fetch" để đảm bảo repo của bạn được cập nhật với các tham chiếu từ xa và "git checkout --track origin / Discover" là đủ. Sau đó, bạn có thể cam kết với chi nhánh đó và "git đẩy" để đồng bộ hóa điều khiển từ xa với các thay đổi của bạn.
ralphtheninja

33
Tôi đã thử điều này và nhận được "fatal: git checkout: cập nhật đường dẫn không tương thích với các nhánh chuyển đổi. Bạn có định kiểm tra 'ngược dòng / phát triển' mà không thể giải quyết như cam kết không?". Tôi có làm điều gì sai?
Neil Barnwell

42
Có vẻ như git 1.5.6.5 cần điều này thay vào đó: git checkout --track -b origin / daves_branch
Charlie

35
Điều này đã gây rắc rối cho tôi, nó đã tạo ra một chi nhánh địa phương có tên là origin / <chi nhánh> hiện không rõ ràng với nguồn gốc chi nhánh từ xa / <chi nhánh> và tôi không biết làm thế nào để thoát khỏi chi nhánh điên rồ!
Alan Moore

24
Bạn cần thêm tên chi nhánh địa phương một cách rõ ràng, nếu không git sẽ tạo một chi nhánh địa phương mới với đường dẫn chi nhánh đầy đủ, như @AlanMoore và @ derekmx271 đã nêu ở trên:git checkout -b --track daves_branch origin/daves_branch
Mike Scott

961

Tôi đã sử dụng fetchtheo sau checkout...

git fetch <remote> <rbranch>:<lbranch>
git checkout <lbranch>

... ở đâu <rbranch>là nhánh từ xa hoặc ref nguồn<lbranch>là nhánh cục bộ hoặc ref đích chưa tồn tại mà bạn muốn theo dõi và bạn có thể muốn đặt tên giống như nhánh từ xa hoặc ref nguồn. Điều này được giải thích dưới các tùy chọn trong giải thích .<refspec>

Git rất thông minh, nó tự động hoàn thành lệnh đầu tiên nếu tôi tab sau vài chữ cái đầu tiên của nhánh từ xa. Đó là, tôi thậm chí không phải đặt tên cho chi nhánh địa phương, Git tự động sao chép tên của chi nhánh từ xa cho tôi. Cảm ơn Git!

Cũng như câu trả lời trong bài đăng Stack Overflow tương tự này cho thấy, nếu bạn không đặt tên chi nhánh địa phương fetch, bạn vẫn có thể tạo nó khi bạn kiểm tra nó bằng cách sử dụng -bcờ. Đó là, git fetch <remote> <branch> theo sau là git checkout -b <branch> <remote>/<branch>chính xác như câu trả lời ban đầu của tôi. Và rõ ràng, nếu kho lưu trữ của bạn chỉ có một điều khiển từ xa, thì bạn chỉ có thể thực hiện git checkout <branch>sau fetchđó và nó sẽ tạo ra một nhánh cục bộ cho bạn. Ví dụ: bạn chỉ cần sao chép một kho lưu trữ và muốn kiểm tra các nhánh bổ sung từ xa.

Tôi tin rằng một số tài liệu cho fetchcó thể đã được sao chép nguyên văn từ pull. Cụ thể, phần trên <refspec>trong các tùy chọn là như nhau. Tuy nhiên, tôi không tin điều đó fetchsẽ xảy ra merge, vì vậy nếu bạn để trống phía đích của dấu hai chấm, fetch không nên làm gì .

LƯU Ý: git fetch <remote> <refspec>là viết tắt của từ git fetch <remote> <refspec>:đó sẽ không làm gì, nhưng git fetch <remote> <tag>cũng giống như git fetch <remote> <tag>:<tag>sao chép từ xa <tag>cục bộ.

Tôi đoán điều này chỉ hữu ích nếu bạn muốn sao chép một chi nhánh từ xa cục bộ, nhưng không nhất thiết phải kiểm tra nó ngay lập tức. Mặt khác, bây giờ tôi sẽ sử dụng câu trả lời được chấp nhận , được giải thích chi tiết trong phần đầu tiên của mô tả thanh toán và sau đó trong phần tùy chọn theo giải thích --track, vì đó là một lớp lót. Chà ... sắp xếp một lớp lót, bởi vì bạn vẫn sẽ phải chạy git fetch <remote>trước.

FYI: Thứ tự của <refspecs>(nguồn: đích) giải thích phương pháp kỳ lạ trước Git 1.7 để xóa các nhánh từ xa . Đó là, đẩy không có gì vào refspec đích.


8
Bạn cho rằng tự động hoàn thành Git là thiết lập. code-worrier.com/blog/autocomplete-git
antonagestam

2
Điều này làm việc cho tôi để có được mã từ xa vào một chi nhánh địa phương. Tuy nhiên, nó không nhận được chi nhánh địa phương của tôi để theo dõi chi nhánh từ xa.
Aknosis

1
Vì một số lý do, tôi git fetch remote branchđã không thêm một chi nhánh cho tôi, mặc dù tất cả các giới thiệu đã được tải xuống, vì vậy khi tôi cố gắng làm theo các bước trong câu trả lời được chấp nhận, tôi đã nhận được lỗi đó pathspec did not match any file(s) known to git., nhưng rbranch:lbranchcách tiếp cận đã có hiệu quả. Thật thú vị, nó cũng đã tìm nạp tất cả các thẻ bắt đầu với cùng một tiền tố, giống như nó là một ký tự đại diện ( rbranch*).
haridsv

3
Nit: git không thực hiện tự động hoàn thành, đó là bash shell đang làm điều đó.
hợp pháp hóa

1
FWIW, tôi nghĩ rằng sự khác biệt giữa câu trả lời này và câu trả lời được chấp nhận là câu trả lời này cho bạn biết để thực hiện fetchlệnh. Đó là câu trả lời được chấp nhận mặc dù có ý nghĩa bởi vì OP lưu ý rằng anh ta đã thực hiện tìm nạp. Đó ít nhất là vấn đề tôi gặp phải.
tenor528

373

Nếu bạn đang cố gắng "kiểm tra" một chi nhánh từ xa mới (chỉ tồn tại trên điều khiển từ xa chứ không phải cục bộ), đây là những gì bạn cần:

git fetch origin
git checkout --track origin/<remote_branch_name>

Điều này giả định bạn muốn lấy từ nguồn gốc . Nếu không, thay thế nguồn gốc bằng tên từ xa của bạn .


1
Làm việc cho tôi, tôi đã không tìm được chi nhánh từ xa chính xác để câu trả lời được chấp nhận liên tục thất bại với tôi với một thông điệp khó hiểu. +1
Nathan Hinchey

Thông thường, tôi sử dụng git fetch, nhưng điều khác biệt giữa nguồn gốc git fetch và git fetch là gì?
Ping Woo

@PingWoo Giả sử rằng nhánh bạn muốn tìm nạp nằm trong nguồn gốc từ xa, cả hai git fetchgit fetch remotesẽ làm điều tương tự. Nếu bạn cần tìm nạp từ xa origin, bạn có thể sử dụng git fetch <other_remote_name>. Tình huống này rất không phổ biến, chỉ cần đề cập ở đây cho đầy đủ.
paneer_tikka

1
Tôi gần như đập đầu vào PC khi thử tất cả các giải pháp này. Hóa ra, tôi có một lỗi đánh máy trong tên chi nhánh của mình, ngớ ngẩn hehe.
Dev Yego

126

Để kiểm tra myBranch tồn tại từ xa chứ không phải cục bộ - Điều này hiệu quả với tôi:

git fetch --all
git checkout myBranch

Tôi nhận được tin nhắn này:

Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'

1
Nói cách khác, bạn không phải viết -t?
Andrew Samuelsen

4
Tôi nghĩ rằng có một lỗi trong câu trả lời này. Ban đầu tôi đã thực hiện lệnh mà không có -tvà nhận You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout.vì không có một nhánh địa phương cùng tên. Tôi đã phải chạy lại với -tđể sửa chữa.
stanri

1
Điều này làm việc tốt cho tôi - đồng nghiệp của tôi đã thêm một chi nhánh từ xa mới mà tôi muốn thêm vào repo địa phương của tôi. Tôi tiếp tục tìm nạp nhưng không thấy chi nhánh mới xuất hiện tại địa phương. Không nhận ra rằng tôi chỉ có thể chạy checkoutcho nó để tạo ra nó. Cảm ơn!
skwidbreth

2
phụ thuộc vào phiên bản git. Phiên bản mới nhất, như đã nói ở những nơi khác ở đây, chỉ cần kiểm tra git <tên của chi nhánh về nguồn gốc>. HÃY CẨN THẬN VỚI CÙNG TÊN ĐỊA PHƯƠNG vs TỪ
XÁC NHẬN

--allkhông bao giờ là một ý tưởng tốt, bởi vì nó sẽ tải xuống mọi tập tin trên mỗi chi nhánh. Nó sẽ mất nhiều thời gian và không gian hơn. Tốt hơn là nên cụ thể với tên chi nhánh và làm như thế này
Honey

53

Sử dụng git branch -a(cả các nhánh cục bộ và từ xa) hoặc git branch -r(chỉ các nhánh từ xa) để xem tất cả các điều khiển từ xa và các nhánh của chúng. Sau đó, bạn có thể thực hiện một git checkout -t remotes/repo/branchđiều khiển từ xa và tạo một nhánh cục bộ.

Ngoài ra còn có một lệnh git-ls-remote để xem tất cả các ref và thẻ cho điều khiển từ xa đó.


git checkout remotes/repo/branchlàm cho kiểm tra git tìm kiếm một pathspec, không phải là một repo từ xa.
Erin

1
Có, thậm chí có thể kiểm tra một chi nhánh trên repo từ xa? Rõ ràng (hoặc có thể nó không quá rõ ràng), điều khiển từ xa được tìm nạp trước tiên để bạn có chúng ở địa phương. Cuốn sách git có một phần hay về chúng: git-scm.com/book/en/Git-Branching-Remote-Branches
Daniel Lee

43

Tiêu đề và câu hỏi bị nhầm lẫn:

  • Git lấy chi nhánh từ xa
  • làm thế nào đồng nghiệp của tôi có thể kéo chi nhánh đó một cách cụ thể.

Nếu câu hỏi là, làm thế nào tôi có thể làm cho một chi nhánh từ xa để làm việc với, hoặc làm thế nào tôi có thể kiểm tra một chi nhánh từ xa? , một giải pháp đơn giản hơn là:

Với Git (> = 1.6.6), bạn có thể sử dụng:

git checkout <branch_name>

Nếu <branch_name>không tìm thấy cục bộ , nhưng có tồn tại một nhánh theo dõi trong chính xác một điều khiển từ xa có tên phù hợp, hãy coi nó là tương đương với:

git checkout -b <branch_name> --track <remote>/<branch_name>

Xem tài liệu để kiểm tra Git

Dành cho bạn của bạn:

$ git checkout discover
Branch discover set up to track remote branch discover
Switched to a new branch 'discover'

Cảm ơn Guillaume! Tôi vừa sử dụng lệnh này và đã viết một bài về nó để mô tả trường hợp chính xác của tôi: leniel.net/2014/05/ trên
Maccaferri

<! - kiểm tra git <tên chi nhánh từ xa> -> hoạt động như mong đợi, Cảm ơn Guillaume!
Sachidananda Naik

36

Cách dễ nhất để làm điều đó, ít nhất là đối với tôi:

git fetch origin <branchName> # Will fetch the branch locally
git checkout <branchName> # To move to that branch

1
Không mang các chi nhánh khác
Benjamin Harel

7
@BenjaminHarel câu hỏi nói "lấy một nhánh từ xa" không phải tất cả các nhánh. để làm theo, điều này có thể hữu ích cho bạn stackoverflow.com/questions/10312521/
Khăn

2
Sau khi sử dụng fetchlệnh này, nhánh yêu cầu sẽ có sẵn trên máy cục bộ. git checkout -b 'your_branch' origin/'remote branch'là cần thiết để kiểm tra chi nhánh này.
Abhijeet

30

Sử dụng:

git checkout -b serverfix origin/serverfix

Đây là một hoạt động đủ phổ biến mà Git cung cấp tốc --trackký:

git checkout --track origin/serverfix

Trên thực tế, điều này phổ biến đến mức thậm chí còn có một phím tắt cho phím tắt đó. Nếu tên chi nhánh bạn đang cố kiểm tra (a) không tồn tại và (b) khớp chính xác với một tên chỉ trên một điều khiển từ xa, Git sẽ tạo một nhánh theo dõi cho bạn:

git checkout serverfix

Để thiết lập một chi nhánh địa phương có tên khác với chi nhánh từ xa, bạn có thể dễ dàng sử dụng phiên bản đầu tiên với một tên chi nhánh địa phương khác:

git checkout -b sf origin/serverfix

Bây giờ, chi nhánh địa phương của bạn sfsẽ tự động kéo từ origin/serverfix.

Nguồn: Pro Git, tái bản lần 2 , được viết bởi Scott Chacon và Ben Straub (cắt cho dễ đọc)


Những tốc ký đó là một bài học
Z. Khullah


18

Để tìm nạp một nhánh tồn tại trên điều khiển từ xa, cách đơn giản nhất là:

git fetch origin branchName
git checkout branchName

Bạn có thể thấy nếu nó đã tồn tại trên remote với:

git branch -r

Điều này sẽ tìm nạp chi nhánh từ xa đến địa phương của bạn và sẽ tự động theo dõi chi nhánh từ xa.


2
Làm thế nào để câu hỏi này không có nhiều upvote? Tôi có thể sai nhưng điều này dường như chắc chắn đã tạo ra mánh khóe, lấy một nhánh tôi không có ở địa phương từ xa ...
Nicholas Petersen

15

Điều gì đã giúp tôi là

1) Để xem tất cả các chi nhánh từ xa có sẵn (ví dụ: 'tên chi nhánh từ xa')

git branch -r

2) Tạo một nhánh cục bộ bằng cách sử dụng tên nhánh từ xa

git fetch && git checkout 'remote-branch-name'

1
Điều gì xảy ra khi bạn chạy lệnh git pushmà không có bất kỳ đối số nào khác? Là nhánh cục bộ có tên remote-branch-nametự động được liên kết với (theo dõi) nhánh từ xa có tên origin/remote-branch-name. Hay bạn cần phải chạygit push -u origin remote-branch-name
Pats

1
điều này sẽ khiến bang bị tách ra
Akin Hwan

15

Bạn cũng có thể tìm nạp và kiểm tra chi nhánh từ xa trong một lần chụp:

git fetch && git checkout the-branch-name


13

Tôi đã gõ

git checkout <branch_name>

và có

Branch <branch_name> set up to track remote branch <branch_name> from origin.
Switched to a new branch '<branch_name>'

từ tài liệu thanh toán git: Nếu <branch_name> không được tìm thấy nhưng có thật sự tồn tại một chi nhánh theo dõi trong đúng một từ xa với một tên phù hợp, điều trị như tương đương với:git checkout -b <branch_name> --track <remote>/<branch_name>
Guillaume Vincent

11

Đôi khi bạn được yêu cầu không nghịch ngợm với nhánh chính và chỉ làm việc với nhánh từ xa (như tôi được yêu cầu). Vì vậy, tất cả những gì bạn cần là chi nhánh từ xa.

Vì vậy, để nhân bản nhánh từ xa một mình (không có chủ), hãy làm điều này

git clone url --branch remote_branch_name

trong đó, remote_branch_name là tên của nhánh từ xa

Ví dụ,

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15

Điều này sẽ đảm bảo rằng bạn sao chép nhánh từ xa vào nhánh cục bộ của bạn với tên của nhánh từ xa.

Bây giờ nếu bạn cam kết mã của mình và đẩy, mã sẽ được gửi đến chi nhánh đó một mình.


Liên quan: Làm cách nào để sao chép một nhánh duy nhất trong Git? - "git 1.7.10 (tháng 4 năm 2012) thực sự cho phép bạn nhân bản chỉ một nhánh:"
Peter Mortensen

11

[Câu trả lời nhanh]

Có nhiều lựa chọn thay thế, và yêu thích của tôi là:

- Phương án 1:

git fetch --all
git checkout YourBranch

Sử dụng thay thế này bằng cách sử dụng một nhánh tồn tại từ xa, nhưng không phải trong địa phương của bạn.

- Phương án 2:

git checkout -b 'YourBranch' origin/'YourRemote'

Có lẽ, đây là cách đơn giản nhất.


9

Giả sử rằng điều khiển từ xa của bạn là git@xyz.git và bạn muốn chi nhánh Random_branch của nó. Quá trình nên như sau:

  1. Trước tiên hãy kiểm tra danh sách từ xa của bạn bằng cách

    git remote -v

  2. Nếu bạn không có git@xyz.git từ xa trong đầu ra của lệnh trên, bạn sẽ thêm nó vào bằng

    git remote add xyz git@xyz.git

  3. Bây giờ bạn có thể tìm nạp nội dung của điều khiển từ xa

    git fetch xyz

  4. Bây giờ hãy kiểm tra chi nhánh của điều khiển từ xa đó bằng cách

    git checkout -b my_copy_random_branch xyz/random_branch

  5. Kiểm tra danh sách chi nhánh bằng

    git branch -a

Chi nhánh địa phương my_copy_random_branch sẽ theo dõi nhánh Random_branch của điều khiển từ xa của bạn.



7

git fetch && git checkout <your friend's branch name> nên làm mánh khóe


7

Tôi muốn cung cấp cho bạn lệnh một lớp để tìm nạp tất cả các nhánh từ xa đến cục bộ của bạn và chuyển sang nhánh cục bộ mới được tạo mong muốn của bạn:

git fetch && git checkout discover

Sau khi chạy lệnh trên, bạn sẽ nhận được thông báo bên dưới:

Switched to a new branch 'discover'
Branch discover set up to track remote branch discover from origin.

Dòng đầu tiên chuyển sang một chi nhánh mới - tại sao mới? Nó đã ở đó từ xa rồi!

Nhưng thực sự bạn phải tạo ra nó cục bộ quá. Chi nhánh được lấy từ chỉ mục từ xa và được tạo cục bộ cho bạn.

Đây discoverlà một nhánh mới được tạo từ nhánh từ xa của kho lưu trữ của bạn discover.

Nhưng dòng thứ hai cung cấp nhiều thông tin hơn dòng đầu tiên cho chúng ta biết rằng:

Chi nhánh của chúng tôi được thiết lập để theo dõi chi nhánh từ xa có cùng tên.

Mặc dù git fetch lấy tất cả các chi nhánh đến địa phương. Nhưng nếu bạn chạygit branch theo nó, bạn sẽ chỉ thấy masterchi nhánh tại địa phương. Tại sao ?

Bởi vì đối với mọi chi nhánh bạn có trong điều khiển từ xa, bạn cũng phải tạo nó cục bộ, để theo dõi nó git checkout <branchname>như chúng ta đã làm trong ví dụ trên.

Sau khi chạy git checkout lệnh, bạn có thể chạy git branchvà bây giờ bạn có thể thấy cả nhánh:

  1. chủ và 2. khám phá trong danh sách địa phương của bạn.

7

Nếu bạn muốn tìm nạp tất cả các chi nhánh từ xa, vui lòng nhập chỉ:

git fetch --all

5

Đơn giản chỉ cần thử:

git pull origin your_branch_name

2
Rizo, git pull origin Branch_name nên là giải pháp tốt nhất. Bạn là người duy nhất đăng bài này như một giải pháp và nó hiệu quả với tôi. Điều này hoạt động bởi vì nó sẽ cập nhật chi nhánh của bạn với chi nhánh chính. đơn giản và không phức tạp.
Ian Poston Framer

3
vấn đề với điều này là nó sẽ cố gắng hợp nhất chi nhánh từ xa đó với chi nhánh HIỆN TẠI của bạn, không phải là điều khiển từ xa (vì đó là mới cho repo địa phương của bạn)
Z. Khullah

Điều này sẽ hợp nhất với chi nhánh hiện tại của bạn.
Eem Jee

4

Nếu bạn có một kho lưu trữ được sao chép --depth 1thì nhiều lệnh được liệt kê sẽ không hoạt động. Ví dụ, xem ở đây

% git clone --depth 1 https://github.com/repo/code
Cloning into 'code'...
cd code
remote: Counting objects: 1778, done.
remote: Compressing objects: 100% (1105/1105), done.
remote: Total 1778 (delta 87), reused 1390 (delta 58), pack-reused 0
Receiving objects: 100% (1778/1778), 5.54 MiB | 4.33 MiB/s, done.
Resolving deltas: 100% (87/87), done.
Checking connectivity... done.
Checking out files: 100% (1215/1215), done.
% cd code
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
% git fetch origin other_branch
remote: Counting objects: 47289, done.
remote: Compressing objects: 100% (15906/15906), done.
remote: Total 47289 (delta 30151), reused 46699 (delta 29570), pack-reused 0
Receiving objects: 100% (47289/47289), 31.03 MiB | 5.70 MiB/s, done.
Resolving deltas: 100% (30151/30151), completed with 362 local objects.
From https://github.com/repo/code
 * branch            other_branch-> FETCH_HEAD
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
%

Trong trường hợp này tôi sẽ đóng lại kho lưu trữ, nhưng có lẽ có các kỹ thuật khác, ví dụ như git nông clone (clone --depth) bỏ lỡ các nhánh từ xa


3

Nếu bạn đã biết chi nhánh từ xa của mình như vậy ...

git remote
=> One
=> Two

và bạn biết tên chi nhánh bạn muốn thanh toán, ví dụ: br1.2.3.4 , sau đó làm

git fetch One
=> returns all meta data of remote, that is, the branch name in question.

Tất cả chỉ còn lại là kiểm tra chi nhánh

git checkout br.1.2.3.4

Sau đó thực hiện bất kỳ chi nhánh mới ra khỏi nó.


3

Các bước thực hiện như sau;

  1. git fetch originhoặc git fetch --all, điều này sẽ tìm nạp tất cả các nhánh từ xa đến địa phương của bạn và sau đó đây là tùy chọn thứ hai bạn có thể thực hiện.

  2. git checkout --track origin/<The_remote_branch you want to switch over>

Sau đó làm việc trên nhánh này và bạn có thể xác minh xem bạn có ở nhánh đó hay không bằng cách gõ

git branch

Nó hiển thị chi nhánh bạn hiện đang ở.



2

Kiểm tra .git/configtệp của bạn , đặc biệt là những gì theo dõi có mặt trên tìm nạp cho điều khiển từ xa đó.

[remote "randomRemote"]
    url = git@github.com:someUser/someRepo.git
    fetch = +refs/heads/*:refs/remotes/randomRemote/*

Nếu nó heads/*chỉ vào randomRemote/*, khi bạn chạygit fetch randomRemote , nó sẽ tìm nạp tất cả các nhánh.

Sau đó, bạn có thể chỉ cần kiểm tra chi nhánh đó.

Nếu không thì,

  1. Bạn cần thêm các nhánh từ xa vào theo dõi bằng cách sử dụng này. Kiểm tra của bạn .git/configsau khi chạy này. Bạn sẽ hiểu.

    git remote set-branches --add randomRemote randomBranch
    
  2. Chạy đi git fetch randomRemote. Điều này sẽ lấy chi nhánh từ xa.

  3. Bây giờ bạn có thể chạy git checkout randomBranch.


1

Bạn sử dụng 'git pull' để tách các nhánh của bạn. Tôi sẽ sử dụng kho lưu trữ thực tế và tên chi nhánh để trợ giúp vì 'lbranch' và 'rbranch' rất khó để giải mã.

Hãy sử dụng:

  • myteam.unfuddle.com = máy chủ Git từ xa
  • tlc = Unfuddle tài khoản dự án nơi kho lưu trữ tồn tại
  • daves_branch = tên chi nhánh từ xa

    Bạn hoặc bất kỳ đồng nghiệp nào cũng có thể chạy cái này để chỉ kéo chi nhánh của bạn, bất kể có bao nhiêu chi nhánh:

    git init
    git pull git@myteam.unfuddle.com:myteam/tlc daves_branch:refs/remotes/origin/daves_branch
    

  • 0

    Một lệnh đơn giản, git checkout remote_branch_namesẽ giúp bạn tạo một nhánh cục bộ có tất cả các thay đổi trong nhánh từ xa.


    -2
    git checkout -b branch_name
    git pull remote_name branch_name
    

    3
    Mặc dù đoạn trích này có thể trả lời câu hỏi, tốt hơn là bao gồm một số giải thích về những gì nó làm và nó khác với số lượng rất lớn các câu trả lời đã có ở đây.
    DaveyDaveDave

    2
    Cá nhân tôi không thích lựa chọn này. Bởi vì trong trường hợp bạn đang tạo một nhánh mới từ Master và sau đó lấy dữ liệu từ nhánh từ xa, nhánh từ xa đó có thể hoặc không thể ở cùng trang với chủ và có thể mời một số cập nhật mã không cần thiết
    zeetit

    Một số giải thích sẽ theo thứ tự.
    Peter Mortensen
    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.