Git: Undo change in working directory and staging area



  • Như đã giới thiệu cho bạn cách undo change (quay lui thay đổi) các commit ở local repo. Vậy trong bài viết lần này, chúng tôi xin giới thiệu cách undo change ở staging area và working directory

    1. Undo change in staging area

    Ở một số trường hợp, ghi chạy lệnh git add sẽ đẩy file từ working directory vào staging area để chuẩn bị commit, chúng ta nghĩ lại và nhận ra có một số file cần được sửa thêm trước khi commit, do đó cần phải gỡ nó ra khỏi staging area.

    Xem thêm: lập trình ứng dụng

    Ví dụ, vẫn với repo tôi dùng ở bài viết trước, tôi tạo 2 file style.css và script.js và add vào staging, sau đó kiểm tra trạng thái repo:

    Xem thêm: ngôn ngữ lập trình web

    Các bạn có thể thấy 2 file đều đã được thêm vào staging area

    Xem thêm: lập trình website

    Giờ tôi kiểm tra lại và thấy file script.js còn một số lỗi cần sửa, tôi muốn đưa nó ra khỏi vùng staging area để quay về working directory. Tôi chạy lệnh sau:

    sau đó kiểm tra trạng thái repo bằng git status:

    Các bạn có thể thấy file script.js đã được đưa ra khỏi staging area. Nếu chúng ta thực hiện lệnh git commit, sẽ chỉ có file style.css được commit vào local repo

    1. Undo change in working directory

    Nói một cách chính xác thì tôi sẽ undo change với những untracked files, tức là những file chưa được thêm vào staging area. Và với Git, undo untracked files đồng nghĩa với việc xoá sạch những file đó ra khỏi thư mục :v. Vì thế, hãy cân nhắc thật kĩ trước khi quyết định undo

    Hiện tại repo của tôi đang có 1 untracked file là script.js. Tuy nhiên thì để cho chắc ăn, tôi sẽ xem Git sẽ undo (xoá) những file nào trong thư mục đi bằng lệnh sau:

    Như vậy, khi undo (xoá) các untracked files ra khỏi thư mục, git sẽ xoá file script.js đi.

    Sau khi đã thực sự chắc chắn rằng cần phải xoá file script.js đi, tôi sẽ chạy lệnh sau:

    Như vậy, trong bài viết này tôi đã giới thiệu 2 lệnh để undo changes ở staging area và working directory:

    • git reset HEAD <đường-dẫn-file>: Đưa file từ staging area về working directory

    • git clean -f: Xoá các untracked files


Log in to reply