Trong bản sao địa phương của bạn của trẻ em, kéo từ phụ huynh, thêm nó như là một từ xa nếu bạn thích:
cd child
git remote add parent <parent-url>
git pull parent
Url của phụ huynh có thể repo github công cộng, hoặc bản sao cục bộ của bạn của nó - bản sao cục bộ tất nhiên sẽ nhanh hơn. Nếu bạn muốn kéo chi nhánh khác với HEAD hiện tại của kho lưu trữ gốc, chỉ cần thêm đối số (ví dụ: git pull parent topic-branch
). Nếu đây là điều một lần, bạn chỉ có thể bỏ qua thêm điều khiển từ xa: git pull <parent-url> [branch]
.
Kéo là kết hợp tìm nạp và hợp nhất, vì vậy khi bạn đã thực hiện điều đó, bạn đã có một cam kết hợp nhất mới, bạn có thể muốn đẩy trở lại repo công khai của bạn tại một số điểm.
Điểm mấu chốt ở đây, trong trường hợp không rõ ràng, là việc kéo từ kho lưu trữ gốc (upstream) không khác với việc kéo từ bản sao con công khai của bạn, kho lưu trữ hiện tại của bạn. Dù bằng cách nào, bạn đang tìm nạp từ một kho lưu trữ với một số lịch sử chung và hợp nhất nó vào nhánh hiện tại của bạn. Và tất nhiên, kể từ khi bạn đang sáp nhập, một cây công việc là bắt buộc - vì vậy đây là một cái gì đó phải được thực hiện trong repo địa phương của bạn. Repo được lưu trữ trên github về cơ bản là cách xuất bản những gì bạn đã thực hiện cục bộ. Tất cả những gì bạn thực sự có thể làm với nó là đẩy/kéo và duyệt những gì ở đó.
Bạn đã chuyển nó về phía sau - bạn thực hiện công việc của bạn trong repo cục bộ của bạn và sau đó thực hiện git push để cập nhật điều khiển từ xa. – Cascabel
Có, tôi hiểu điều đó, nhưng có rất ít thay đổi trong dự án ban đầu mà tôi cần phải kết hợp trong bản sao làm việc của mình. Đó là lý do tại sao tôi cần phải cập nhật repo địa phương của tôi với các bản cập nhật của dự án ban đầu trong khi vẫn giữ nguyên các thay đổi mã của tôi ở địa phương. – zengr
Đó chính xác là những gì chúng tôi đã giải thích cách thực hiện. Tôi chỉ đơn giản chỉ ra rằng bạn không "cập nhật repo github, sau đó ... kéo để cập nhật repo địa phương của bạn" - bạn cập nhật repo địa phương, sau đó đẩy đến repo github. – Cascabel