Có một lệnh git để hoàn nguyên tất cả các thay đổi không được cam kết trong một cây và chỉ mục làm việc và cũng để loại bỏ các tệp và thư mục mới được tạo?
Có một lệnh git để hoàn nguyên tất cả các thay đổi không được cam kết trong một cây và chỉ mục làm việc và cũng để loại bỏ các tệp và thư mục mới được tạo?
Câu trả lời:
Bạn có thể chạy hai lệnh này:
# Revert changes to modified files.
git reset --hard
# Remove all untracked files and directories.
# '-f' is force, '-d' is remove directories.
git clean -fd
git clean -i
cho một chế độ tương tác.
git merge --abort
.
Nếu bạn muốn hoàn nguyên các thay đổi chỉ trong thư mục làm việc hiện tại, hãy sử dụng
git checkout -- .
Và trước đó, bạn có thể liệt kê các tệp sẽ được hoàn nguyên mà không thực sự thực hiện bất kỳ hành động nào, chỉ để kiểm tra những gì sẽ xảy ra, với:
git checkout --
git reset --hard
cái gì?
Sử dụng "git checkout - ..." để loại bỏ các thay đổi trong thư mục làm việc
git checkout -- app/views/posts/index.html.erb
hoặc là
git checkout -- *
xóa tất cả các thay đổi được thực hiện đối với các tệp chưa được xử lý trong trạng thái git, vd
modified: app/controllers/posts.rb
modified: app/views/posts/index.html.erb
git checkout -- *
không hoạt động đối với tôi trừ khi tôi nằm trong thư mục chứa các tệp đã thay đổi. Để kiểm tra tất cả các tệp trên toàn bộ kho lưu trữ, bạn phải làmgit checkout -- :/
git checkout -- *
, ngôi sao được thay thế bởi Shell, với tất cả các tệp và thư mục trong thư mục hiện tại. Vì vậy, nó nên đi trong thư mục con. Nó làm việc cho tôi. Nhưng nhờ làm nổi bật cú pháp ": /" mà theo tôi, đường may sạch hơn.
Một cách không tầm thường là chạy hai lệnh này:
git stash
Điều này sẽ chuyển các thay đổi của bạn sang stash, đưa bạn trở lại trạng thái CHÍNHgit stash drop
Điều này sẽ xóa stash mới nhất được tạo trong lệnh cuối cùng.fatal: git-write-tree: error building trees Cannot save the current index state
git clean -fd
Không giúp đỡ, các tập tin mới vẫn còn. Những gì tôi đã làm là hoàn toàn xóa tất cả các cây làm việc và sau đó
git reset --hard
Xem " Làm cách nào để xóa thư mục làm việc cục bộ của tôi trong git? " Để được tư vấn thêm -x
tùy chọn để xóa:
git clean -fdx
-x
Cờ lưu ý sẽ xóa tất cả các tệp bị Git bỏ qua, vì vậy hãy cẩn thận (xem thảo luận trong câu trả lời tôi đề cập).
Tôi nghĩ bạn có thể sử dụng lệnh sau: git reset --hard
Xin lưu ý rằng vẫn có thể có các tệp dường như không biến mất - chúng có thể chưa được chỉnh sửa, nhưng git có thể đã đánh dấu chúng là đã được chỉnh sửa do thay đổi CRLF / LF. Xem nếu bạn đã thực hiện một số thay đổi .gitattributes
gần đây.
Trong trường hợp của tôi, tôi đã thêm cài đặt CRLF vào .gitattributes
tệp và tất cả các tệp vẫn nằm trong danh sách "tệp đã sửa đổi" vì lý do này. Thay đổi cài đặt .gitattribut khiến chúng biến mất.
Nếu bạn có một thay đổi không được cam kết (chỉ có trong bản sao làm việc của bạn) mà bạn muốn trở lại bản sao trong cam kết mới nhất của mình, hãy làm như sau:
git checkout filename
git rm filename
và nó không hoạt động. error: pathspec 'filename' did not match any file(s) known to git.
git rm
làgit checkout master -- filename
Git 2.23 đã giới thiệu git restore
lệnh để khôi phục các tệp cây làm việc.
https://git-scm.com/docs/git-restore
Để khôi phục tất cả các tệp trong thư mục hiện tại
khôi phục git.
Nếu bạn muốn khôi phục tất cả các tệp nguồn C để khớp với phiên bản trong chỉ mục, bạn có thể làm
khôi phục git '* .c'
Bạn chỉ có thể sử dụng lệnh git sau để có thể hoàn nguyên tất cả các thay đổi không được cam kết thực hiện trong kho lưu trữ của bạn:
git checkout .
Thí dụ:
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: application/controllers/Drivers.php
modified: application/views/drivers/add.php
modified: application/views/drivers/load_driver_info.php
modified: uploads/drivers/drivers.xlsx
no changes added to commit (use "git add" and/or "git commit -a")
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git checkout .
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
Một cách an toàn và lâu dài:
git branch todelete
git checkout todelete
git add .
git commit -m "I did a bad thing, sorry"
git checkout develop
git branch -D todelete