I. Lời mở đầu
Hiện tại bài viết đang viết theo kiểu ghi chú của bản thân. Tôi sẽ chỉnh sửa lại dần dần để tiếp cận với người đọc tốt hơn.
Một số video phải xem:
- https://www.youtube.com/watch?v=e9lnsKot_SQ
- https://www.youtube.com/watch?v=cC7vg8lWneo
- Làm thế nào sử dụng gitignore file
Bài viết:
II. Git
Một số khái niệm cơ bản:
Git
là một hệ thống quản lí phiên bản phân tán.Git
cung cấp cho mỗi lập trình viên một kho lưu trữ riêng biệt để quản lí lịch sử của dự án.Version Control System
là hệ thống kiểm soát các phiên bản phân tán mã nguồn mở. Các VCS sẽ lưu trữ tất cả các file trong toàn bộ dự án và ghi lại toàn bộ lịch sử thay đổi của file. Mỗi sự thay đổi được lưu lại sẽ được và thành một version (phiên bản).
1. Tổng quan
Mở git bash hoặc terminal.
# Đặt tên hiển thị
git config --global user.name "Tên Của Bạn" # Đặt email dùng cho commit
git config --global user.email "email@example.com"
Lệnh global có nghĩa là áp dụng cho toàn bộ repository.
Nếu bạn chỉ muốn config riêng một project (repo) nào đó, thì cd vào thư mục repo rồi chạy không có --global
:
git config user.name "Tên Riêng Cho Repo Này"
git config user.email "email-rieng@example.com"
dùng Q để thoái khỏi git config --list
Sau khi config để thiết lập một repo trên máy local, dùng:
git init
Mình sẽ tạo hai file main.h
và main.c
trong thư mục làm việc (working directory)
Kiểm tra trạng thái các file trong thư mục như thế nào
git status
Sẽ hiện thị ra terminal như sau
Untracked files: (use "git add <file>..." to include in what will be committed) main.c main.h
Untracked files là những file Git chưa biết đến. 🤷♀️
Khi bạn tạo một file mới trong thư mục làm việc (working directory) của một Git repository, Git sẽ nhận ra sự tồn tại của file đó nhưng chưa bắt đầu theo dõi nó. Những file này được gọi là "untracked files." Git sẽ không lưu lại lịch sử thay đổi của chúng cho đến khi bạn ra lệnh.
Nếu bạn muốn Git theo dõi và lưu lại lịch sử của chúng, bạn cần thêm chúng vào staging area bằng lệnh git add
.
- Thêm một file cụ thể:
git add <tên_file>
- Thêm tất cả các file mới và đã thay đổi:
git add .
Sau khi dùng git add
bây giờ để đưa vào git repo thì ta dùng git commit
Ví dụ:
git commit -m "add main.c main.h files"
Để xem lại thông tin của các commit
thì dùng git log
Tuy nhiên, nếu sau khi commit các file, bây giờ ta lại sửa đối các file đó thì nó sẽ quay về thư mục làm việc và ở trạng thái là M
(viết tắt của modify). Kí tự M
này sẽ ở bên cạnh tên file trong thư mục làm việc.
Lúc này để xem những gì đã thay đổi trong file, bạn nhấn vào mục Source Control và chọn file cần xem.
Để lưu trữ những gì đã thay đổi trong các file ta lại dùng git add
.
Liên kết repo local với repo server
git remote add origin <link repo>
Xong tới 2 câu lệnh
git branch -M main
git push -u origin main
Khi thực thi 2 câu lệnh này mà bạn thấy xuất hiện lỗi như hình bên dưới nghĩa là bạn chưa thiết lập SSH Key giữa github và laptop (client).
Tiếp theo mk, sẽ nói sơ qua về SSH Key và xử lí vấn đề xảy ra này.
2. Tìm hiểu về SSH Key
a. 🛠 SSH Key là gì?
- SSH Key (Secure Shell Key) là cặp khóa (gồm Private Key và Public Key) dùng để xác thực giữa hai máy tính thông qua giao thức SSH.
- Nó hoạt động kiểu như một "chìa khóa – ổ khóa":
- Public Key (khóa công khai): đưa cho dịch vụ/máy chủ (ví dụ GitHub).
- Private Key (khóa riêng tư): giữ bí mật trên laptop của bạn.
- Khi bạn kết nối, máy chủ sẽ kiểm tra xem bạn có “chìa” (Private Key) khớp với ổ khóa (Public Key) mà nó đang giữ không.
b. Ứng dụng
Tăng tính bảo mật và xác thực trước khi truyền dữ liệu trong mạng.
c. Mô tả quá trình hoạt động
d. Tạo SHH Key
Bạn hãy thực hiện tuần tự các bước bên dưới để tạo SSH Key
Bước 1: Tạo khóa
ssh-keygen -t ed25519 -C "địa chỉ email của bạn"
Đầu ra là như sau
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\ADMIN/.ssh/id_ed25519):
C:\Users\ADMIN/.ssh/id_ed25519
đây là đường dẫn thư mục lưu trữ private key. Tại bước này bạn chỉ cần nhấn Enter
để xác nhận.
Enter passphrase (empty for no passphrase): Enter same passphrase again:
Nhập mật khẩu mà bạn muốn, đây là private key không nên tiết lộ với người khác. Sau khi nhập mật khẩu cơ bản là đã hoàn thành việc tạo khóa.
Bước 2: Lưu trữ khóa public key vào trên tài khoản github
- Copy toàn bộ public key nằm trong file
C:\Users\ADMIN\.ssh\id_ed25519.pub
Lưu ý: Mở file với định dạng note. Nó sẽ bắt đầu bằng ssh-ed25519 AAAAC3N...
- Thêm SSH key vào GitHub: Vào
Settings
-> ChọnSSH and GPG Keys
->New SSH Key
. - Điền các thông tin vào
- Title: bạn tự đặt tên
- Key type: Authentication Key
- Paste nội dung
public key
vừa copy vào ô Key
- Nhấn
Add SSH key
3. Đổi remote từ HTTPS sang SSH
Repo của bạn hiện đang dùng HTTPS
(https://github.com/...) phải đổi sang SSH
git remote set-url origin "link ssh"
Để lấy link ssh
thì bạn bấm vào như hình bên dưới bên trong repo
Sau đó, có thể kiểm tra lại
git remote -v
Đảm bảo đầu ra thấy link dạng SSH (git@github.com:...)
.
Kiểm tra kết nối SSH
ssh -T git@github.com
Lần đầu sẽ hiện cảnh báo fingerprint, gõ yes. Nếu thành công, sẽ thấy:
Hi Nguyen-Dang-Trieu! You've successfully authenticated, but GitHub does not provide shell access.
Bây giờ bạn có thể thử lại, Push code
cái bước mà bị lỗi bên trên.
git push -u origin main
Tuy nhiên sẽ yêu cầu private key, chỉ cần bạn nhập chính xác là ok.