Bảng cheat lệnh Git: Các lệnh bạn thực sự sử dụng, kèm theo ví dụ

  1. Trang chủ
  2. Blog
  3. Phát triển phần mềm

Phát triển phần mềm

Bảng tóm tắt lệnh Git: Các lệnh bạn thực sự sử dụng, kèm theo ví dụ

Một tài liệu tham khảo Git thực tế được nhóm theo những gì bạn đang cố gắng thực hiện, từ cam kết đầu tiên của bạn cho đến việc hoàn tác một sai lầm. Hãy mở nó trong khi bạn làm việc và sử dụng hướng dẫn hoàn tác trước khi bạn thực hiện bất kỳ điều gì rủi ro.

Đọc 8 phút
Bảng tóm tắt lệnh Git: các lệnh bạn thực sự sử dụng, kèm theo ví dụ

Điểm chính

  • Một thay đổi sẽ di chuyển qua ba khu vực: thư mục làm việc, khu vực tổ chức và kho lưu trữ.
  • git status là lệnh an toàn nhất mà bạn có, vì vậy hãy chạy nó liên tục.
  • Sử dụng git revert để hoàn tác các cam kết được chia sẻ và giữ git reset --hard cho công việc cục bộ mà bạn chắc chắn.
  • git reflog thường có thể giải cứu các cam kết mà bạn nghĩ đã bị mất.

Không ai nhớ mọi lệnh Git và bạn cũng không cần phải làm vậy. Bảng tóm tắt lệnh Git này tập trung vào tập hợp nhỏ bao gồm gần như tất cả công việc hàng ngày, được nhóm theo công việc bạn đang cố gắng thực hiện.

Chúng tôi đã thử nghiệm các lệnh cục bộ trong kho lưu trữ demo dùng một lần bằng Git dành cho Windows và kết quả hiển thị là từ lần chạy đó, với các cảnh báo ở cuối dòng đã bị loại bỏ. Băm cam kết của bạn sẽ khác nhau. Các lệnh từ xa cần có máy chủ nên chúng tôi không chạy các lệnh đó. Mới kiểm soát phiên bản? Bắt đầu với Hướng dẫn Git dành cho người mới bắt đầu của chúng tôi.

Git nghĩ như thế nào: ba lĩnh vực

Hầu hết sự nhầm lẫn sẽ biến mất khi bạn biết sự thay đổi diễn ra ở đâu:

Khu vực Nó chứa cái gì Đã chuyển đến đó bởi
Thư mục làm việc Các tập tin của bạn khi bạn chỉnh sửa chúng Chỉnh sửa
Khu vực tổ chức (chỉ mục) Những thay đổi được chọn cho lần xác nhận tiếp theo thêm git
Kho lưu trữ cục bộ Lịch sử cam kết đã lưu của bạn cam kết git
Kho lưu trữ từ xa Bản sao được chia sẻ, chẳng hạn như trên GitHub đẩy git

Thiết lập và bắt đầu một dự án

Lệnh Nó làm gì
cấu hình git --global user.name "Asha" Đặt tên của bạn trên các cam kết
cấu hình git --global user.email "a@b.com" Đặt email của bạn theo cam kết
cấu hình git --global init.defaultBranch main Đặt tên các nhánh mặc định mới main
khởi tạo git Tạo một kho lưu trữ trong thư mục hiện tại
bản sao git <url> Tải xuống kho lưu trữ hiện có
cấu hình git --list Hiển thị cài đặt hiện tại của bạn

Lưu công việc của bạn

Lệnh Nó làm gì
trạng thái git Hiển thị những gì đã thay đổi
git thêm tập tin.txt Giai đoạn một tập tin
git thêm . Giai đoạn tất cả các thay đổi trong thư mục này
git thêm -p Các giai đoạn được chọn của một tập tin
git khác biệt Hiển thị các thay đổi chưa được phân đoạn
git diff --staged Hiển thị những gì sẽ được cam kết
git cam kết -m "Tin nhắn" Lưu các thay đổi theo giai đoạn dưới dạng cam kết
git commit -am "Tin nhắn" Các giai đoạn theo dõi các tập tin và cam kết chúng

Đây là cách chế độ xem trạng thái ngắn thay đổi khi một tệp mới di chuyển:

$ echo "hello" > app.txt
$ git status --short
?? app.txt

$ git add app.txt
$ git status --short
A  app.txt

$ git commit -m "Add app file"

?? có nghĩa là không được theo dõi và A có nghĩa là được thêm vào giai đoạn. Ở định dạng hai cột, cột bên trái là vùng tổ chức và cột bên phải là thư mục làm việc của bạn. Lưu ý rằng git commit -am bỏ qua các tệp hoàn toàn mới, vì vậy trước tiên bạn phải thêm chúng một cách rõ ràng.

Chi nhánh

Lệnh Nó làm gì
nhánh git Liệt kê các chi nhánh địa phương
nhánh git -a Bao gồm các chi nhánh từ xa
tính năng chuyển đổi git/đăng nhập Di chuyển đến một chi nhánh
tính năng chuyển đổi git -c/đăng nhập Tạo một nhánh và di chuyển đến nó
tính năng hợp nhất git/đăng nhập Hợp nhất nhánh đó vào nhánh hiện tại
git rebase chính Phát lại các cam kết của bạn trên main
tính năng git nhánh -d/đăng nhập Xóa một nhánh đã hợp nhất
nhánh git -D tính năng/đăng nhập Buộc xóa một nhánh chưa hợp nhất

Đây là một nhánh tính năng nhỏ từ đầu đến cuối:

$ git switch -c feature/login
$ echo "login" >> app.txt
$ git commit -am "Add login"
$ git switch main
$ git merge --no-edit feature/login
$ git log --oneline --graph
* d0450b6 Add login
* 676b684 Add app file

$ git branch -d feature/login
Deleted branch feature/login (was d0450b6).

Lịch sử là một đường thẳng vì main chưa di chuyển nên Git đã thực hiện hợp nhất chuyển tiếp nhanh. Bạn vẫn sẽ thấy git checkout trong các hướng dẫn cũ hơn. Nó hoạt động, nhưng các lệnh switch và restore mới hơn chia nhiều công việc của nó thành những công việc rõ ràng hơn. Để chọn giữa hợp nhất và rebase, hãy đọc Hợp nhất Git vs rebase.

Làm việc với điều khiển từ xa

Lệnh Nó làm gì
git từ xa -v Liệt kê các điều khiển từ xa và URL của chúng
git từ xa thêm nguồn gốc <url> Kết nối một điều khiển từ xa
tìm nạp git Tải xuống thay đổi mà không hợp nhất
kéo git Tìm nạp, sau đó tích hợp vào chi nhánh của bạn
đẩy git Tải lên cam kết của bạn
git push -u tính năng xuất xứ/đăng nhập Đẩy một nhánh mới và theo dõi nó
git Push Origin --delete tính năng/đăng nhập Xóa một nhánh từ xa
git push --force-with-lease Lực đẩy, nhưng chỉ khi không có ai khác đẩy

fetch luôn an toàn vì nó không bao giờ thay đổi tập tin của bạn. Nếu bạn cần ghi đè một nhánh sau khi rebase, hãy ưu tiên --force-with-lease thay vì --force, vì nó từ chối xóa sạch các cam kết mới của đồng nghiệp.

Stash: đặt công việc sang một bên

Stash rất hữu ích khi bạn cần chuyển đổi nhiệm vụ nhưng chưa sẵn sàng cam kết:

$ echo "wip" >> app.txt
$ git stash
$ git status --short
                       # clean, the change is put away
$ git stash pop
$ git status --short
 M app.txt
Lệnh Nó làm gì
kho git Lưu các thay đổi và dọn dẹp thư mục làm việc của bạn
kho git -u Bao gồm các tập tin không bị theo dõi
danh sách kho git Hiển thị các stash đã lưu
git stash pop Khôi phục stash mới nhất và xóa nó
git stash áp dụng Khôi phục nó nhưng vẫn lưu nó

Xem lịch sử

Lệnh Nó làm gì
nhật ký git --oneline Hiển thị một dòng trên mỗi cam kết
git log --oneline --graph --all Vẽ tất cả các nhánh
git log -p file.txt Hiển thị các thay đổi của tệp theo thời gian
git hiển thị <băm> Hiển thị chi tiết một cam kết
git đổ lỗi cho tập tin.txt Hiển thị ai đã thay đổi từng dòng lần cuối
git reflog Hiển thị ở mọi nơi HEAD đã có mặt
git chia đôi Tìm kiếm nhị phân cho cam kết đã thêm lỗi

Hoàn tác sai lầm: “Tôi muốn …”

Đây là phần được nhiều người tìm kiếm nhất. Tìm tình huống của bạn:

Tình huống Lệnh
Loại bỏ các chỉnh sửa chưa được sắp xếp trong một tệp git khôi phục tập tin.txt
Hủy phân đoạn một tệp nhưng vẫn giữ các chỉnh sửa git khôi phục --staged file.txt
Sửa tin nhắn hoặc tập tin của lần xác nhận cuối cùng cam kết git --amend
Hoàn tác cam kết cuối cùng, giữ các thay đổi theo giai đoạn thiết lập lại git --soft HEAD~1
Hoàn tác cam kết cuối cùng, giữ nguyên các thay đổi git đặt lại ĐẦU ~ 1
Hoàn tác một cam kết đã đẩy một cách an toàn git hoàn nguyên <hash>
Vứt bỏ tất cả các thay đổi cục bộ thiết lập lại git --hard
Xóa các tập tin không bị theo dõi git clean -fd (xem trước với -n)
Khôi phục một cam kết “bị mất” git reflog, rồi git branch rescue <hash>

Mẹo: Trước khi có bất cứ điều gì nguy hiểm, hãy chạy git branch backup. Nó không tốn kém gì và cung cấp cho bạn một nhãn để quay lại. git reset --hard và git clean có thể phá hủy vĩnh viễn công việc chưa được cam kết, mà ngay cả reflog cũng không thể phục hồi được.

Đặt lại so với hoàn nguyên so với khôi phục

Ba cái tên này gây ra nhiều nhầm lẫn, nhưng chúng thực hiện những việc hoàn toàn khác nhau:

Lệnh Hành động trên Lịch sử thay đổi? An toàn trên các nhánh chia sẻ?
khôi phục git Tập tin Không Có, nhưng nó loại bỏ các chỉnh sửa cục bộ
git hoàn nguyên Một cam kết, bằng cách thêm điều ngược lại của nó Thêm vào nó Có
thiết lập lại git Con trỏ nhánh Viết lại nó Không

Trong bản demo của chúng tôi, chúng tôi đã phạm phải một dòng sai và hoàn nguyên nó. Tệp đã quay trở lại nội dung trước đó, trong khi lỗi vẫn hiển thị trong nhật ký dưới dạng lịch sử:

$ echo "oops" >> app.txt
$ git commit -am "Bad change"
$ git revert --no-edit HEAD
$ cat app.txt
hello
login

Sau đó git reset --soft HEAD~1 đã xóa lần xác nhận cuối cùng đó nhưng vẫn giữ các thay đổi của nó theo giai đoạn, git status --short hiển thị là M app.txt.

Thẻ

Lệnh Nó làm gì
thẻ git Danh sách thẻ
thẻ git v1.0 Tạo một thẻ nhẹ
thẻ git -a v1.0 -m "Phát hành" Tạo thẻ chú thích, phù hợp nhất cho bản phát hành
git đẩy nguồn gốc v1.0 Đẩy một thẻ (thẻ không đẩy theo mặc định)

Thẻ thường kích hoạt quy trình phát hành, như Hướng dẫn CI/CD GitHub Actions của chúng tôi giải thích.

Quy trình làm việc đơn giản hàng ngày

git switch main
git pull
git switch -c feature/search
# edit files
git status
git add -p
git commit -m "Add search by product name"
git push -u origin feature/search
# open a pull request, get a review, then merge

Viết thông báo cam kết giải thích sự thay đổi trong mệnh lệnh, như “Khắc phục chuyển hướng đăng nhập”. Bạn sẽ cảm ơn chính mình khi đọc nhật ký sáu tháng kể từ bây giờ.

Những lỗi thường gặp

  • Xác nhận bí mật. Việc xóa tệp trong lần xác nhận sau sẽ không xóa tệp đó khỏi lịch sử. Xoay bí mật ngay lập tức và sử dụng .gitignore.
  • Viết lại lịch sử được chia sẻ. Không đặt lại hoặc khởi động lại các cam kết mà người khác đã thực hiện.
  • Sử dụng git add . một cách mù quáng. Trước tiên hãy kiểm tra git status để tránh các tệp và nhật ký xây dựng.
  • Sử dụng đơn giản --force. Thích --force-with-lease.
  • Thực hiện những cam kết lớn. Những cam kết nhỏ sẽ dễ dàng xem xét, hoàn nguyên và chia đôi hơn.

Lời kết

Tìm hiểu ba lĩnh vực và hàng tá lệnh, Git sẽ không còn đáng sợ nữa. Giữ bảng hoàn tác ở nơi thuận tiện và nhớ rằng git status và git reflog là mạng lưới an toàn của bạn. Để xây dựng lòng tin, hãy tạo một kho lưu trữ dùng một lần và cố tình phá vỡ và sửa chữa nó, vì đó là nơi rẻ nhất để phạm sai lầm.

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

Các lệnh Git được sử dụng nhiều nhất là gì?

Tập hợp hàng ngày là trạng thái git, thêm, cam kết, đẩy, kéo, chuyển đổi, phân nhánh, hợp nhất và ghi nhật ký. Một vài lệnh đó bao gồm hầu hết một ngày làm việc thông thường.

Làm cách nào để hoàn tác cam kết cuối cùng của tôi trong Git?

Nếu là cục bộ, hãy sử dụng git reset –soft HEAD~1 để duy trì các thay đổi theo giai đoạn. Nếu bạn đã đẩy nó, hãy sử dụng git Revert để lịch sử vẫn còn nguyên đối với những người khác.

Sự khác biệt giữa git tìm nạp và git kéo là gì?

git tìm nạp chỉ tải xuống dữ liệu mới và để yên các tệp của bạn. git pull tìm nạp rồi hợp nhất hoặc khôi phục những thay đổi đó vào nhánh hiện tại của bạn.

Sự khác biệt giữa git reset và git Revert là gì?

git reset di chuyển con trỏ nhánh và có thể viết lại lịch sử. git Revert thêm một cam kết mới hoàn tác cam kết trước đó, giúp nó an toàn trên các nhánh được chia sẻ.

Tôi có thể khôi phục nhánh đã xóa trong Git không?

Thông thường, có. Tìm cam kết cuối cùng của nó bằng git reflog, sau đó tạo lại nhánh với tên nhánh git theo sau là hàm băm, miễn là Git chưa dọn sạch nó.

Tiếp tục học hỏi

Làm việc với Stack Quora

Cần trợ giúp về kiểm tra, WordPress hoặc SEO?

Chúng tôi giúp các nhóm phát triển phần mềm tốt hơn và phát triển trang web của họ. Hãy cho chúng tôi biết bạn đang làm gì và chúng tôi sẽ đề xuất bước tiếp theo rõ ràng.

Tiếp tục đọc

Thêm hướng dẫn về thử nghiệm, AI và phát triển hiện đại

Bạn thích bài viết này? Chọn một chủ đề và chuyển ngay sang phần hướng dẫn mới nhất của chúng tôi.

Trí tuệ nhân tạo

Giải thích về ảo giác AI: Tại sao các mô hình ngôn ngữ lại tạo nên mọi thứ và cách giảm thiểu nó

Ảo giác AI đã giải thích: chúng là gì, tại sao mô hình ngôn ngữ tạo ra chúng, các loại phổ biến, cách giảm thiểu chúng bằng cách căn cứ và nhắc nhở …

Đọc bài viết →
DevOps

Giải thích về các biến môi trường: Tệp .env, bí mật và cấu hình được thực hiện đúng

Các biến môi trường được giải thích bằng các ví dụ Python mà chúng tôi đã chạy: đọc và thiết lập chúng, tại sao mọi giá trị đều là một chuỗi, tệp .e…

Đọc bài viết →
Phát triển phần mềm

Giải thích về giới hạn tỷ lệ API: Thuật toán, tiêu đề và xử lý lỗi 429

Giới hạn tốc độ API được giải thích bằng mô phỏng mà chúng tôi đã chạy: nhóm mã thông báo, cửa sổ cố định, cửa sổ trượt, 429 phản hồi, tiêu đề giới …

Đọc bài viết →
Tự động hóa kiểm thử

Chế giễu bằng Python: unittest.mock, patch và những sai lầm khiến bài kiểm tra nói dối

Mô phỏng bằng Python với unittest.mock, đã được thử nghiệm: Mock và return_value, side_effect, vá lỗi nơi sử dụng tên, thông số kỹ thuật và thông số…

Đọc bài viết →
Kiểm thử phần mềm

Giải thích về phạm vi bảo hiểm của mã: Phạm vi tuyến so với chi nhánh và ý nghĩa thực sự 100%

Phạm vi bảo hiểm mã được giải thích bằng cách chạy phạm vi bảo hiểm thực tế: phạm vi bảo hiểm dòng, chi nhánh và điều kiện, đọc báo cáo, lý do tại s…

Đọc bài viết →
Cơ sở dữ liệu & SQL

DELETE vs TRUNCATE vs DROP trong SQL: Sự khác biệt, khôi phục và thời điểm sử dụng mỗi loại

DELETE vs TRUNCATE vs DROP được giải thích bằng SQL đã được thử nghiệm: mỗi loại loại bỏ, khôi phục, kích hoạt, đặt lại danh tính, tốc độ và Postgre…

Đọc bài viết →
Cơ sở dữ liệu & SQL

Giải thích về Chế độ xem SQL: Tạo, sử dụng và tránh những cạm bẫy, kèm theo ví dụ

Chế độ xem SQL được giải thích bằng các truy vấn chúng tôi đã chạy: tạo chế độ xem, kết quả trực tiếp, ẩn cột, hiệu suất, chế độ xem có thể cập nhật…

Đọc bài viết →
Phát triển phần mềm

Giao diện TypeScript so với loại: Sự khác biệt thực sự, được thử nghiệm bằng trình biên dịch

Giao diện TypeScript so với loại, được kiểm tra bằng trình biên dịch thực: cả hai có thể làm gì, chỉ một người có thể làm gì, hợp nhất khai báo, mở …

Đọc bài viết →
Phát triển phần mềm

Giải thích về Python *args và **kwargs: Hàm linh hoạt với ví dụ rõ ràng

Python *args và **kwargs được giải thích bằng mã chúng tôi đã chạy: đóng gói và giải nén, thứ tự tham số, đối số chỉ từ khóa và chỉ vị trí, trình tr…

Đọc bài viết →
Phát triển phần mềm

Hàm Lambda của Python: Cú pháp, cách sử dụng thực tế và khi nào không nên sử dụng chúng

Các hàm lambda của Python được giải thích bằng mã chúng tôi đã chạy: cú pháp, sắp xếp bằng khóa, bản đồ và bộ lọc, các phần đóng, bẫy liên kết muộn …

Đọc bài viết →
Trí tuệ nhân tạo

Đại lý AI là gì? Cách chúng hoạt động, với vòng lặp tác nhân đơn giản, bạn có thể chạy

Tác nhân AI là gì? Hướng dẫn đơn giản về vòng lặp tác nhân, công cụ, bộ nhớ và lan can, với một vòng lặp Python nhỏ mà chúng tôi đã chạy, những rủi …

Đọc bài viết →
DevOps

Giám sát và Khả năng quan sát: Sự khác biệt thực sự, với nhật ký, số liệu và dấu vết

Giải thích về giám sát và khả năng quan sát: lỗi đã biết và chưa biết, nhật ký, số liệu và dấu vết, hướng dẫn về sự cố thanh toán, tín hiệu vàng, Op…

Đọc bài viết →
DevOps

Docker Volumes vs Bind Mounts: Duy trì dữ liệu vùng chứa đúng cách

Giải thích về khối lượng Docker và liên kết gắn kết: tại sao dữ liệu vùng chứa biến mất, khối lượng được đặt tên, liên kết gắn kết, tmpfs, ví dụ về …

Đọc bài viết →
Tự động hóa kiểm thử

TDD vs BDD: Key Differences, One Feature Built Both Ways and When to Use Each

TDD và BDD được giải thích bằng một tính năng giảm giá được xây dựng theo cả hai cách: tái cấu trúc màu đỏ-xanh với mã chúng tôi đã chạy, kịch bản C…

Đọc bài viết →
Kiểm thử phần mềm

Kiểm tra chấp nhận của người dùng (UAT): Quy trình, danh sách kiểm tra và ví dụ thực tế

Giải thích về thử nghiệm chấp nhận của người dùng: ai chạy nó, nó khác với QA như thế nào, quy trình bảy bước, mẫu trường hợp thử nghiệm UAT, danh s…

Đọc bài viết →
Cơ sở dữ liệu & SQL

Giải thích về các giá trị NULL của SQL: IS NULL, COALESCE, NULLIF và những cái bẫy cần tránh

Các giá trị SQL NULL được giải thích bằng các truy vấn chúng tôi đã chạy: logic ba giá trị, IS NULL, COALESCE, NULLIF, cách tổng hợp, kết hợp và sắp…

Đọc bài viết →
Cơ sở dữ liệu & SQL

Câu lệnh SQL CASE WHEN: Cú pháp, ví dụ thực tế và các lỗi thường gặp

TRƯỜNG HỢP SQL KHI được giải thích bằng các truy vấn mà chúng tôi đã chạy: các biểu mẫu đơn giản và được tìm kiếm, thứ tự điều kiện, các thủ thuật S…

Đọc bài viết →
Phát triển phần mềm

JWT là gì? Mã thông báo Web JSON được giải thích bằng một ví dụ hoạt động

JWT là gì? Mã thông báo Web JSON đã giải thích: ba phần, mã thông báo được xây dựng và giả mạo trong mã chúng tôi đã chạy, JWT so với phiên, lưu trữ…

Đọc bài viết →
Phát triển phần mềm

Giải thích về vòng lặp sự kiện JavaScript: Ngăn xếp cuộc gọi, Microtask và bộ hẹn giờ kèm ví dụ

Vòng lặp sự kiện JavaScript được giải thích bằng mã chúng tôi đã chạy: ngăn xếp cuộc gọi, hàng đợi tác vụ và vi nhiệm, tại sao setTimeout 0 không di…

Đọc bài viết →
Phát triển phần mềm

Giải thích về trình tạo và năng suất của Python: Tiết kiệm bộ nhớ bằng các ví dụ thực tế

Trình tạo và lợi nhuận Python được giải thích bằng mã chúng tôi đã chạy: cách chúng tạm dừng và tiếp tục, đo mức tiết kiệm bộ nhớ, quy trình, chuỗi …

Đọc bài viết →
Trí tuệ nhân tạo

Nhúng là gì? Giải thích sự tương đồng về vectơ và Cosine một cách đơn giản

nhúng là gì? Hướng dẫn bằng ngôn ngữ đơn giản về vectơ, độ tương tự cosine và tìm kiếm ngữ nghĩa, với một ví dụ nhỏ mà chúng tôi đã chạy, các cách s…

Đọc bài viết →
DevOps

Triển khai Blue-Green và Canary: Sự khác biệt, sự đánh đổi và cách lựa chọn

Giải thích về triển khai Blue-green và Canary: cách hoạt động của từng loại, chi phí, rủi ro và khôi phục, nhóm người dùng ổn định mà chúng tôi đã t…

Đọc bài viết →
Tự động hóa kiểm thử

Kiểm tra không ổn định: Nguyên nhân gây ra chúng và cách khắc phục chúng vĩnh viễn

Các thử nghiệm không ổn định được giải thích bằng các bản demo mà chúng tôi đã chạy: nguyên nhân chính, cách xác nhận và chẩn đoán nguyên nhân, cách…

Đọc bài viết →
Kiểm thử phần mềm

Kiểm tra tải và kiểm tra căng thẳng: Sự khác biệt, số liệu và ví dụ về k6

Giải thích về thử nghiệm tải và thử nghiệm căng thẳng: mỗi thử nghiệm chứng minh điều gì, thử nghiệm tăng đột biến và ngâm, số liệu quan trọng, lý d…

Đọc bài viết →
Kiểm thử phần mềm

Trường hợp thử nghiệm và kịch bản thử nghiệm: Sự khác biệt chính, ví dụ và thời điểm sử dụng từng trường hợp

Giải thích trường hợp kiểm thử và kịch bản kiểm thử: định nghĩa rõ ràng, bảng cạnh nhau, một tính năng đặt lại mật khẩu được lấy từ các tình huống n…

Đọc bài viết →
Cơ sở dữ liệu & SQL

Tối ưu hóa truy vấn SQL: Đọc kế hoạch thực thi và sửa các truy vấn chậm, có tính thời gian

Đã thử nghiệm tối ưu hóa truy vấn SQL trên một triệu hàng: đọc kế hoạch thực hiện, thêm chỉ mục phù hợp, sửa các bộ lọc không thể mở rộng, sử dụng c…

Đọc bài viết →
Cơ sở dữ liệu & SQL

SQL UNION và UNION ALL: Sự khác biệt, ví dụ và hiệu suất đã được kiểm tra

SQL UNION và UNION ALL được giải thích bằng các truy vấn chúng tôi đã chạy: trùng lặp, cả hai quy tắc đều tuân theo, lỗi dữ liệu thực, hiệu suất đượ…

Đọc bài viết →
Phát triển phần mềm

Hướng dẫn API tìm nạp JavaScript: GET, POST, Xử lý lỗi và hết thời gian chờ

Hướng dẫn API tìm nạp JavaScript đã được thử nghiệm trên máy chủ cục bộ: GET và POST, tại sao 404 không gửi, trình trợ giúp có thể sử dụng lại, chuỗ…

Đọc bài viết →
Phát triển phần mềm

Xử lý tệp Python: Đọc, ghi, CSV, JSON và pathlib kèm ví dụ

Việc xử lý tệp Python được giải thích bằng mã chúng tôi đã chạy: chế độ mở, với, đọc tệp lớn, CSV, JSON, pathlib, tệp nhị phân, ghi an toàn, xử lý l…

Đọc bài viết →
Phát triển phần mềm

Các lớp và đối tượng Python: Hướng dẫn OOP với các ví dụ thực tế

Các lớp và đối tượng Python được giải thích bằng mã mà chúng tôi đã chạy: __init__, các phương thức, thuộc tính lớp và phiên bản, tính kế thừa, thuộ…

Đọc bài viết →
Trí tuệ nhân tạo

Mô hình ngôn ngữ lớn là gì? LLM hoạt động như thế nào, được giải thích mà không cường điệu hóa

Mô hình ngôn ngữ lớn là gì? LLM được giải thích bằng ngôn ngữ đơn giản: mã thông báo, phần nhúng, sự chú ý, đào tạo, cửa sổ nhiệt độ và ngữ cảnh, mộ…

Đọc bài viết →
DevOps

Các lệnh Linux cho người mới bắt đầu: Hướng dẫn thiết bị đầu cuối cần thiết kèm ví dụ

Các lệnh Linux dành cho người mới bắt đầu, được nhóm theo tác vụ: điều hướng, tệp, xem nhật ký, grep, đường dẫn, quyền, quy trình và lưu trữ, cùng v…

Đọc bài viết →
Tự động hóa kiểm thử

Selenium vs Nhà viết kịch: Sự khác biệt chính, So sánh mã và nên chọn cái nào

Selenium và Playwright được so sánh: kiến trúc, chờ đợi, hỗ trợ trình duyệt và ngôn ngữ, gỡ lỗi, kiểm tra giống nhau ở cả hai công cụ, lời khuyên di…

Đọc bài viết →
Kiểm thử phần mềm

Phân vùng tương đương: Giải thích kỹ thuật thiết kế thử nghiệm bằng các ví dụ đã thực hiện

Giải thích về phân vùng tương đương: cách tìm các phân vùng hợp lệ và không hợp lệ, các ví dụ hoạt động theo độ tuổi, mật khẩu và phiếu giảm giá, cá…

Đọc bài viết →
Kiểm thử phần mềm

Mức độ nghiêm trọng và mức độ ưu tiên trong kiểm thử phần mềm: Sự khác biệt, Ma trận và ví dụ thực tế

Giải thích về mức độ nghiêm trọng và mức độ ưu tiên trong kiểm thử phần mềm: định nghĩa rõ ràng, ma trận bốn chiều với các ví dụ, thang đo cấp độ, a…

Đọc bài viết →
Cơ sở dữ liệu & SQL

Hướng dẫn về truy vấn con SQL: Các loại, truy vấn con tương quan và TỒN TẠI kèm ví dụ

Hướng dẫn về truy vấn con SQL với các truy vấn chúng tôi đã chạy: truy vấn con vô hướng, IN, FROM và SELECT, truy vấn con tương quan, EXISTS, bẫy và…

Đọc bài viết →
Cơ sở dữ liệu & SQL

Giải thích về giao dịch SQL và ACID: Các mức CAM KẾT, ROLLBACK và Cô lập

Các giao dịch SQL và ACID được giải thích bằng chuyển khoản ngân hàng mà chúng tôi đã thực hiện: CAM KẾT, ROLLBACK, điểm lưu trữ, khóa, mức cách ly,…

Đọc bài viết →
Phát triển phần mềm

Bảng cheat lệnh Git: Các lệnh bạn thực sự sử dụng, kèm theo ví dụ

Một bảng ghi lệnh Git được nhóm theo nhiệm vụ: thiết lập, dàn dựng, nhánh, điều khiển từ xa, lưu trữ, lịch sử và hoàn tác các lỗi, với đầu ra từ kho…

Đọc bài viết →
Phát triển phần mềm

Giải thích về các lời hứa trong JavaScript: then, Catch, Promise.all và các lỗi thường gặp

Lời hứa JavaScript được giải thích bằng mã chúng tôi đã chạy: trạng thái, then và chuỗi bắt, xử lý lỗi, Promise.all, allSettled, chủng tộc và bất kỳ…

Đọc bài viết →
Phát triển phần mềm

Hướng dẫn từ điển Python: Phương thức, ví dụ và mẫu chung

Hướng dẫn từ điển Python với mã chúng tôi đã chạy: tạo, đọc và cập nhật các ký tự, các phương thức chính, hợp nhất, hiểu, đếm và nhóm các mẫu cũng n…

Đọc bài viết →
Trí tuệ nhân tạo

RAG là gì? Giải thích về thế hệ tăng cường truy xuất bằng một ví dụ hoạt động

RAG là gì? Thế hệ tăng cường truy xuất được giải thích từng bước: lập chỉ mục, phân nhóm, nhúng, truy xuất, một ví dụ Python hoạt động nhỏ, đánh giá…

Đọc bài viết →
DevOps

Hướng dẫn về Terraform cho người mới bắt đầu: Cơ sở hạ tầng dưới dạng mã từ tệp đầu tiên đến mô-đun

Hướng dẫn về Terraform dành cho người mới bắt đầu: bắt đầu không cần tài khoản đám mây, tìm hiểu về init, lập kế hoạch và áp dụng, sau đó là các biế…

Đọc bài viết →
DevOps

Docker vs Kubernetes: Key Differences, How They Work Together and Which You Need

Docker vs Kubernetes giải thích: mỗi cái làm gì, cùng một ứng dụng chạy với cả hai, so sánh Docker Compose và Swarm, sự thay đổi của dockershim và c…

Đọc bài viết →
Tự động hóa kiểm thử

Hướng dẫn Pytest cho người mới bắt đầu: Đồ đạc, tham số hóa và ví dụ thực tế

Hướng dẫn về pytest dành cho người mới bắt đầu với các bài kiểm tra chúng tôi đã chạy trên pytest 9.2: xác nhận, đồ đạc, tham số, conftest, điểm đán…

Đọc bài viết →
Kiểm thử phần mềm

Vòng đời kiểm thử phần mềm (STLC): 6 giai đoạn, tiêu chí đầu vào và đầu ra, ví dụ

Vòng đời kiểm thử phần mềm giải thích: sáu giai đoạn STLC với tiêu chí đầu vào và đầu ra, sản phẩm phân phối, ví dụ về tính năng đăng nhập hoạt động…

Đọc bài viết →
Phát triển phần mềm

Git merge vs rebase: khác biệt, ví dụ và khi nào dùng cái nào

Git merge vs rebase được giải thích bằng đầu ra log thực tế, bảng so sánh, quy tắc vàng của rebase và quy trình làm việc nhóm an toàn.

Đọc bài viết →
Phát triển phần mềm

List comprehension trong Python: cú pháp, ví dụ và khi nào nên tránh

List comprehension trong Python: cú pháp, lọc dữ liệu, if-else, vòng lặp lồng nhau, thời gian đo thực tế và khi nào vòng lặp for thông thường tốt hơn.

Đọc bài viết →
Cơ sở dữ liệu & SQL

Giải thích SQL JOIN kèm ví dụ (Inner, Left, Right, Full)

Hiểu SQL JOIN từng bước với bảng và truy vấn mẫu: INNER, LEFT, RIGHT, FULL, CROSS và SELF, cùng lỗi thường gặp và mẹo hiệu năng.

Đọc bài viết →