Khi bạn đọc trong git tag
trang man :
Một khía cạnh quan trọng của git là nó được phân phối và được phân phối phần lớn có nghĩa là không có "thượng nguồn" hoặc "hạ lưu" vốn có trong hệ thống.
, điều đó đơn giản có nghĩa là không có repo ngược dòng tuyệt đối hoặc repo xuôi dòng.
Những khái niệm này luôn tương đối giữa hai repos và phụ thuộc vào cách truyền dữ liệu:
Nếu "yourRepo" đã khai báo "otherRepo" là một điều khiển từ xa, thì :
- bạn đang kéo từ thượng nguồn "otherRepo" ("otherRepo" là "ngược dòng từ bạn" và bạn là "hạ lưu cho otherRepo").
- bạn đang đẩy lên thượng nguồn ("otherRepo" vẫn là "ngược dòng", nơi thông tin bây giờ quay trở lại).
Lưu ý "từ" và "cho": bạn không chỉ là "hạ lưu", bạn là "hạ lưu từ / cho ", do đó là khía cạnh tương đối.
Vòng xoắn DVCS (Hệ thống kiểm soát phiên bản phân tán) là: bạn không biết dòng dưới thực sự là gì, bên cạnh repo của chính bạn so với repos từ xa mà bạn đã khai báo.
- bạn biết thượng nguồn là gì (các repos bạn đang kéo từ hoặc đẩy tới)
- bạn không biết hạ lưu được làm từ gì (các repos khác kéo từ hoặc đẩy sang repo của bạn ).
Về cơ bản:
Về mặt " luồng dữ liệu ", repo của bạn ở dưới cùng ("xuôi dòng") của luồng đến từ repos ngược dòng ("kéo từ") và quay trở lại (cùng hoặc khác) repos ngược dòng ("đẩy tới" ).
Bạn có thể thấy một hình minh họa trong git-rebase
trang man với đoạn "THU HỒI TỪ UPSTREAM REBASE":
Điều đó có nghĩa là bạn đang kéo từ một repo "ngược dòng" nơi diễn ra một cuộc nổi loạn và bạn (repo "hạ lưu" bị mắc kẹt với hậu quả (rất nhiều cam kết trùng lặp, bởi vì nhánh bị ngược dòng tạo lại các cam kết của cùng một nhánh bạn có địa phương).
Điều đó là xấu bởi vì đối với một repo "ngược dòng", có thể có nhiều repos xuôi dòng (tức là repos kéo từ thượng nguồn, với nhánh bị từ chối), tất cả chúng đều có khả năng xử lý các cam kết trùng lặp.
Một lần nữa, với sự tương tự "luồng dữ liệu", trong một DVCS, một lệnh xấu "ngược dòng" có thể có " hiệu ứng gợn " xuôi dòng.
Lưu ý: điều này không giới hạn dữ liệu.
Nó cũng áp dụng cho các tham số , vì các lệnh git (như các lệnh "sứ") thường gọi các lệnh git khác trong nội bộ (các lệnh "ống nước"). Xem rev-parse
trang người đàn ông :
Nhiều lệnh git sành sứ lấy hỗn hợp các cờ (tức là các tham số bắt đầu bằng dấu gạch ngang ' -
) và các tham số có nghĩa cho git rev-list
lệnh bên dưới mà chúng sử dụng bên trong và cờ và tham số cho các lệnh khác mà chúng sử dụng xuôi dònggit rev-list
. Lệnh này được sử dụng để phân biệt giữa chúng.