Mục Lục
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ệpexample.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ụcexample.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ặcgit 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ệnhgit 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 checkout
vàgit 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:
- 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ằnggit 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.
- 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.
- 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 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.
- Lệnh
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.
- Sử dụng
- 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.
- Sử dụng
- 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ế.
- Sử dụng
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.
Xin chào,
Bài viết này sử dụng AI ChatGPT để viết sau đó được lựa chọn, biên tập lại nội dung, chỉ một phần nhỏ các bài là tôi tự viết. Nội dung thể hiện ý chí cá nhân về các vấn đề, giải pháp. Tôi lưu tại website này để học, tra cứu và chia sẻ.
Tôi là Minh, sống tại Hà Nội, kỹ sư phần mềm với hơn 20 năm kinh nghiệm. Các ngôn ngữ yêu thích của tôi là Swift, Objective-C, Java, Kotlin, .NET, HTML, JavaScript, CSS, Bootstrap, jQuery, AngularJS, Angular…
Các bạn có thể tải app của tôi trên App Store hoặc Google Play:
QuestionBank-Ôn thi vào 10: phiên bản iOS, phiên bản Android
TypingTest by QuestionBank: phiên bản iOS, phiên bản Android
Xin cảm ơn,
Minh