Menu
CoddyTech

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ì.

git push tải các commit cục bộ mới của bạn lên nhánh remote.

Cú pháp

LệnhTác dụng
git pushPush nhánh hiện tại lên upstream của nó
git push -u origin featurePush nhánh mới và đặt upstream
git push origin mainPush lên một remote và nhánh cụ thể
git push --tagsPush mọi tag ở local
git push --force-with-leaseForce push an toàn sau khi rebase

Tình huống thường gặp

Mục tiêuLệnh
Push một nhánh hoàn toàn mớigit push -u origin feature
Push sau khi đã đặt upstreamgit push
Push một taggit push origin v1.0.0
Xóa một nhánh remotegit push origin --delete feature

Ví dụ minh họa

BướcLệnhKết quả
1git remote add origin <url>Kết nối repository local với remote dưới tên origin
2git push -u origin mainTạo main trên remote và đặt nó làm upstream của main ở local
3git pushMọ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?
Chạy 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'?
Nhánh local của bạn chưa được liên kết với nhánh remote nào. Push nó bằng 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?
Mặc định tag không được push. Push một tag bằng 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?
Sau khi viết lại lịch sử (rebase hoặc amend), hãy dùng 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?
Chúng chuyển commit theo hai chiều ngược nhau. 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?
Có. Mở playground terminal để chạy 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.
Hình minh họa các ngôn ngữ lập trình của Coddy

Học Git cùng Coddy

Bắt đầu