2013-01-22 33 views
8

Hy!Cam kết trong một gói git

Có cách nào để có danh sách tất cả các cam kết được lưu trữ trong gói git mà không nhân bản nó trước không?

Làm cho đầu dễ dàng, nhưng tôi không thể tìm được cách đăng xuất đầy đủ.

+0

tại sao bạn cần điều này? – Chronial

+0

Trước khi tôi hợp nhất gói trong kho lưu trữ, tôi muốn kiểm tra vị trí của gói (so với repo). Kết nối đầu của nó đã có mặt trong repo hoặc vòng khác. – mat

+0

có thể trong trường hợp đó sẽ dễ dàng hơn để thêm gói dưới dạng điều khiển từ xa? – araqnid

Trả lời

7

Không thể thực hiện mà không cần viết một số phần mềm chuyên dụng để đi qua gói được bao gồm trong gói. Nếu gói được tạo với các tham chiếu âm, có thể nó sẽ bao gồm các vùng đồng bằng không thể giải quyết được bằng cách sử dụng các đối tượng duy nhất trong gói (gói được nhúng trong gói có thể mỏng).

Nhân bản gói (ít nhất là một bản sao trần) sẽ tách ra và lập chỉ mục gói, tạo ra định dạng mà lệnh git chuẩn có thể hoạt động, vì vậy đó là cách đơn giản nhất (về nỗ lực tích hợp) đọc nó. Một điều bạn có thể làm để "xem trước" một gói trước khi hợp nhất nó là chỉ cần thêm nó như là một repo từ xa, và sau đó bạn có thể lấy từ nó và truy cập vào các refs theo dõi. Vì vậy, một cái gì đó như:

git remote add bundle /path/to/bundle 
git remote update bundle 

và bây giờ bạn có thể làm gitk master...bundle/master vv để so sánh các chi nhánh ở các bó so với repo địa phương của bạn, và cuối cùng git pull bundle master sáp nhập nó trong

Khi bạn đã hoàn tất, chỉ cần. làm sạch với git remote rm bundle

+0

Bạn có biết một số cách để mô phỏng hợp nhất hay không (ví dụ: nói điều gì sẽ xảy ra mà không cần gọi lệnh một cách acutally). hợp nhất và kéo không có tùy chọn --dry-run. – mat

+0

họ không, và không có. bạn chỉ có thể thực hiện hợp nhất và sau đó hủy bỏ bằng cách đặt lại vị trí trước đó ('git reset --hard HEAD' nếu bạn bị bỏ lại xung đột,' git reset --hard HEAD @ {1} 'nếu tự động hợp nhất đã thành công) – araqnid