Origin vs Upstream
Origin vs Upstream
origin và upstream chỉ là tên remote theo quy ước, không phải khái niệm đặc biệt của Git. Hiểu vai trò mỗi cái giúp bạn cộng tác qua fork đúng cách.
Origin
Origin là tên remote mặc định mà git clone tự tạo, trỏ tới nơi bạn đã clone. Trong mô hình fork, origin thường là fork của bạn trên server — nơi bạn có quyền push.
Upstream
Upstream (theo quy ước này) là repo gốc mà bạn fork ra. Bạn thêm nó để kéo commit mới về sync fork, nhưng thường không có quyền push lên đó.
# origin = fork của bạn (clone tự tạo)
# Thêm upstream = repo gốc
git remote add upstream https://github.com/goc/repo.git
# Sync: tải từ gốc rồi gộp vào local
git fetch upstream
git merge upstream/main
So sánh
| origin | upstream | |
|---|---|---|
| Thường trỏ tới | Fork của bạn | Repo gốc |
| Quyền push | Có | Thường không |
| Dùng để | Đẩy code, mở PR | Kéo về để sync fork |
Lưu ý
"upstream" còn có nghĩa thứ hai: nhánh upstream của một tracking branch (xem khái niệm Tracking Branch). Đừng nhầm tên remote upstream với upstream branch.
Cách nhớ nhanh
origin = nhà bạn (đẩy đồ vào thoải mái). upstream = nhà gốc ở thượng nguồn (chỉ lấy nước chảy xuống = kéo update về, không đẩy ngược lên).