2013-05-07 30 views
9

Tôi có một bản sao của một kho lưu trữ từ xa. Tôi đã cập nhật url từ xa của mình lên máy chủ của riêng tôi. Sau đó, tôi đã thực hiện một số cam kết và đẩy chúng vào kho lưu trữ của tôi. Bây giờ tôi cần phải kéo một số thay đổi từ kho lưu trữ ban đầu. Từ một nhánh cụ thể. tôi có thể làm điều đó bằng cách chạyGit kéo cho đến khi cam kết nhất định (thẻ)

git pull http://example.com/repo.git example_branch 

này sẽ kéo tất cả các cam kết mới từ example_branch (và thực sự tôi sẽ nhận được một phiên bản dev). Nhưng điều này example_branch có thẻ. Và tôi cần phải dừng lại ở một số nhất định (có được một bản phát hành ổn định trong trường hợp của tôi). Tôi có thể làm như thế nào?

UPD Cuối cùng tôi đã đưa ra:

git remote add example http://example.com/repo.git 
git fetch 
git merge tag_name 
+0

Tôi nghĩ bạn đang cố giải quyết vấn đề sai. Tại sao bạn muốn kéo chỉ đến một cam kết cụ thể? – Arjan

+1

Vâng, nếu tôi kéo tất cả các cam kết từ một chi nhánh, tôi sẽ nhận được một phiên bản dev. Nhưng tôi cần một bản phát hành ổn định. – Leksat

Trả lời

10

git pull chỉ là một git fetch theo sau là một git merge. Vì vậy, bạn có thể dễ dàng thực hiện một git fetch và sau đó hợp nhất cam kết/thẻ mong muốn.

+0

Cảm ơn bạn đã giải thích! – Leksat

+18

Tại sao không viết các lệnh để làm điều này thay vì chỉ nói rằng bạn có thể dễ dàng làm điều này? –

2

Kho lưu trữ git có thể hỗ trợ nhiều điều khiển từ xa.

Trong trường hợp của bạn, bạn cần phải thêm một từ xa thứ hai (với máy chủ cũ của bạn):

git remote add old_server http://example.com/repo.git 

Sau đó, bạn chỉ có thể lấy từ nó:

git fetch old_server 

Cuối cùng, merge the specific commit bạn muốn để lấy dự án của bạn.