Git Push
Cập nhật lần cuối
git push tải các commit trên nhánh local lên nhánh tương ứng ở remote (như GitHub). Khi một nhánh đã có upstream, chỉ cần git push là đủ; lần push đầu tiên của một nhánh mới dùng -u để tạo nhánh trên remote và thiết lập theo dõi, để các lần push và pull sau không cần đối số.
Thử các lệnh này trong playground terminal: 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 | Push nhánh hiện tại lên upstream của nó |
git push -u origin feature | Push nhánh mới và đặt upstream |
git push origin main | Push lên một remote và nhánh cụ thể |
git push --tags | Push mọi tag ở local |
git push --force-with-lease | Force push an toàn sau khi rebase |
Tình huống thường gặp
| Mục tiêu | Lệnh |
|---|---|
| Push một nhánh hoàn toàn mới | git push -u origin feature |
| Push sau khi đã đặt upstream | git push |
| Push một tag | git push origin v1.0.0 |
| Xóa một nhánh remote | git push origin --delete feature |
Ví dụ minh họa
| Bước | Lệnh | Kết quả |
|---|---|---|
| 1 | git remote add origin <url> | Kết nối repository local với remote dưới tên origin |
| 2 | git push -u origin main | Tạo main trên remote và đặt nó làm upstream của main ở local |
| 3 | git push | Mọi lần push sau trên main đều không cần đối số |
Câu hỏi thường gặp về git push
git push dùng để làm gì?
Lệnh này gửi những commit có ở nhánh local mà nhánh remote chưa có, rồi dời nhánh remote cho khớp. Nó chỉ tải commit lên: các thay đổi chưa commit vẫn nằm trên máy bạn, nên hãy commit trước. Nếu remote có commit mà bạn chưa có, lệnh push sẽ bị từ chối cho đến khi bạn pull hoặc rebase.
Làm sao để push một nhánh mới lên remote?
git push -u origin <branch>. Cờ -u (viết tắt của --set-upstream) tạo nhánh trên remote và liên kết nhánh local với nó, nên về sau chỉ cần git push và git pull mà không cần đối số. Nhánh remote chưa tồn tại cho đến lần push đầu tiên này.Vì sao git push báo 'no upstream branch'?
git push -u origin <branch> để tạo nhánh remote và đặt upstream. Sau đó, chỉ riêng git push là Git đã biết gửi commit đi đâu.Làm sao để push tag?
git push origin <tagname>, hoặc push tất cả cùng lúc bằng git push --tags. Đây là cái bẫy hay gặp: tag bạn tạo ở local sẽ không xuất hiện trên remote cho đến khi bạn push nó một cách rõ ràng.Làm sao để force push an toàn?
git push --force-with-lease thay vì --force. Lệnh này chỉ ghi đè remote nếu không ai khác push kể từ lần fetch gần nhất của bạn, nhờ đó bảo vệ công sức của đồng đội. Xem giải thích đầy đủ ở trang git force push.git push -u origin main nghĩa là gì?
origin là remote (xem git remote), main là nhánh, còn -u đặt nhánh remote đó làm upstream cho main ở local. Đây là lệnh GitHub hiển thị cho một repository mới: chạy một lần xong, git push và git pull trên main không cần đối số nữa.git push và git pull khác nhau thế nào?
git push tải commit local của bạn lên remote; git pull tải các commit mới của remote về và merge chúng vào nhánh của bạn. Một lần push bị từ chối vì non-fast-forward thường có nghĩa là bạn cần pull trước. Xem git fetch vs pull để biết pull làm gì bên dưới.Có thể luyện tập lệnh này online không?
git push 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 làm việc với remote từng bước.