Bảng tra nhanh lệnh Git

Tiếp theo

Git có khoảng 150 lệnh con, và vài lệnh trong số đó giống nhau đến mức nguy hiểm, reset với restore, checkout với switch, rm với restore --staged. Bảng tra này nhóm những lệnh bạn thực sự gõ theo tình huống: quy trình hằng ngày, làm việc với nhánh, hoàn tác lỗi và stash. Chọn nhóm rồi sao chép cả khối.

Cách dùng bảng tra

  1. 1

    Chọn một chủ đề

    Hằng ngày, nhánh, hoàn tác hay stash, mỗi nhóm ứng với một lối tư duy khác nhau.

  2. 2

    Lướt qua khối lệnh

    Mỗi dòng là một lệnh hoàn chỉnh, chạy được ngay; không có ký hiệu chỗ trống trong ngoặc nhọn trừ khi được đánh dấu rõ ràng.

  3. 3

    Sao chép lệnh bạn cần

    Dán vào terminal, chỉnh tên nhánh hoặc SHA của commit, rồi chạy.

Vì sao các lệnh vẫn khiến người dùng lâu năm bối rối

Lớp “porcelain” của Git lớn dần lên theo kiểu chắp vá. checkout bị gán chồng cả hai việc “chuyển nhánh” và “khôi phục tệp”; còn reset nằm đâu đó giữa “bỏ phần việc đang làm” và “dời con trỏ nhánh”. Từ Git 2.23 trở đi đã có những động từ rõ nghĩa hơn:

Mới (rõ ràng hơn)
git checkout branch git switch branch
git checkout -b new git switch -c new
git checkout -- file git restore file
git checkout --staged file git restore --staged file

Nấc thang hoàn tác an toàn

  1. Khôi phục một tệp: git restore path/to/file (chưa staged) hoặc git restore --staged path/to/file (đã staged nhưng chưa commit).
  2. Hoàn tác commit cuối cùng nhưng giữ lại các thay đổi: git reset --soft HEAD~1.
  3. Hoàn tác commit cuối cùng và bỏ các thay đổi: git reset --hard HEAD~1 (có tính phá hủy; hãy kiểm tra chắc chắn không còn phần việc nào chưa commit).
  4. Hoàn tác một commit đã chia sẻ: git revert <sha>, tạo một commit mới để triệt tiêu commit cũ; an toàn với lịch sử đã được push.

Phép lịch sự khi dùng stash

  • Luôn stash kèm một thông điệp: git stash push -m "wip: đang nối API".
  • Xem danh sách stash bằng git stash list trước khi pop, các stash không tên chồng chất rất nhanh.
  • git stash pop áp dụng rồi xóa; git stash apply áp dụng rồi vẫn giữ lại.

Khôi phục

Mất một commit sau khi hard reset? Nhiều khả năng nó vẫn còn trong reflog. Chạy git reflog để xem mọi lần HEAD di chuyển trong 90 ngày qua, rồi git reset --hard <sha> để quay về trạng thái tốt.

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

Từ phiên bản Git 2.23 (tháng 8 năm 2019), dự án đã chia lệnh checkout bị quá tải thành hai lệnh riêng biệt: switch dùng để thay đổi nhánh và restore dùng để sửa đổi tệp tin. Cả hai lệnh vẫn tồn tại nhằm đảm bảo tính tương thích ngược, nhưng dễ đọc hơn khi xem lại lịch sử sử dụng shell.

reset di chuyển con trỏ nhánh (và tùy chọn là cây làm việc). revert tạo một lệnh commit mới nhằm hủy bỏ lệnh commit trước đó – an toàn khi thực hiện trên nhánh chia sẻ. checkout/restore thay đổi các tệp trong cây làm việc mà không ghi lại lịch sử thay đổi.

Hãy sử dụng git revert <sha> để thêm lệnh commit bù trừ và thực hiện push. Tránh sử dụng tổ hợp git reset --hard + git push --force trên các nhánh chia sẻ, trừ khi đội ngũ đã đồng ý rõ ràng.

Các lệnh là văn bản tĩnh được hiển thị trên trang. Chủ đề bạn chọn chỉ được gửi đến máy chủ để hiển thị các lệnh tương ứng và được mang theo trong liên kết trang khi bạn di chuyển giữa hai bước. Chủ đề này không được lưu trữ hay ghi nhật ký.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác