2010-10-18 8 views
19

Có cách nào để lấy/lấy mã từ một thẻ cụ thể trong một kho lưu trữ không.GIT pull/fetch từ thẻ cụ thể

Lưu ý rằng sau khi sao chép, tôi có thể kiểm tra thẻ nhưng có thể chỉ định thẻ trong khi kéo không?

Trong ClearCase tôi có thể rebase hoặc cung cấp một đường cơ sở cụ thể của mã, là có một cách mà tôi có thể sử dụng thẻ git tương tự như kéo/đẩy mã tối đa một thẻ được chỉ định?

Trả lời

11

Nó sẽ khác đôi chút với ClearCase, vì bạn chỉ có thể rebase đường cơ sở được tạo trên luồng gốc (mặc dù bạn có thể phân phối bất kỳ đường cơ sở nào từ luồng bất kỳ tới luồng của mình).
Vì vậy, có một số hạn chế đối với loại hợp nhất bạn thực hiện với ClearCase.

Với Git, bạn có thể hợp nhất bất kỳ cam kết nào vào số HEAD của chi nhánh hiện tại của bạn.
Nếu cam kết đó đến từ một repo từ xa, nó sẽ được nhập khẩu đầu tiên trong các chi nhánh từ xa của repo địa phương của bạn ('fetch' một phần của git pull) và sau đó sáp nhập.

git pull [options] [<repository> [<refspec>…]] 

"refspec" một phần của lệnh git pull có nghĩa là bạn có thể kéo bất kỳ thứ gì.

<refspec> có thể đặt tên một ref từ xa tùy ý (ví dụ, tên của một thẻ) hoặc thậm chí là một bộ sưu tập các refs tương ứng với các chi nhánh theo dõi từ xa (ví dụ, refs/heads/:refs/remotes/origin/), nhưng thông thường nó là tên của một chi nhánh tại kho lưu trữ từ xa.

cũng Xem How to pull remote branch with specified commit id?

5

Pull là lấy + hợp nhất.

Nói về làm thế nào để lấy một ref từ xa cụ thể (hoặc một thẻ hoặc chi nhánh), có thể là một ví dụ là tốt hơn ở việc làm rõ điều này:

git fetch origin :refs/remotes/origin/master 

Hoặc một hình thức ngắn hơn:

git fetch origin :remotes/origin/master 

Note điều này hoạt động ngay cả khi remotes/origin/master đã bị xóa cục bộ.

Một ví dụ khác cho việc tạo ra một chi nhánh địa phương trực tiếp từ thẻ từ xa

git fetch <repo_url> +refs/tags/<TAG>:<branch>