Điều bạn đang tìm kiếm là "chi nhánh nhà cung cấp". Giả sử bạn muốn làm việc trên mã này và hợp nhất các bản cập nhật của nhà cung cấp với các bản vá lỗi của riêng bạn, dưới đây là cách bạn thực hiện điều đó dễ dàng.
git checkout -b vendor # create a vendor branch and check it out
Đó là một điều một lần. Chi nhánh nhà cung cấp và CHỈ của nó sẽ chứa các bản cập nhật từ nhà cung cấp bên thứ ba. Bạn không bao giờ làm việc trong nhánh nhà cung cấp, nó chứa một lịch sử rõ ràng về mã của nhà cung cấp. Không có gì kỳ diệu về cái tên "nhà cung cấp" chỉ là thuật ngữ của tôi nắm giữ từ CVS.
Bây giờ, chúng tôi sẽ đưa phiên bản mới nhất từ nhà cung cấp vào đó.
find . -not -path *.git* -and -not -path . -delete # delete everything but git files
dump the 3rd party code into the project directory # I'll leave that to you
git add . # add all the files, changes and deletions
git commit -a -m 'Vendor update version X.YY' # commit it
git tag 'Vendor X.YY' # optional, might come in handy later
Chúng tôi xóa mọi thứ trước để git có thể thấy mọi thứ mà nhà cung cấp đã xóa. Khả năng của git để xem xóa và đoán các tập tin di chuyển làm cho thủ tục này đơn giản hơn nhiều so với Subversion.
Bây giờ bạn chuyển về phát triển của mình (tôi giả sử chính) và hợp nhất các thay đổi của nhà cung cấp.
git checkout master
git merge vendor
Đối phó với mọi xung đột như bình thường. Phiên bản vá của bạn hiện đã được cập nhật với nhà cung cấp. Làm việc trên chủ như bình thường.
Lần sau có phiên bản mới từ nhà cung cấp, lặp lại quy trình. Điều này lợi dụng việc hợp nhất tuyệt vời của git để cập nhật các bản vá của bạn với các thay đổi của nhà cung cấp.
Vì chúng có cùng tên trên tệp zip (ngay cả khi chúng thay đổi nội dung), tôi cảm thấy rất nguy hiểm khi chỉ tải xuống giải nén và hy vọng là tốt nhất. – Johan
Tôi hiểu. Tuy nhiên, bạn không phải tải xuống từ internet. Bạn có thể tìm nạp nó từ một máy chủ nội bộ chỉ chứa các phiên bản được kiểm tra và phê duyệt. – lemonad
Tại sao không sử dụng 'git clean' thay vì sử dụng' find' để xóa phiên bản cũ? –