2010-02-19 22 views
145

Tôi có một dự án được lưu trữ trên GitHub. Tôi đã tạo một chi nhánh trên một máy tính, sau đó đẩy các thay đổi của tôi vào github bằngLàm thế nào để tải về một chi nhánh với git?

git push origin branch-name 

Bây giờ tôi đang ở trên một máy tính khác và tôi muốn tải xuống nhánh đó. Vì vậy, tôi đã thử:

git pull origin branch-name 

... nhưng tất cả điều này đã ghi đè nhánh chính của tôi với những thay đổi trong nhánh mới của tôi.

Tôi cần làm gì để kéo đúng nhánh từ xa?

Trả lời

263

Nhờ một related question, tôi phát hiện ra rằng tôi cần phải "thanh toán" chi nhánh từ xa như một chi nhánh địa phương mới, và chỉ định một tên chi nhánh địa phương mới.

git checkout -b newlocalbranchname origin/branch-name 

Hoặc bạn có thể làm:

git checkout -t origin/branch-name 

Sau đó sẽ tạo ra một chi nhánh cũng được thiết lập để theo dõi các chi nhánh từ xa.


Cập nhật: Đã 5 năm kể từ khi tôi lên đâu câu hỏi này. Tôi đã học được rất nhiều và git đã được cải thiện kể từ đó. Luồng công việc thông thường của tôi bây giờ hơi khác một chút.

Nếu tôi muốn lấy chi nhánh từ xa, tôi chỉ cần chạy:

git pull 

này sẽ lấy tất cả các chi nhánh từ xa và kết hợp các chi nhánh hiện hành. Nó sẽ hiển thị một kết quả trông giống như sau:

From github.com:andrewhavens/example-project 
    dbd07ad..4316d29 master  -> origin/master 
* [new branch]  production -> origin/production 
* [new branch]  my-bugfix-branch -> origin/my-bugfix-branch 
First, rewinding head to replay your work on top of it... 
Fast-forwarded master to 4316d296c55ac2e13992a22161fc327944bcf5b8. 

Bây giờ git biết về my-bugfix-branch mới của tôi. Để chuyển sang chi nhánh này, tôi chỉ có thể chạy:

git checkout my-bugfix-branch 

Thông thường, tôi sẽ cần phải tạo ra các chi nhánh trước khi tôi có thể kiểm tra xem nó ra, nhưng trong các phiên bản mới hơn của git, nó đủ thông minh để biết rằng bạn muốn kiểm tra một bản sao cục bộ của nhánh từ xa này.

+2

Vâng tôi đã thử nó. Điều này dễ dàng hơn so với giải pháp của tôi. – ardsrk

+0

Tôi đang sử dụng GIT 1.7.2.5 và lệnh làm việc cho tôi là: '' git branch --track XX origin/XX''. Lệnh của bạn cho tôi một lỗi. – dimitarvp

+6

Nếu bạn không có tất cả các chi nhánh từ xa tải xuống, điều này có thể không thành công. Làm "git remote update" để kéo chúng xuống. –

-6

Tạo thư mục mới và thay vào đó hãy sao chép.

git clone (địa chỉ xuất xứ) (tên chi nhánh)

+3

Bạn không thể sao chép _just branch_ trong Git. Chỉ một bản sao kho lưu trữ đầy đủ mới có thể thực hiện được. –

19

Bạn có thể sử dụng git từ xa như:

git fetch origin 

và sau đó thiết lập một chi nhánh địa phương để theo dõi các chi nhánh ở xa như dưới đây:

git branch --track [local-branch-name] origin/remote-branch-name 

Bây giờ bạn sẽ có nội dung của nhánh github từ xa trong tên nhánh địa phương.

Bạn có thể chuyển sang chế độ mà địa phương-chi nhánh-tên và bắt đầu làm việc:

git checkout [local-branch-name] 
50

Đối với những người mới sử dụng Git như tôi, dưới đây là một số bước bạn có thể làm theo để tải xuống kho lưu trữ từ xa, sau đó chuyển sang nhánh mà bạn muốn xem. Họ có thể lạm dụng Git theo cách nào đó, nhưng nó đã làm công việc cho tôi! :-)

Clone kho bạn muốn tải về mã cho (trong ví dụ này, tôi đã chọn các LRResty project trên Github):

$ git clone https://github.com/lukeredpath/LRResty.git 
$ cd LRResty 

Kiểm tra những gì chi nhánh bạn đang sử dụng vào thời điểm này (nó nên là chi nhánh chính):

$ git branch  
* master 

Kiểm tra các chi nhánh mà bạn muốn, trong trường hợp của tôi nó được gọi là 'arcified':

$ git checkout -b arcified origin/arcified 
Branch arcified set up to track remote branch arcified from origin. 
Switched to a new branch 'arcified' 

Xác nhận bạn hiện đang sử dụng các chi nhánh bạn muốn:

$ git branch  
* arcified 
    master 

Nếu bạn muốn cập nhật mã lại sau, chạy git pull:

$ git pull 
Already up-to-date. 
+0

"Họ có thể lạm dụng Git theo một cách nào đó" - không, điều này là chính xác. –

6

Git tạo bản sao và cd trong tên repo:

$ git clone https://github.com/PabloEzequiel/iOS-AppleWach.git 
Cloning into 'iOS-AppleWach'... 
$ cd iOS-AppleWach 

Chuyển sang nhánh (trang GitHub) mà tôi muốn:

$ git checkout -b gh-pages origin/gh-pages 
Branch gh-pages set up to track remote branch gh-pages from origin. 
Switched to a new branch 'gh-pages' 

Và kéo chi nhánh:

$ git pull 
Already up-to-date. 

ls:

$ ls 
index.html  params.json  stylesheets 
5

Điều hướng đến thư mục trên máy tính mới của bạn, bạn muốn tải về từ git trên git bash.

Sử dụng dưới lệnh để tải về mã từ bất kỳ chi nhánh bạn thích

git clone 'git ssh url' -b 'Branch Name'

Nó sẽ tải về mã ngành tương ứng.

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