it-swarm-vi.com

Làm thế nào để giảm giá

Ai đó đã đẩy một nhánh có tên test với git Push Origin test vào một kho lưu trữ được 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 chi nhánh test từ xa.

Tôi đã thử:

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

  • git checkout Origin/test cung cấp cho * (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?

6088
Juri Glass

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 test sẽ 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
8411
hallski

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 đó là 'thử nghiệm' chứ không phải 'Xuất xứ/thử nghiệm') để thực hiện phép thuật DWIM -mery và tạo nhánh 'thử nghiệm' cục bộ cho bạn, mà ngược dòng sẽ là nhánh theo dõi từ xa '.


Đầu ra * (no branch) trong git branch có nghĩa là bạn đang ở trong nhánh không đượ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
1190
Jakub Narębski

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

$ git branch test Origin/test

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

528
ndim

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à về mặt kỹ thuật chính xác , 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?

Dung dịch

Nếu bạn nhận được thông báo này, trước tiên bạn phải thực hiện git fetch Origin trong đó Origin là tên của kho lưu trữ từ xa trước khi 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 Origin đã lấy bất kỳ nhánh từ xa nào mà chúng tôi chưa thiết lập để theo dõi trên máy cục bộ của chúng tôi. 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_branch và chúng tôi sẽ đạt được lợi ích của việc theo dõi từ xa.

439
Corey Ballou

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_name và theo dõi từ xa trong đó.

226
Sahil kalra

Điều này sẽ DWIM cho một điều khiển từ xa không có tên Origin ( 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.

105
tacaswell

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 đó.

100
matanster

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 fetch chi 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 fetch hoạt động và cũng khác với pull:

 git fetch

78
Alireza

Để 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ỉ nhánh master 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

52
Madhan Ayyasamy

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
34
uma

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.

28
Silent Spectator

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 một latest fixes_for_dev từ development

27
sreekumar

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

git checkout --track Origin/other_remote_branch
25
priyankvex

Nếu chi nhánh nằm trên một cái gì đó không phải là điều khiển từ xa Origin 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 nhánh next trên điều khiển upstream ở một nhánh cục bộ có tên 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
23
Kris

git branch -r nói 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ừ Origin 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 fetch kéo vào tất cả các nhánh từ xa, đó không phải là những gì người đăng ban đầu muốn.

16
webdevguy

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

15
brianyang

git fetch && git checkout your-branch-name

15
Inder Kumar Rathore

Chỉ cần chạy git checkout với tên của 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 cấu hình checkout.defaultRemote , chỉ định một điều khiển từ xa để mặc định khi giải quyết một sự mơ hồ như vậy.

13
Eugene Yarmash

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. cho 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, cái 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
13
alisa

Lệnh git remote show <Origin name> sẽ liệt kê tất cả các nhánh (bao gồm các nhánh không được 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
10
Thushan

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 nothing không bằng 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 git checkout xxx được phân tích cú pháp,

  1. Git ban đầu xem 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ĩ rằng xxx là 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 xxx có nghĩa là loại bỏ mọi sửa đổi trong tệp xxx.
  3. Nếu không có tệp có tên xxx, thì Git sẽ cố gắng tạo xxx theo một số quy tắc. Một trong những quy tắc là tạo một nhánh có tên xxx nếu tồn tại remotes/Origin/xxx.
8
oldman

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

git fetch

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

git checkout BranchName
7
Hasib Kamal

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 ;
6
OzzyCzech

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

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

Ví dụ.:

git fetch Origin && tính năng kiểm tra git/XYZ-1234-Thêm cảnh báo

6
Pranav

Sử dụng fetch để kéo tất 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
2
Nasir Khan

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à #9773 nhưng lệnh không hoạt động đúng, như trong hình dưới đây:

 enter image description here

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ử bao quanh tên chi nhánh bằng các dấu ngoặc đơn, như '#9773' rathen thay vì chỉ #9773, và nó hoạt động tốt.

$ git checkout -b '#9773' Origin/'#9773'
1
Ulysses Alves

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'
1
Mehedi Hasan