MN
KHÁM PHÁ VÀ TRẢI NGHIỆM CÁ NHÂN
MN

1. Chức năng của lệnh Git Restore

Lệnh git restore trong Git được sử dụng để khôi phục các tệp tin trong working directory về trạng thái trước đó. Đây là một lệnh khá linh hoạt với nhiều tùy chọn khác nhau, giúp bạn hoàn tác các thay đổi hoặc khôi phục tệp từ một commit cụ thể. Dưới đây là một số chức năng cơ bản của lệnh này:

1.1. Khôi phục các thay đổi chưa được staged:

  • git restore <file>: Lệnh này sẽ hoàn tác các thay đổi chưa được staged (tức là chưa được thêm vào chỉ mục) của một tệp về trạng thái của commit gần nhất.
  • Ví dụ: git restore example.txt sẽ khôi phục tệp example.txt về trạng thái của commit gần nhất, bỏ qua bất kỳ thay đổi nào bạn đã thực hiện nhưng chưa staged.

1.2. Khôi phục các tệp tin từ chỉ mục (index):

  • git restore --staged <file>: Lệnh này sẽ bỏ staging một tệp đã được staged trước đó (tức là chuyển tệp từ chỉ mục về lại working directory).
  • Ví dụ: git restore --staged example.txt sẽ loại bỏ example.txt khỏi chỉ mục, nhưng vẫn giữ các thay đổi của tệp trong working directory.

1.3. Khôi phục tệp tin từ một commit cụ thể:

  • git restore --source <commit> <file>: Lệnh này sẽ khôi phục tệp tin từ một commit cụ thể về working directory.
  • Ví dụ: git restore --source HEAD~1 example.txt sẽ khôi phục example.txt về trạng thái của commit trước commit hiện tại.

1.4. Khôi phục toàn bộ thư mục:

  • Bạn có thể sử dụng git restore . để khôi phục toàn bộ các thay đổi trong thư mục hiện tại, hoặc git restore --staged . để bỏ staging toàn bộ các tệp đã được staged.

1.5. Một số lưu ý:

  • git restore là một lệnh tương đối mới, được giới thiệu từ Git phiên bản 2.23. Trước đó, các chức năng tương tự thường được thực hiện bằng cách sử dụng lệnh git checkout.
  • Lệnh này chủ yếu được sử dụng để quản lý các thay đổi trong working directory và staging area mà không ảnh hưởng đến lịch sử commit.

2. Lịch sử Git Restore

Lệnh git restore là một phần của Git được giới thiệu để cải thiện khả năng quản lý và khôi phục tệp tin trong dự án Git. Dưới đây là một cái nhìn tổng quan về lịch sử và sự phát triển của lệnh này:

2.1. Giới thiệu

  • Phiên bản Git: Lệnh git restore được giới thiệu lần đầu tiên trong Git phiên bản 2.23.0, phát hành vào tháng 8 năm 2019.
  • Mục tiêu: Lệnh này được tạo ra để thay thế và đơn giản hóa các lệnh trước đây như git checkoutgit reset, đặc biệt là để làm rõ các chức năng khôi phục và bỏ staging.

2.2. Sự cần thiết

Trước khi git restore ra đời, các chức năng mà lệnh này cung cấp thường được thực hiện bằng cách sử dụng:

  • git checkout: Được sử dụng để khôi phục các tệp tin về trạng thái trước đó hoặc để chuyển đổi giữa các nhánh.
  • git reset: Được sử dụng để thay đổi chỉ mục hoặc khôi phục các commit.

Tuy nhiên, việc sử dụng các lệnh này có thể gây nhầm lẫn vì chúng đảm nhiệm nhiều vai trò khác nhau. git restore được tạo ra để làm rõ và đơn giản hóa các tác vụ khôi phục và quản lý tệp tin.

2.3. Các chức năng chính

  • Khôi phục tệp tin: git restore giúp khôi phục các tệp tin từ commit hoặc từ chỉ mục về trạng thái làm việc, làm cho việc hoàn tác các thay đổi hoặc bỏ staging trở nên trực quan hơn.
  • Bỏ staging: Lệnh cũng cho phép bạn bỏ staging các tệp tin đã được thêm vào chỉ mục mà không thay đổi trạng thái của các tệp tin trong working directory.

2.4. Cải tiến và Tính năng

Kể từ khi giới thiệu, git restore đã nhận được một số cập nhật và cải tiến để hỗ trợ nhiều tính năng hơn, bao gồm:

  • Khôi phục từ commit cụ thể: Cung cấp khả năng khôi phục các tệp tin từ một commit cụ thể, không chỉ từ commit gần nhất.
  • Tích hợp với các lệnh khác: Lệnh được tích hợp để làm việc phối hợp với các lệnh khác trong Git, giúp cải thiện quy trình làm việc.

2.5. Tài liệu và Hướng dẫn

  • Tài liệu chính thức: Tài liệu về git restore có sẵn trên trang web chính thức của Git và trong phần hướng dẫn của Git, cung cấp chi tiết về cách sử dụng và các tùy chọn của lệnh.
  • Hướng dẫn cộng đồng: Các nguồn tài liệu và bài viết từ cộng đồng Git cũng thường xuyên cập nhật thông tin và hướng dẫn về git restore.

git restore là một phần quan trọng trong bộ công cụ Git, giúp đơn giản hóa và làm rõ các tác vụ khôi phục và quản lý tệp tin, đồng thời cung cấp một cách tiếp cận trực quan hơn so với các lệnh cũ.

3. Tại sao tôi dùng Git Restore nhưng vẫn còn những file Untracked files

Khi bạn sử dụng lệnh git restore ., lệnh này chỉ khôi phục các tệp tin đã được theo dõi (tracked files) về trạng thái của commit gần nhất hoặc trạng thái trong chỉ mục (staging area). Điều này có nghĩa là lệnh sẽ không ảnh hưởng đến các tệp tin không được theo dõi (untracked files).

3.1. Giải thích lý do tại sao các tệp tin Untracked vẫn tồn tại:

  1. Chỉ ảnh hưởng đến tệp tin đã theo dõi:
    • git restore . chỉ hoạt động trên các tệp tin đã được Git theo dõi, tức là các tệp tin đã được thêm vào phiên bản quản lý của Git (bằng git add hoặc đã có trong một commit trước đó). Nó không làm gì với các tệp tin chưa được theo dõi.
  2. Untracked files là gì?:
    • Untracked files là các tệp tin tồn tại trong thư mục làm việc của bạn nhưng chưa từng được thêm vào Git (tức là chưa bao giờ được theo dõi bởi Git). Chúng có thể là các tệp tin mới bạn vừa tạo hoặc các tệp mà bạn đã tạo nhưng chưa bao giờ sử dụng git add để thêm vào chỉ mục.
  3. git restore không xóa hoặc khôi phục untracked files:
    • Lệnh git restore không có chức năng xóa hay khôi phục các tệp tin không được theo dõi. Để làm sạch các tệp tin untracked, bạn cần sử dụng lệnh khác.

3.2. Cách xóa các tệp Untracked:

Nếu bạn muốn loại bỏ các tệp tin không được theo dõi, bạn có thể sử dụng lệnh git clean:

  • Xóa tất cả các tệp không theo dõi:
    • Sử dụng git clean -f để xóa tất cả các tệp không theo dõi trong thư mục hiện tại.
  • Xóa cả thư mục không theo dõi:
    • Sử dụng git clean -fd để xóa cả các tệp tin và thư mục không theo dõi.
  • Xem trước những gì sẽ bị xóa:
    • Sử dụng git clean -n để xem danh sách các tệp tin và thư mục sẽ bị xóa mà không thực hiện xóa thực tế.

Ví dụ:

git clean -fd

ệnh này sẽ xóa tất cả các tệp tin và thư mục không theo dõi trong thư mục làm việc của bạn.

3.3. Tóm tắt

  • git restore . chỉ khôi phục các tệp tin đã được theo dõi (tracked files) và không ảnh hưởng đến các tệp tin không được theo dõi (untracked files).
  • Để xóa các tệp tin không được theo dõi, bạn cần sử dụng lệnh git clean.

Nếu bạn muốn khôi phục hoặc loại bỏ cả các tệp không được theo dõi, git clean là công cụ phù hợp.