Làm cách nào để kiểm tra chi nhánh Git từ xa?


6713

Ai đó đẩy một chi nhánh gọi testvới git push origin testvào một kho lưu trữ chia sẻ. Tôi có thể thấy chi nhánh với git branch -r.

Bây giờ tôi đang cố gắng kiểm tra testchi nhánh từ xa .

Tôi đã thử:

  • git checkout test mà không làm gì cả

  • git checkout origin/testcho * (no branch). Mà khó hiểu. Làm thế nào tôi có thể ở "không chi nhánh"?

Làm cách nào để kiểm tra chi nhánh Git từ xa?


9
@inger Nhưng nó không bao gồm khả năng đổi tên chi nhánh địa phương mới (nếu bạn muốn - khởi động lại sau này và tiếp tục đặt tên nhất quán)
fachexot

15
Tôi nghĩ rằng chủ đề này là không có ích. Dường như không có gì để làm việc, câu hỏi ban đầu dường như đã bị mất trong nhiều câu trả lời. Tôi đã đọc từng từ, thử mọi thứ bên dưới và không biết làm thế nào để OP muốn làm.
Tony Enni

6
Các lệnh Git không trực quan để bắt đầu, thêm các thay đổi được giới thiệu với các phiên bản gần đây vào hỗn hợp và bạn có trang này ...
Barshe Roussy

14
Tôi cảm thấy như tôi đang uống thuốc điên. Tôi đang cố gắng kiểm tra một chi nhánh từ một upstream, không chỉ origin, và mọi câu trả lời được đề xuất không làm bất cứ điều gì hữu ích từ xa (ý định chơi chữ). EDIT - xin lỗi, vô số lời đề nghị có trong 2 câu trả lời hàng đầu là vô ích; Thứ 3 ( git branch test origin/test) là những gì hoạt động. Vui mừng top 2 có số phiếu bầu
gấp 20

4
Có thể bạn có một tệp có tên 'test' trong cây công việc của bạn, xem stackoverflow.com/a/45006389/792416 để biết chi tiết.
ông già

Câu trả lời:


9151

Cập nhật

Câu trả lời của Jakub thực sự cải thiện về điều này. Với phiên bản Git ≥ 1.6.6, chỉ với một điều khiển từ xa, bạn có thể thực hiện:

git fetch
git checkout test

Như người dùng masukomi chỉ ra trong một bình luận, git checkout testsẽ KHÔNG hoạt động trong git hiện đại nếu bạn có nhiều điều khiển từ xa. Trong trường hợp này sử dụng

git checkout -b test <name of remote>/test

hoặc tốc ký

git checkout -t <name of remote>/test

Câu trả lời cũ

Trước khi bạn có thể bắt đầu làm việc cục bộ trên một nhánh từ xa, bạn cần tìm nạp nó như được gọi trong các câu trả lời dưới đây.

Để tìm nạp một nhánh, bạn chỉ cần:

git fetch origin

Điều này sẽ lấy tất cả các chi nhánh từ xa cho bạn. Bạn có thể thấy các chi nhánh có sẵn để thanh toán với:

git branch -v -a

Với các chi nhánh từ xa trong tay, bây giờ bạn cần kiểm tra chi nhánh bạn quan tâm, đưa cho bạn một bản sao làm việc tại địa phương:

git checkout -b test origin/test

398
Để mở rộng về điều này: git không cho phép bạn làm việc trên các chi nhánh của người khác. Bạn chỉ có thể tự làm việc. Vì vậy, nếu bạn muốn thêm vào chi nhánh của người khác, bạn cần tạo "bản sao" của chi nhánh đó, đó là những gì lệnh trên thực hiện (tốt, nó cũng tạo chi nhánh của bạn và cũng kiểm tra nó).
Dan Mould

139
Nếu đó là một chi nhánh từ xa mới, bạn có thể cần phải git fetchlàm điều đó trước khi git nhận raorigin/test
Neil Sarkar

56
... và bạn sẽ làm điều này vớigit fetch origin test
Andrew

22
Lỗi: "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 thanh toán origin/testmà không thể giải quyết như cam kết không?"
Xeoncross

85
git checkout testsẽ KHÔNG hoạt động trong git hiện đại nếu bạn có nhiều điều khiển từ xa có cùng tên chi nhánh . Nó không thể biết nên sử dụng cái nào.
masukomi

1256

Sidenote: Với Git hiện đại (> = 1.6.6 ), bạn có thể sử dụng chỉ

git checkout test

(lưu ý rằng nó là 'test' không 'nguồn gốc / test') để thực hiện phép thuật DWIM -mery và tạo địa phương 'test' chi nhánh cho bạn, mà thượng nguồn sẽ từ xa theo dõi chi nhánh 'nguồn gốc / test'.


Đầu ra * (no branch)trong git branchcó nghĩa là bạn đang ở trên nhánh chưa được đặt tên, ở trạng thái được gọi là "tách rời ĐẦU" (các điểm CHÍNH trực tiếp để cam kết và không phải là tham chiếu tượng trưng cho một số nhánh cục bộ). Nếu bạn đã thực hiện một số cam kết trên nhánh không tên này, bạn luôn có thể tạo nhánh cục bộ khỏi cam kết hiện tại:

git checkout -b test HEAD

** EDIT (bởi biên tập viên không phải tác giả) **

Tôi tìm thấy một bình luận chôn dưới đây dường như để hiện đại hóa câu trả lời này:

@Dennis: kiểm tra git, ví dụ: kết quả kiểm tra nguồn gốc / kiểm tra git trong chi nhánh đã tách rời ) - Jakub Narębski ngày 9 tháng 1 năm 14 lúc 8:17

nhấn mạnh vào git checkout origin/test


33
Không có gì đáng ngạc nhiên, nhưng phiên bản này đã được phát hành trong vài năm qua - biết cú pháp này có thể tiết kiệm rất nhiều thời gian vì vẫn còn rất nhiều tài liệu và chủ đề bình luận cũ trôi nổi xung quanh gợi ý phương pháp cũ hơn để làm điều này.
Curtis

10
"Git hiện đại" - cho bản ghi, (khoảng) bạn đang đề cập đến phiên bản nào? Đôi khi chúng ta phải làm việc trên các hệ thống chạy các bản phân phối cũ hơn.
Craig McQueen

5
"Git hiện đại" trong bối cảnh này là git 1.6.6
Bobby Norton

10
@aidan Nếu bạn nhận được phản hồi như vậy error: pathspec 'branch_name' did not match any file(s) known to git.thì bạn nên thực hiện tìm nạp git trước.
Dennis

6
Sử dụng phiên bản git 1.8.3.msysgit.0 và điều này không phù hợp với tôi - không khớp với bất kỳ tệp nào được biết đến với git - Tôi đã thực hiện nhiều lần tải git
PandaWood

565

Trong trường hợp này, bạn có thể muốn tạo một testnhánh cục bộ đang theo dõi testnhánh từ xa :

$ git branch test origin/test

Trong các phiên bản trước đó git, bạn cần một --tracktùy chọn rõ ràng , nhưng đó là mặc định ngay bây giờ khi bạn phân nhánh từ một nhánh từ xa.


15
Điều này sẽ tạo ra một chi nhánh địa phương mà không cần chuyển sang nó.
Alex Skrypnyk

2
Mặc dù tôi đã bị tử vong: Tên đối tượng mơ hồ: 'origin / dev' - nơi tồn tại một nhánh 'dev' về nguồn gốc - nhưng tôi đã vô tình tạo ra một nhánh có tên là "origin / dev" trên máy của mình (trong những lần thử ngu ngốc trước đây của tôi để có được điều này, không còn nghi ngờ gì nữa) ... ouch
PandaWood

1
Điều này đã mang lại cho tôi lỗi lỗi: thất bại trong việc đưa ra một số giới thiệu để gợi ý: Các cập nhật đã bị từ chối vì một mẹo chi nhánh bị đẩy đằng sau gợi ý từ xa của nó: đối tác. Kiểm tra nhánh này và hợp nhất gợi ý thay đổi từ xa: (ví dụ: 'git pull') trước khi đẩy lại. gợi ý: Xem phần 'Lưu ý về chuyển tiếp nhanh' trong 'git đẩy - trợ giúp' để biết chi tiết.
pal4life

475

Chấp nhận câu trả lời không làm việc cho bạn?

Mặc dù câu trả lời đầu tiên và được chọn là đúng về mặt kỹ thuật , có khả năng bạn chưa lấy được tất cả các đối tượng và refs từ kho lưu trữ từ xa. Nếu đó là trường hợp, bạn sẽ nhận được lỗi sau:

$ git checkout -b remote_branch origin/remote_branch

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 thanh toán 'origin / remote_branch' mà không thể giải quyết như cam kết không?

Giải pháp

Nếu bạn nhận được thông báo này, trước tiên bạn phải làm một git fetch originnơi originlà tên của trước kho từ xa để chạy git checkout remote_branch. Dưới đây là một ví dụ đầy đủ với các câu trả lời:

$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> origin/develop
 * [new branch]      demo       -> origin/demo
   d80f8d7..359eab0  master     -> origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'

Như bạn có thể thấy, việc chạy đã git fetch originlấy bất kỳ nhánh từ xa nào mà chúng ta chưa thiết lập để theo dõi trên máy cục bộ của chúng ta. Từ đó, vì bây giờ chúng tôi có một giới thiệu đến chi nhánh từ xa, chúng tôi chỉ cần chạy git checkout remote_branchvà chúng tôi sẽ đạt được lợi ích của việc theo dõi từ xa.


2
Tôi sẽ thêm một ghi chú nếu bạn có một chi nhánh riêng tại địa phương: Đảm bảo rằng bạn đã liên kết điều này với repo từ xa bằng cách sử dụng 'git remote add origin [the_path_to_your numpo / repo_name.git]'. Sau đó, sử dụng 'git fetch origin' trong đó 'origin' có nghĩa là kho lưu trữ gốc mà bạn đã tạo liên kết.
elliotrock

git checkout -b newbranchcũng hoạt động tuyệt vời cho 1 bước tạo và kiểm tra một nhánh mới dựa trên nhánh hiện tại.
Linus

2
Tôi nghĩ rằng đây là cập nhật nhất (nó luôn thay đổi $ @ #! Ing!). Git 2.5.5 Tôi đã tìm thấy cách duy nhất để thực sự nhìn thấy các nhánh từ xa là git ls-remotevà cách duy nhất để thực sự sử dụng một nhánh là git checkout -b [branch] --track [remote/branch]... và đó là sau khi git pull [remote] [branch] làm việc. Tức là, nó thực sự đã kéo toàn bộ chi nhánh, nhưng vẫn không liệt kê nó.
tinh

và khi câu trả lời này cũng không hoạt động, hãy xem câu trả lời này .
eis

chỉ cần thêm, nếu bạn git fetch other_remote only_branch, bạn vẫn nhận được fatallỗi. Bạn phải git fetch other_remotekhông có tên chi nhánh. Thiết kế lạ.
est

258

Tôi đã thử giải pháp trên, nhưng nó không hoạt động. Hãy thử điều này, nó hoạt động:

git fetch origin 'remote_branch':'local_branch_name'

Điều này sẽ tìm nạp nhánh từ xa và tạo một nhánh cục bộ mới (nếu chưa tồn tại) với tên local_branch_namevà theo dõi từ xa trong đó.


37
Điều này làm việc cho tôi khi không git lấy nguồn gốc hoặc git cập nhật từ xa tạo các nhánh cục bộ. Tôi cung không chăc tại sao.
Godsmith

4
Đây là cách trực tiếp nhất để thực hiện những gì tôi cần là sử dụng một nhánh từ xa (không phải chủ) để tạo một nhánh mới.
Roralee

7
Làm việc liền mạch, đặc biệt là khi đã nhân bản một nhánh duy nhất từ ​​xa có nhiều nhánh.
Alex C

7
điều này cũng có hiệu quả với tôi, nơi những câu trả lời được chấp nhận và những người được bình chọn cao khác thì không. Phiên bản git của tôi là 2.5.0
pdepmcp 17/2/2017

5
Có ai có ý tưởng tại sao điều này hoạt động khi mọi thứ khác không? (Tôi đang ở git 2.13.0)
Nathan Arthur

108

Điều này sẽ DWIM cho một nguồn gốc không được đặt tên ( tài liệu ):

$ git checkout -t remote_name/remote_branch

Để thêm một điều khiển từ xa mới, bạn sẽ cần làm như sau:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

Cái đầu tiên nói với Git cái điều khiển từ xa tồn tại, cái thứ hai nhận được các xác nhận.


104

Sử dụng:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

Các câu trả lời khác không hoạt động với Git hiện đại trong trường hợp lành tính của tôi. Bạn có thể cần phải kéo trước nếu nhánh từ xa mới, nhưng tôi chưa kiểm tra trường hợp đó.


2
Bạn có nhận ra rằng đây là một trích đoạn của câu trả lời
Thomas Ayoub

14
Nhìn vào nó bây giờ, họ làm chồng chéo. Chỉ có tôi là cô đọng và nói cho bạn biết phải làm gì hơn là kể một câu chuyện. Tôi cho rằng nó có thể hữu ích hơn do đó, đặc biệt là cho các phiên bản git ngày nay. Bạn có thể downvote nó nếu bạn nghĩ rằng đó là một câu trả lời xấu.
matanster

1
git fetch là lựa chọn an toàn. Hãy thử tìm nạp trước khi sử dụng kéo. Cả hai đều tải xuống nội dung từ xa, nhưng trong khi tìm nạp không thay đổi trạng thái cục bộ, pull sẽ ngay lập tức thay đổi trạng thái cục bộ.
Peter Szalay

89

OK , câu trả lời rất dễ ... Về cơ bản bạn nhìn thấy chi nhánh, nhưng bạn chưa có bản sao địa phương! ...

Bạn cần đến fetchchi nhánh ...

Bạn có thể chỉ cần tìm nạp và sau đó kiểm tra chi nhánh, sử dụng lệnh một dòng dưới đây để làm điều đó:

git fetch && git checkout test

Tôi cũng đã tạo hình ảnh bên dưới để bạn chia sẻ sự khác biệt, xem cách fetchhoạt động và cũng khác biệt như thế nào pull:

git lấy


@DmitriZaitsev vâng, nó sẽ hoạt động, nếu chi nhánh từ xa ở đó và bạn tìm nạp, bạn sẽ nhận được chi nhánh tại địa phương ... câu hỏi nói rằng đã có một chi nhánh từ xa ở đó ...
Alireza

Cách tôi nhìn thấy câu hỏi, testtrông giống như một nhánh mới, vì vậy nó không có khả năng có mặt tại địa phương. Nếu không, bạn có thể kéo nó dễ dàng hơn với git pulllệnh đơn .
Dmitri Zaitsev

@DmitriZaitsev, vâng, đó là lý do tại sao tôi nói git fetch, kiểm tra các nhánh từ xa vừa tạo, kéo có thể mang những thứ không mong muốn khác vào, nhưng tìm nạp làm cho tất cả các nhánh có sẵn nếu bạn đã có repo tại địa phương ...
Alireza

Sẽ không phải fetchkhông có pullnhững thay đổi nghỉ trong bản sao lấy nhưng không phải trong chi nhánh địa phương, dẫn đến chi nhánh địa phương của bạn không được up-to-date?
Dmitri Zaitsev

56

Để sao chép kho Git, hãy làm:

git clone <either ssh url /http url>

Lệnh trên kiểm tra tất cả các nhánh, nhưng chỉ masternhánh sẽ được khởi tạo. Nếu bạn muốn kiểm tra các chi nhánh khác, hãy làm:

git checkout -t origin/future_branch (for example)

Lệnh này kiểm tra nhánh từ xa và tên nhánh cục bộ của bạn sẽ giống với nhánh từ xa.

Nếu bạn muốn ghi đè tên chi nhánh địa phương của bạn khi thanh toán:

git checkout -t -b enhancement origin/future_branch

Bây giờ tên chi nhánh địa phương của bạn là enhancement, nhưng tên chi nhánh từ xa của bạn làfuture_branch .

Tài liệu


git clone <hoặc ssh url / http url> - hoạt động hoàn hảo với tôi
Kmeixner

Ư, bạn đung. Cảm ơn thông tin của bạn, tôi sẽ cập nhật nó rất sớm @warvariuc
Madhan Ayyasamy

Nếu điều khiển từ xa không có master, điều này sẽ không hoạt động.
polkovnikov.ph

36

Bạn co thể thử

git fetch remote
git checkout --track -b local_branch_name origin/branch_name

hoặc là

git fetch
git checkout -b local_branch_name origin/branch_name

2
FYI, --trackkhông còn cần thiết trong các phiên bản git mới hơn, bởi vì nó được đặt theo mặc định, như được giải thích trong câu trả lời trước đó .

33

Trước tiên, bạn cần làm:

git fetch # Nếu bạn không biết về tên chi nhánh

git fetch origin branch_name

Thứ hai, bạn có thể kiểm tra chi nhánh từ xa vào địa phương của bạn bằng cách:

git checkout -b branch_name origin/branch_name

-b sẽ tạo chi nhánh mới trong tên được chỉ định từ chi nhánh từ xa đã chọn của bạn.


Tôi không hiểu -b. Nếu bạn có thể làm "git checkout master" thì tại sao bạn không thể làm "git checkout origin / test"?
John Little

-b cho chi nhánh mới có nguồn gốc / chủ
Mohideen bin Mohammed

28

Tôi sử dụng lệnh sau:

git checkout --track origin/other_remote_branch

13
Câu trả lời này sẽ hữu ích hơn rất nhiều nếu bạn giải thích lý do tại sao bạn sử dụng nó theo cách này. tức là tại sao ai đó nên sử dụng '--track' và cứ thế ...
Matt Friedman

27

Các lệnh

git fetch --all
git checkout -b <ur_new_local_branch_name> origin/<Remote_Branch_Name>

bằng với

 git fetch --all

và sau đó

 git checkout -b fixes_for_dev origin/development

Cả hai sẽ tạo ra một latest fixes_for_devtừdevelopment


24

Nếu chi nhánh ở trên một cái gì đó không phải là originđiều khiển từ xa, tôi muốn làm như sau:

$ git fetch
$ git checkout -b second/next upstream/next

Điều này sẽ kiểm tra nextchi nhánh trên upstreamđiều khiển từ xa đến một chi nhánh địa phương được gọi là second/next. Điều đó có nghĩa là nếu bạn đã có một chi nhánh địa phương có tên tiếp theo thì nó sẽ không xung đột.

$ git branch -a
* second/next
  remotes/origin/next
  remotes/upstream/next


18

Không có câu trả lời nào trong số này làm việc cho tôi. cái này hiệu quả

git checkout -b feature/branch remotes/origin/feature/branch


1
cảm ơn. Tôi đã tự hỏi nếu tôi phải sử dụng đường dẫn đầy đủ ( từ xa / nguồn gốc / tính năng / nhánh ) mà tôi đã thấy gitkhi gọi git branch -alệnh, nhưng tôi không chắc chắn, vì vậy tôi chỉ sử dụng git checkout -b apps/FEATURE/branch origin/apps/FEATURE/branchvà nó có vẻ hoạt động. Tin nhắn:Branch 'apps/FEATURE/branch' set up to track remote branch 'apps/FEATURE/epicBranch' from 'origin'. Switched to a new branch 'apps/FEATURE/branch'
Chris22

18

Tôi bị mắc kẹt trong một tình huống nhìn thấy error: pathspec 'desired-branch' did not match any file(s) known to git. tất cả các đề xuất ở trên. Tôi đang dùng phiên bản git 1.8.3.1.

Vì vậy, điều này làm việc cho tôi :

git fetch origin desired-branch
git checkout -b desired-branch FETCH_HEAD

Giải thích đằng sau là tôi đã nhận thấy rằng khi tìm nạp nhánh từ xa, nó đã được tìm nạp vào FETCH_HEAD:

$ git fetch origin desired-branch
From github.com:MYTEAM/my-repo
    * branch            desired-branch -> FETCH_HEAD

17

Đơn giản chỉ cần chạy git checkoutvới tên của chi nhánh từ xa. Git sẽ tự động tạo một nhánh cục bộ theo dõi từ xa:

git fetch
git checkout test

Tuy nhiên, nếu tên chi nhánh đó được tìm thấy ở nhiều nơi, điều này sẽ không hoạt động vì Git không biết nên sử dụng tên nào. Trong trường hợp đó, bạn có thể sử dụng một trong hai:

git checkout --track origin/test

hoặc là

git checkout -b test origin/test

Trong 2.19 , Git đã học checkout.defaultRemotecấu hình, trong đó chỉ định một điều khiển từ xa để mặc định khi giải quyết sự mơ hồ như vậy.


16

git branch -rcho biết tên đối tượng không hợp lệ, vì tên chi nhánh đó không có trong danh sách chi nhánh địa phương của Git. Cập nhật danh sách chi nhánh địa phương của bạn từ nguồn gốc với:

git remote update

Và sau đó thử kiểm tra chi nhánh từ xa của bạn một lần nữa.

Điều này làm việc cho tôi.

Tôi tin rằng git fetchkéo trong tất cả các chi nhánh từ xa, đó không phải là những gì người đăng ban đầu muốn.


2
FYI, git remote update cũng sẽ lấy tất cả các chi nhánh từ xa .

13

Các git remote show <origin name> lệnh sẽ liệt kê tất cả các chi nhánh (bao gồm cả chi nhánh un-theo dõi). Sau đó, bạn có thể tìm thấy tên chi nhánh từ xa mà bạn cần tìm nạp.

Thí dụ:

$ git remote show origin

Sử dụng các bước sau để tìm nạp các nhánh từ xa:

git fetch <origin name> <remote branch name>:<local branch name>
git checkout <local branch name > (local branch name should the name that you given fetching)

Thí dụ:

$ git fetch origin test:test
$ git checkout test

@hallski trả lời không hoạt động phiên bản 2.15.1 nhưng tôi đã giảm tập tin .git chỉ sao chép 1 nhánh và lịch sử bộ lọc với cờ --depth. ví dụ $ git clone -b release --single-branch --depth 5 https://github.com/user/repo.gitthông tin $ git remote show originnày không được liệt kê tất cả các chi nhánh từ xa với các kho lưu trữ nhân bản chi nhánh duy nhất.
Qh0stM4N

10

Lấy từ xa và kiểm tra chi nhánh.

git fetch <remote_name> && git checkout <branch_name> 

Ví dụ:

nguồn gốc git tìm nạp && tính năng kiểm tra git / XYZ-1234-Thêm cảnh báo


9

Những kẻ và cô gái khác đưa ra giải pháp, nhưng có lẽ tôi có thể cho bạn biết lý do tại sao.

kiểm tra git mà không làm gì

Does nothingkhông bằng nhau doesn't work, vì vậy tôi đoán khi bạn nhập test kiểm tra kiểm tra git 'trong thiết bị đầu cuối của bạn và nhấn phím enter, không có thông báo nào xuất hiện và không có lỗi xảy ra. Tôi có đúng không

Nếu câu trả lời là "có", tôi có thể cho bạn biết nguyên nhân.

Nguyên nhân là có một tệp (hoặc thư mục) có tên 'test' trong cây công việc của bạn.

Khi được git checkout xxxphân tích cú pháp,

  1. Git nhìn vào xxx như một tên chi nhánh, nhưng không có bất kỳ chi nhánh nào được đặt tên thử nghiệm.
  2. Sau đó, Git nghĩ xxxlà một đường dẫn, và may mắn thay (hoặc không may), có một tệp có tên là test. Vì vậy, git checkout xxxcó nghĩa là loại bỏ bất kỳ sửa đổi trongxxx tập tin.
  3. Nếu không có tệp nào được đặt tên xxx, thì Git sẽ cố gắng tạo xxxtheo một số quy tắc. Một trong những quy tắc là tạo một nhánh có tên xxxnếu remotes/origin/xxxtồn tại.

cảm ơn, tiếp tục cố gắng tìm hiểu tại sao git không làm gì cả.
Mike R

8

Để có được các nhánh mới được tạo

git fetch

Để chuyển sang chi nhánh khác

git checkout BranchName

6

Bạn có thể bắt đầu theo dõi tất cả các nhánh từ xa với tập lệnh Bash sau:

#!/bin/bash
git fetch --all
for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`
  do git branch -f --track "$branch" "origin/$branch"
done

Đây cũng là một phiên bản một dòng:

git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`; do git branch --track "$branch" "origin/$branch" ; done ;

5

git checkout -b "Branch_name" [B có nghĩa là Tạo chi nhánh địa phương]

chi nhánh git - tất cả

kiểm tra git -b "Tên chi nhánh của bạn"

chi nhánh git

kiểm tra thành công từ nhánh chính đến nhánh dev

nhập mô tả hình ảnh ở đây


git checkout -b "Branch_name" [B có nghĩa là Tạo chi nhánh địa phương]
Keshav Gera

3

để có được tất cả các chi nhánh từ xa sử dụng điều này:

git fetch --all

sau đó kiểm tra chi nhánh:

git checkout test

2

Sử dụng fetchđể kéo tất cả các điều khiển từ xa của bạn

   git fetch --all

Để liệt kê các chi nhánh từ xa:

   git branch -r

Để liệt kê tất cả các chi nhánh của bạn

   git branch -l
   >>outpots like-
     * develop
       test
       master

Để kiểm tra / thay đổi một chi nhánh

   git checkout master

Đã thử git branch -lvà không có chi nhánh từ xa được hiển thị.
Dmitri Zaitsev

sử dụng git pull --allhoặcgit fetch --all
Nasir Khan

Vâng, và sau đó, git branch -l vẫn chỉ hiển thị các chi nhánh địa phương . Nó dường như hoạt động chính xác như git branchkhông có -l, vậy lý do là -lgì?
Dmitri Zaitsev

Ngoài ra câu trả lời của bạn không trả lời câu hỏi - masterkhông phải là một chi nhánh từ xa.
Dmitri Zaitsev

1
-lcờ cho danh sách. Bạn có thể sử dụng --listquá
Nasir Khan

2

Đối với chúng tôi, có vẻ như remote.origin.fetchcấu hình đã cho một vấn đề. Do đó, chúng tôi không thể thấy bất kỳ chi nhánh từ xa nào khác master, vì vậy git fetch [--all]không giúp được gì. Không git checkout mybranchphải cũng khônggit checkout -b mybranch --track origin/mybranch làm việc, mặc dù nó chắc chắn là ở xa.

Cấu hình trước đó chỉ được phép mastertìm nạp:

$ git config --list | grep fetch
remote.origin.fetch=+refs/heads/master:refs/remotes/origin/master

Khắc phục bằng cách sử dụng *và tìm nạp thông tin mới từ nguồn gốc:

$ git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'

$ git fetch
...
 * [new branch] ...
...

Bây giờ chúng tôi có thể git checkoutcác chi nhánh từ xa địa phương.

Không biết làm thế nào cấu hình này kết thúc trong repo địa phương của chúng tôi.


1
Điều này đã giải quyết nó cho tôi kể từ khi tôi nhân bản một chi nhánh duy nhất
Pontus Holmbom

2

Nếu tên nhánh từ xa bắt đầu bằng các ký tự đặc biệt, bạn cần sử dụng các dấu ngoặc đơn xung quanh nó trong lệnh thanh toán, nếu không git sẽ không biết bạn đang nói về nhánh nào.

Ví dụ, tôi đã cố kiểm tra một nhánh từ xa có tên là #9773nhưng lệnh không hoạt động đúng, như trong hình dưới đây:

nhập mô tả hình ảnh ở đây

Vì một số lý do, tôi tự hỏi liệu biểu tượng sắc nét (#) có liên quan gì đến nó không, và sau đó tôi đã thử xung quanh tên chi nhánh bằng các trích dẫn duy nhất, giống như '#9773'rathen hơn #9773, và may mắn thay, nó hoạt động tốt.

$ git checkout -b '#9773' origin/'#9773'

Trong nhiều shell unix, #ký tự được sử dụng cho các bình luận, vì vậy mọi thứ sau đó #sẽ bị bỏ qua. Đây là một điều vỏ và không phải là một cái gì đó cụ thể cho git. Sử dụng dấu ngoặc kép của dấu gạch chéo ngược trước #là đủ.
Paulo Scardine

1

Hãy làm theo lệnh để tạo một thư mục trống. Nhập vào đó và sử dụng lệnh này:

saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url
Cloning into 'iPhoneV1'...
remote: Counting objects: 34230, done.
remote: Compressing objects: 100% (24028/24028), done.
remote: Total 34230 (delta 22212), reused 15340 (delta 9324)
Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done.
Resolving deltas: 100% (22212/22212), done.
Checking connectivity... done.
saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/
saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery
Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from origin.
Switched to a new branch '1_4_0_content_discovery'
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.