Giới thiệu
Yêu cầu
Để bài viết có thể hiệu quả nhất, bạn hãy đảm bảo:
- Bạn đã có tài khoản GitHub
- Git đã được cài trên máy của bạn
- Bạn có trình soạn thảo văn bản (Visual Studio Code, Visual Studio, IntelliJ,…)
Các lệnh thao tác với Git
- branch: Sử dụng lệnh
git branch
để tạo nhánh mới hoặc xem danh sách các nhánh hiện có. - Commit: Lệnh
git commit
được dùng để ghi lại các thay đổi đã được staged trong kho lưu trữ của bạn. - Stage: Lệnh
git add
để thêm các thay đổi vào khu vực staging(một không gian tạm thời nơi bạn có thể thêm các thay đổi mà bạn muốn chuẩn bị cho một lần commit) trước khi commit. - Merge: Lệnh
git merge
để tích hợp các thay đổi từ một nhánh khác vào nhánh hiện tại. - Pull Request: Đề xuất một yêu cầu pull trên GitHub để yêu cầu tích hợp các thay đổi từ nhánh của bạn vào một nhánh khác.
- Fork: Tạo một bản sao của repository từ người khác về tài khoản GitHub của bạn.
- Clone: Lệnh
git clone
để sao chép một repository từ xa về máy tính của bạn. - Remote: Sử dụng
git remote
để quản lý các kết nối đến các repository từ xa. - Origin: Thường là tên mặc định cho repository từ xa mà bạn đã clone về.
- Upstream: Repository gốc mà từ đó bạn đã fork hoặc clone repository.
- Master/Main: Tên của nhánh chính của dự án, chứa mã nguồn chính thức.
- Repository: Kho lưu trữ chứa toàn bộ mã nguồn và lịch sử phiên bản của dự án.
- Working Directory: Thư mục trên máy tính nơi bạn thực hiện các thay đổi.
- Staging Area/Index: Khu vực tạm thời nơi các thay đổi được chuẩn bị cho commit.
- HEAD: Tham chiếu đến commit cuối cùng trong nhánh hiện tại.
- Checkout: Lệnh
git checkout
để chuyển đổi giữa các nhánh hoặc phiên bản cụ thể. - Push: Lệnh
git push
để gửi commit của bạn lên repository từ xa. - Pull: Lệnh
git pull
để kéo các thay đổi từ repository từ xa và gộp chúng vào nhánh hiện tại. - Fetch: Lệnh
git fetch
để lấy các cập nhật từ repository từ xa mà không thực hiện merge ngay lập tức. - Stash: Lệnh
git stash
trong Git được sử dụng để lưu lại các thay đổi hiện tại trong thư mục làm việc và khu vực staging mà không cần phải commit. - Status: Lệnh
git status
trong Git được sử dụng để hiển thị trạng thái hiện tại của thư mục làm việc và khu vực staging.
Tạo một kho lưu trữ bằng trang web Github
Để có thể lưu trữ code của bạn ở Github, bạn cần tạo 1 repository trên trang web Github. Sau đây là các bước tạo 1 repository trên trang web Github:
- Bạn truy cập vào mục
your repository
bằng cách ấn đúp vào logo tài khoản của bạn ở góc cùng bên phải.
- Sau đó chọn
New
ở ô màu xanh bên góc phải
Nhập tên dự án mà bạn muốn tạo, hiện tại github mặc định dự án khởi tạo Public
tức là ai cũng có thể truy cập và xem dự án này của bạn. Còn nếu bạn muốn nó riêng tư, không được bạn phân quyền truy cập thì sẽ không thấy thì chọn lại vào ô Private
, cuối cùng nhấp đúp vào Create repository
để tạo dự án trên Github.
Sau khi bạn tạo dự án, Github sẽ có giao diện như sau:
Kết nối kho lưu trữ từ local với kho lưu trữ từ xa (dự án trên Github).
- Ở terminal của dự án, bạn nhập lệnh
git init
để khởi tạo dự án git
git add README.md
: Lệnh này thêm tệp README.md vào khu vực staging, chuẩn bị để commit. Lệnh này có nghĩa là bạn đã sẵn sàng để Git theo dõi thay đổi trong tệp README.md.
git commit -m "first commit"
: Lệnh này tạo một commit mới với thông điệp “first commit”. Commit này ghi lại tất cả các thay đổi đã được staged (ở đây là README.md).
git branch -M main
: lệnh này tạo 1 nhánh để bạn có thể đẩy code và lưu trữ code ở đây.
git remote add origin https://github.com/nguyendao2101/GitAndGitHub.git
: Lệnh này thêm một remote repository với tên origin, liên kết đến URL của repository GitHub mà bạn đã tạo (địa chỉ URL này là nơi bạn sẽ đẩy mã nguồn của mình lên).
git push -u origin main
: Lệnh này đẩy các commit trên nhánh main lên remote repository origin
Cách kéo các thay đổi code từ xa (Github) về kho lưu trữ cục bộ (local)
Ở đây nếu dự án của bạn có nhiều branch khác nhau thì bạn nên kiểm tra xem bạn đang ở branch nào có đúng là branch mà bạn muốn kéo code về hay không.
Như ở đây hiện tôi đang ở branch “new_main”, nhưng lại muốn kéo code từ nhánh “main” về thì phải chuyển sang nhánh “main” mới có thể kéo code về được. Để chuyển nhánh, bạn nhập lệnh git checkout main
Cuối cùng, bạn nhập lệnh git pull
để kéo các thay đổi code từ xa (Github) về máy của mình (local).
Cách kiểm tra trạng thái của nhánh hiện tại
Lệnh hiển thị trạng thái của nhánh hiện tại, bao gồm mọi thay đổi đã được thực hiện đối với các tệp trong kho lưu trữ. Nó cung cấp thông tin về các tệp nào đã được sửa đổi, tệp nào đã được dàn dựng và tệp nào không được theo dõi.
git status
Cách thêm tệp vào khu vực staging(nơi lưu tạm thời trước khi commit)
Bạn có thể thêm toàn bộ file bằng cách sử dụng git add .
hoặc git add
để thêm từng file một
git add .
git add <file name>
Cách commit tệp
Lệnh commit này ghi lại tất cả các thay đổi đã được staged (đã được lưu ở staging trước đó)
git commit -m "commit file name"
ở đây “-m” có nghĩa là tạo 1 commit với thêm một thông điệp.
Cách đẩy code lên kho lưu trữ từ xa
Lệnh push này sẽ đẩy các code mà bạn đã commit trước đó lên kho lưu trữ từ xa (Github)
git push origin HEAD:main
Ở đây, “origin” là tên của remote repository mà bạn muốn đẩy mã nguồn đến, bạn có thể tự tạo 1 remote này của riêng mình. “HEAD” là một con trỏ đặc biệt trong Git, nó chỉ đến commit hiện tại trên nhánh hiện tại mà bạn đang làm việc.
Cách tạo nhánh
Phân nhánh là một khái niệm cơ bản trong Git. Nó cho phép bạn chuyển hướng khỏi dòng phát triển chính và tiếp tục làm việc mà không ảnh hưởng đến cơ sở mã chính.
Các cách tạo nhánh:
Cách 1: Sử dụng câu lệnh git branch <tên nhánh mới>
. Tuy nhiên nếu bạn sử dụng câu lệnh này thì bạn vẫn sẽ ở branch mà bạn đang tiến hành tạo branch mới mà không tự chuyển sang branch mà bạn vừa tạo. Nếu muốn chuyển sang branch mới tạo bạn phải sử dụng thêm lệnh git checkout <tên nhánh mới>
.
git branch chat_bot
Cách 2: Sử dụng câu lệnh git checkout -b <tên nhánh mới>
. Ở câu lệnh này thì sẽ git sẽ tự động chuyển sang nhánh mới mà bạn vừa tạo.
git checkout -b add_conttacts
Cách xóa nhánh
Giống như tạo nhánh, xóa nhánh cũng là một khái niệm cơ bản trong Git. Nó cho phép bạn có thể xóa những nhánh không còn sử dụng cũng như không cần thiết nữa.
Sử dụng câu lệnh git branch -d <tên nhánh xóa>
, ở câu lệnh này sẽ xóa đi nhánh mà không còn sử dụng nữa một cách đơn giản. Lưu ý bạn không xóa được nếu bạn đang ở branch mà bạn muốn xóa, tức là bạn phải checkout sang 1 nhánh khác thì mới có thể xóa.
git branch -d <tên nhánh xóa>
Cách tạo pull request
Pull request là một đề xuất hợp nhất các thay đổi từ nhánh này sang nhánh khác. Đó là một phương pháp được sử dụng rộng rãi để tạo và xem xét mã. Trong phần này, mình sẽ hướng dẫn bạn quá trình tạo pull request bằng cách sử dụng trang web GitHub.
Tạo 1 branch mới
git checkout -b new_main
Thay đổi trong file Readme.md
Đẩy code lên Github
git add .
git commit -m "update file Readme.md"
git push orgin HEAD:new_main
Khi này bạn truy cập vào dự án của bạn trên github sẽ có thông báo như sau:
Bạn chọn vào Compare & pull request
Ở đây bạn có thể thêm các description. Sau đó bạn chỉ cần kéo xuống và chọnCreate pull request
như vậy là đã thành công.
Cách hợp nhất một Pull Request
Hợp nhất một pull request biểu thị sự tích hợp các thay đổi từ nhánh này sang nhánh khác, thường là nhánh chính. Bước này là mấu chốt trong quy trình làm việc cộng tác, cho phép đồng hóa các sửa đổi vào cơ sở mã chính.
Sau khi bạn đã tạo được pull request, Github sẽ hướng bạn đến màn hình như sau:
Ở đây bạn chỉ cần kích đúp vào Merge pull request
và Confirm merge
Cách thêm “upstream” Remote
Nếu như dự án của bạn được fork từ một dự án khác, đây được gọi là “upstream”. Bạn cần thêm upstream remote chỉ đến repository gốc này.
git remote add upstream <URL của repository gốc>
git remote add upstream git@github.com:nguyendao2101/freechat.git
Cách lấy code mới nhất từ “upstream”
Sau khi đã thêm upstream remote, bạn cần lấy các thay đổi mới nhất từ repository gốc về máy local của mình.
git fetch upstream
Lệnh này sẽ lấy tất cả các nhánh (branches) và cập nhật chúng từ repository gốc, nhưng không thay đổi bất kỳ nhánh nào trong local repository của bạn.
Cập nhật nhánh local với “upstream”
Để cập nhật nhánh local của bạn với các thay đổi từ upstream, bạn cần thực hiện merge
git checkout main
git merge upstream/main
Lệnh này sẽ kết hợp các thay đổi từ upstream/main vào nhánh main của bạn.
Đẩy code từ local lên remote repository của bạn
Sau khi cập nhật nhánh local của bạn với upstream, bạn có thể đẩy các thay đổi này lên remote repository của bạn (thường được gọi là origin):
git push origin main
Lệnh này sẽ đẩy các thay đổi từ nhánh main của bạn lên repository trên GitHub mà bạn đang làm việc.
Tổng kết
Trong suốt hướng dẫn này, mình đã đi sâu vào các khái niệm cốt lõi của Git và GitHub, trang bị cho bạn sự hiểu biết mạnh mẽ về kiểm soát phiên bản và thực tiễn hợp tác. Chúc các bạn thành công.
Bình luận