Chuyển đến nội dung chính

Hướng dẫn Git Push và Pull

Tìm hiểu cách thực hiện yêu cầu Git PUSH và PULL qua GitHub Desktop và Dòng lệnh.
Đã cập nhật 5 thg 6, 2026  · 13 phút đọc

Trong hướng dẫn này, tôi sẽ hướng dẫn bạn quy trình sử dụng các lệnh Git push và pull, cũng như tạo pull request thông qua cả GitHub Desktop và dòng lệnh. Hướng dẫn này hữu ích cho bất kỳ ai quản lý kho mã nguồn.

Bạn có thể làm theo tất cả nội dung trong hướng dẫn này, ngay cả khi bạn là người mới bắt đầu. Tuy nhiên, nếu bạn mới sử dụng Git, hãy xem Hướng dẫn GitHub và Git cho Người mới bắt đầu của chúng tôi và thiết lập môi trường bằng hướng dẫn cài đặt Git.

Git Push và Git Pull là gì?

Ở mức khái quát, sự khác nhau như sau:

git push tải các commit cục bộ của bạn lên kho lưu trữ từ xa như GitHub, trong khi git pull tải các thay đổi từ kho lưu trữ từ xa và hợp nhất chúng vào nhánh cục bộ của bạn. Cả hai lệnh đều có thể được sử dụng qua dòng lệnh hoặc GitHub Desktop.

Lưu ý: Pull request là một tính năng của GitHub dùng để đề xuất và xem xét thay đổi trước khi hợp nhất — nó không giống với git pull.

Để đẩy (push) các commit từ một nhánh cục bộ lên kho từ xa, dùng:

git push <remote_name> <branch_name>

Lưu ý khác: GitHub không còn hỗ trợ xác thực bằng mật khẩu. Hãy dùng khóa SSH hoặc personal access token.

Đẩy (Pushing) lên GitHub

Hãy bắt đầu với khái niệm push. 

Sử dụng Dòng lệnh để Push lên GitHub

Cách học tốt nhất là thực hành, vì vậy hãy đi qua từng bước.

1. Tạo một repository mới

Bạn cần tạo một repository mới và nhấp vào dấu cộng.

Điền tất cả thông tin yêu cầu, tức là tên repository, mô tả và đặt repository ở chế độ công khai lần này vì nó miễn phí.

Tạo repository mới Tạo repository mới 2

2. Mở Git Bash của bạn

Git Bash có thể tải xuống tại đây, là một shell dùng để tương tác với hệ điều hành, tuân theo các lệnh UNIX.

3. Tạo dự án cục bộ trên máy tính, trỏ tới thư mục làm việc hiện tại

pwd là viết tắt của 'print working directory', dùng để in ra thư mục hiện tại.

Di chuyển đến đường dẫn cụ thể trên máy tính cục bộ bằng cd 'path_name'. Lệnh cd là 'change directory' và được dùng để chuyển thư mục làm việc trong hệ điều hành; để định vị tệp của bạn, cần cung cấp 'path_name', ví dụ C:/Users/Dell/Downloads/FaceDetect-main. Lệnh này giúp xác định tệp bạn cần làm việc.

Tạo dự án cục bộ trên máy tính, trỏ tới thư mục làm việc hiện tại.

4. Khởi tạo repository git

Dùng git init để khởi tạo repository. Thao tác này tạo một repository trống mới với thư mục ẩn .git ở cấp cao nhất của dự án, nơi tập trung toàn bộ thông tin phiên bản.

Khởi tạo repository git

5. Thêm tệp vào repository cục bộ mới

Dùng git add . để stage tất cả tệp trong thư mục hiện tại. Dùng git status để xem tệp nào đã được stage và sẵn sàng cho commit đầu tiên.

Thêm tệp vào repository cục bộ mới.
6. Commit các tệp đã stage trong repository cục bộ bằng cách viết thông điệp commit

Bạn có thể tạo thông điệp commit bằng git commit -m 'your message', lệnh này ghi nhận các thay đổi đã stage vào repository cục bộ. git commit dùng cờ -m để thêm thông điệp, nội dung mô tả đầy đủ, viết theo lối mệnh lệnh, tối đa 50 ký tự, nêu rõ "đã thay đổi gì" và "vì sao thay đổi".

Commit các tệp đã stage trong repository cục bộ bằng cách viết thông điệp commit.
7. Sao chép URL repository từ xa của bạn từ GitHub

Sao chép HTTPS hoặc URL từ tài khoản GitHub, đây là vị trí của repository từ xa.

Sao chép URL repository từ xa của bạn từ GitHub.

8. Thêm URL đã sao chép (repository từ xa), nơi nội dung cục bộ từ repository của bạn sẽ được push tới

git remote add origin 'your_url_name'

Trong đoạn mã trên, origin là tên remote, và URL remote là "https://github.com/Olivia-Smithcoder100/FaceDetection.git". Ở đây có thể hiểu remote là GitHub, và GitHub cung cấp URL để thêm vào repository từ xa.

9. Đẩy mã trong repository cục bộ của bạn lên GitHub

git push -u origin main được dùng để push nội dung cục bộ lên GitHub.

Trong lệnh, origin là tên mặc định của repository từ xa và cờ -u là upstream, tương đương -set-upstream. main là nhánh. name.upstream là repository mà từ đó chúng ta đã clone dự án.

Xác thực bằng thông tin đăng nhập GitHub của bạn. Lưu ý rằng GitHub không còn hỗ trợ xác thực bằng mật khẩu cho các thao tác Git. Bạn sẽ cần dùng personal access token (PAT) hoặc khóa SSH.

Đẩy mã trong repository cục bộ của bạn lên GitHub

10. Xem các tệp trong repository của bạn được lưu trữ trên GitHub

Cuối cùng bạn có thể thấy tệp được lưu trên GitHub.

Xem các tệp trong repository của bạn được lưu trữ trên GitHub.

Sử dụng GitHub Desktop để Push lên GitHub

GitHub Desktop có sẵn để tải xuống cho mọi hệ điều hành, cung cấp giao diện GUI (Giao diện đồ họa) để đẩy nội dung từ repository cục bộ của bạn lên một repository từ xa như GitHub.

Bạn cần mở tài khoản GitHub của mình trên trình duyệt và quy trình tạo repository mới, tức là bước 1, giống như đã nêu ở phần "Sử dụng dòng lệnh để PUSH lên GitHub".

1. Nhấp "Set up in a Desktop"

Bạn cần nhấp vào nút như bên dưới, nơi xuất hiện một cửa sổ bật lên, và bạn chọn "Open GitHub desktop".

Nhấp "Set up in a Desktop" 1 Nhấp "Set up in a Desktop" 2

2. Nhân bản (Cloning) trong GitHub Desktop

Bạn có thể nhấp nút Clone như bên dưới.

Nhân bản trong GitHub Desktop 1 Sau khi nhân bản, một thư mục được tạo trên máy tính cục bộ, trong đó cũng có thư mục ẩn .git. Nhân bản trong GitHub Desktop 2

3. Sao chép tất cả tệp cần thiết từ máy cục bộ vào thư mục clone trên máy

Bạn cần sao chép tất cả tệp cần thiết, hình ảnh, tệp README, v.v., vào thư mục clone.

Sao chép tất cả tệp cần thiết từ máy cục bộ vào thư mục clone trên máy.

4. Chuyển sang GitHub Desktop và commit vào main

Bạn có thể thấy các tệp đã thêm vào thư mục clone cũng xuất hiện trong GitHub Desktop. Cuối cùng, viết thông điệp và nhấn Commit to main.

Chuyển sang GitHub Desktop và commit vào master

5. Publish branch trong GitHub Desktop để tải tất cả tệp của bạn lên GitHub

Bạn có thể nhấp Publish Branch để xuất bản toàn bộ nội dung cục bộ lên GitHub.

Publish branch trong GitHub Desktop để tải tất cả tệp của bạn lên GitHub.
Bạn có thể xem repository của mình trên GitHub sau khi hoàn tất các bước.

Bạn có thể xem repository của mình trên GitHub sau khi hoàn tất các bước.

Git PULL Request

Pull request là một tính năng của GitHub cho phép bạn thông báo cho người duy trì dự án về các thay đổi bạn đã push lên một repository. Nó không giống với lệnh git pull—pull request là cách để đề xuất và xem xét thay đổi trước khi chúng được hợp nhất vào nhánh chính.

Lệnh đơn giản để pull từ một nhánh là:

git pull 'remote_name' 'branch_name'

Lệnh git pull là sự kết hợp của git fetch (lấy các commit mới nhất về repository cục bộ) và git merge (hợp nhất nhánh từ xa vào nhánh cục bộ). Ngoài ra, remote_name là tên repository và branch_name là tên nhánh cụ thể.

Bạn sẽ xem hai cách khác nhau để sử dụng yêu cầu PULL.

PULL Request qua Dòng lệnh

Bạn có thể thấy các tệp README bên dưới có một lỗi chính tả. Tệp README đánh vần sai từ "contain" thành "containnns". Chủ sở hữu repository là MNALO, và Olivia là cộng tác viên. Cô ấy sẽ sửa lỗi và gửi một PULL Request. Bạn sẽ thấy quy trình tạo PULL Request qua ví dụ cụ thể dưới đây.

PULL Request qua Dòng lệnh. Trong tệp trên, bạn có thể thấy lỗi chính tả ở từ "containnns".

1. Fork repository

"Fork" là một bản sao của repository. Fork một repository cho phép bạn tự do thử nghiệm các thay đổi mà không ảnh hưởng đến dự án gốc. (Nguồn)

1. Fork repository.

2. Mở bash trên máy tính của bạn

Bạn cần di chuyển đến đường dẫn hoặc thư mục cần thiết bằng lệnh cd, và có thể xem nội dung bằng lệnh ls, lệnh này liệt kê tất cả tệp hiện có trong thư mục; trong trường hợp của chúng ta, bạn có thể thấy 'README.md' đang có mặt.

Mở bash trên máy tính của bạn.

3. Tạo một nhánh mới

Bạn có thể tạo nhánh mới bằng git checkout -b 'branch_name'. Trong lệnh trên, cờ -b được dùng để tạo nhánh mới, và branch_name dùng để đặt tên cụ thể cho nhánh; với checkout, bạn sẽ chuyển sang nhánh vừa tạo.

Tạo một nhánh mới.

4. Thực hiện thay đổi bằng vim từ bash hoặc sửa trực tiếp trong tệp README gốc

Bạn có thể đổi từ "containnns" thành "contains" trong tệp README, và có thể xem các thay đổi cùng trạng thái hiện tại bằng lệnh sau.

Thực hiện thay đổi bằng vim từ bash hoặc sửa trực tiếp trong tệp README gốc.

5. Thêm và Commit tệp vào repository

Bạn cần add và commit bằng các lệnh sau.

Thêm và Commit tệp vào repository.

6. Push repository lên GitHub

Bạn cần push nội dung bằng git push origin 'branch_name'. Trong lệnh trên, origin là repository từ xa, và 'branch_name' là nhánh cần tải nội dung cục bộ của bạn lên.

Push repository lên GitHub.

7. Tạo PULL request cho nhánh cụ thể trên GitHub

Bạn có thể vào repository của mình trên GitHub và thấy có một nhánh mới.

Bạn có thể chuyển sang bước 8, nhưng cần cập nhật repository cục bộ với repository upstream. 

Hoặc, bạn có thể dùng git pull-request trong dòng lệnh và hoàn tất PULL Request lên GitHub, khi đó bạn sẽ được yêu cầu push nhánh hiện tại lên repository từ xa.

PULL request cho nhánh cụ thể trên GitHub.

8. Mở Pull request

Bạn cần nhấp nút Create pull request để hoàn tất thao tác.

Mở Pull request

Xóa nhánh sau khi PULL Request được hợp nhất

Bạn cần chuyển đến trang chính của repository và nhấp Pull requests.

Xóa nhánh sau khi PULL Request được hợp nhất.

Bạn cần nhấp Closed để xem danh sách tất cả PULL Request bạn đã tạo; hiện tại chỉ có một, hãy chọn yêu cầu liên quan đến nhánh bạn muốn xóa.

Xóa nhánh sau khi PULL Request được hợp nhất. 2

Bây giờ bạn có thể nhấp Delete branch để hoàn tất thao tác.

Xóa nhánh sau khi PULL Request được hợp nhất. 3

Chủ sở hữu repository có thể xem tất cả các commit, pull request, v.v., do cộng tác viên và người khác thực hiện. Những thay đổi do ai đó thực hiện có thể quan trọng, là các bản vá nhanh cho lỗi, sai sót, v.v., và được thêm vào dự án.

Xóa nhánh sau khi PULL Request được hợp nhất. 4

Chủ sở hữu bây giờ nhấp "Merge pull request". Đồng thời, anh/chị ấy sẽ nhấp "Confirm merge" theo quy trình bên dưới.

Xóa nhánh sau khi PULL Request được hợp nhất. 5

Xóa nhánh sau khi PULL Request được hợp nhất. 6

Thay đổi cuối cùng trong tệp README.md với lỗi chính tả đã được sửa như dưới đây.

Xóa nhánh sau khi PULL Request được hợp nhất. 7

PULL Request qua GitHub Desktop

Tệp "imp" có một lỗi chính tả; MNALO là chủ sở hữu và Olivia là cộng tác viên thực hiện quy trình sau để tạo PULL request từ GitHub Desktop.

1. Clone và mở trên desktop

Một dự án được clone và nhấp "Open in Desktop".

PULL Request qua GitHub Desktop

2. Tạo nhánh mới

Một nhánh mới, "fix-typo-imp" được tạo.

Tạo nhánh mới.

3. Thực hiện thay đổi trong tệp imp bằng trình soạn thảo văn bản

Bạn có thể sửa nội dung tệp imp, sửa lỗi chính tả và thêm một số văn bản.

4. Commit các thay đổi

Viết thông điệp commit và nhấp "Commit to fix-typo-imp".

Commit các thay đổi.

5. Publish nhánh

Bạn có thể publish nhánh, thao tác này sẽ push commit lên GitHub.

Publish nhánh

6. Tạo PULL request

Bạn có thể tạo PULL request bằng cách nhấp Create pull request.

Bạn cũng có thể viết thông điệp rồi nhấp Create pull request một lần nữa.

Tạo PULL Request 1. Tạo PULL Request 2.

Các bước tiếp theo giống như phần "PULL Request qua Dòng lệnh" ở trên.

Kết luận

Bước tiếp theo, hãy thử khóa học GitHub Concepts để tiếp tục luyện tập các tác vụ hằng ngày. Tôi cũng sẽ lấy Chứng chỉ GitHub Foundations của chúng tôi, được xây dựng nhờ hợp tác với GitHub. Hoàn thành chứng chỉ sẽ rất nổi bật trên sơ yếu lý lịch, cộng thêm có ưu đãi lớn cho lệ phí kỳ thi khi bạn hoàn thành khóa học. Cuối cùng, tôi sẽ xem GitHub Actions, vì chúng ngày càng được sử dụng trong quy trình CI/CD, liên quan đến các thao tác push/pull.

Câu hỏi thường gặp

Git push là lệnh gì?

Lệnh git push được dùng để tải nội dung từ repository cục bộ của bạn lên một repository từ xa như GitHub. Điều này rất quan trọng để chia sẻ thay đổi với người khác hoặc đồng bộ phát triển cục bộ của bạn với một repository công khai hoặc dùng chung.

Tôi thực hiện Git pull request như thế nào?

Git pull request không chỉ là một lệnh Git trực tiếp mà là tính năng do GitHub cung cấp để thông báo cho người duy trì dự án về các thay đổi bạn đã push lên một repository trên GitHub. Bạn bắt đầu bằng cách thay đổi trong fork của repository, push các thay đổi đó, rồi gửi pull request qua giao diện web của GitHub.

Sự khác nhau giữa git pull và git fetch là gì?

git pull làm hai việc: lấy (fetch) các thay đổi từ một nhánh từ xa và ngay lập tức hợp nhất (merge) chúng vào nhánh hiện tại của bạn. Ngược lại, git fetch chỉ lấy các thay đổi từ repository từ xa mà không hợp nhất, cho phép bạn xem xét trước khi tích hợp vào nhánh của mình.

Tôi có thể xóa nhánh sau khi hợp nhất một pull request không?

Có. Sau khi pull request được hợp nhất, bạn có thể xóa nhánh một cách an toàn vì nó đã hoàn thành nhiệm vụ. Việc xóa nhánh giúp repository gọn gàng và dễ quản lý.

Điều kiện tiên quyết để dùng GitHub Desktop cho các thao tác Git là gì?

Để dùng GitHub Desktop, bạn cần tải và cài đặt ứng dụng trên hệ thống, có tài khoản GitHub, và tốt nhất là quen thuộc phần nào với quy trình làm việc của GitHub. Đây là giao diện thân thiện giúp đơn giản hóa nhiều lệnh Git thành các thao tác bấm chuột.

Tôi xử lý xung đột trong quá trình Git pull request như thế nào?

Xung đột xảy ra khi thay đổi ở một nhánh chồng lấn với thay đổi ở nhánh khác và không thể hợp nhất tự động. Để giải quyết, bạn phải chỉnh sửa thủ công các tệp để quyết định nội dung cuối cùng, cập nhật thay đổi, rồi hoàn tất quá trình hợp nhất. Các công cụ trong GitHub và GitHub Desktop có thể giúp xác định và xử lý xung đột.

Điều gì khiến GitHub đổi tên nhánh mặc định từ master sang main?

GitHub thay đổi tên nhánh mặc định để phù hợp với thực hành ngôn ngữ bao hàm. Thuật ngữ "master" được một số người xem là có thể gây nhạy cảm, và "main" được chọn như một lựa chọn trung tính và mô tả hơn. 

Chủ đề

Khóa học Khoa học Dữ liệu

Courses

Nhập môn Ngôn ngữ lập trình R

4 giờ
3M
Xem chi tiếtRight Arrow
Bắt đầu khóa học
Xem thêmRight Arrow