Git: đặt nhánh upstream
Cập nhật lần cuối
Upstream của một nhánh là nhánh remote mà nó theo dõi. Khi đã đặt, chỉ cần git push và git pull là Git biết gửi và lấy commit ở đâu, bạn không phải ghi tên remote và nhánh mỗi lần. Thường bạn đặt upstream ở lần push đầu tiên với -u, hoặc đặt sau bằng git branch --set-upstream-to.
Bạn có thể thử các lệnh này trong terminal playground: một shell thật ngay trên trình duyệt, không cần cài đặt gì.
Cú pháp
| Lệnh | Tác dụng |
|---|---|
git push -u origin feature | Push và đặt upstream trong một bước |
git branch --set-upstream-to=origin/feature | Đặt upstream cho nhánh hiện tại |
git branch -u origin/feature feature | Đặt upstream cho một nhánh theo tên |
git branch -vv | Hiện từng nhánh cùng upstream của nó |
Tình huống thường gặp
| Mục tiêu | Lệnh |
|---|---|
| Đặt upstream ở lần push đầu | git push -u origin feature |
| Đặt upstream cho nhánh đã có | git branch --set-upstream-to=origin/feature |
| Kiểm tra upstream đang được đặt | git branch -vv |
Câu hỏi thường gặp về đặt upstream trong Git
Đặt nhánh upstream có tác dụng gì?
git push và git pull trên nhánh này biết dùng remote và nhánh nào, nên bạn chạy được mà không cần đối số. Git cũng cho biết bạn đang đi trước hay đi sau upstream bao nhiêu commit trong git status.Làm sao đặt nhánh upstream?
git push -u origin <branch> vừa push vừa đặt upstream. Với nhánh đã có trên remote, dùng git branch --set-upstream-to=origin/<branch> khi đang ở nhánh đó.Làm sao xem upstream của một nhánh?
git branch -vv. Lệnh này liệt kê các nhánh cục bộ, mỗi nhánh kèm upstream của nó (như [origin/feature]) và cho biết đang đi trước hay đi sau. Nhánh không có upstream thì không hiện gì trong ngoặc vuông.Vì sao git push đòi đặt upstream?
git push -u origin <branch> một lần để đặt; những lần push sau chỉ cần git push.Có thể luyện tập lệnh này online không?
Có. Mở terminal playground để chạy các lệnh này trong một shell thật ngay trên trình duyệt, không cần cài đặt gì. Khóa học Git tương tác miễn phí của Coddy cũng hướng dẫn từng bước cách làm việc với remote.