Làm cách nào để xóa theo dõi phiên bản khỏi dự án được sao chép từ git?


685

Tôi muốn xóa tất cả theo dõi phiên bản khỏi thư mục của dự án.

Phương pháp chính xác để làm điều này là gì?

Tôi có thể thực hiện một lệnh shell như:

rm -rf .git

từ thư mục dự án của tôi hoặc có cách nào để thực hiện điều này như một lệnh Git?

Tôi đã sử dụng dự án này để tìm hiểu Git và nhận ra rằng tôi đã sớm mắc một số lỗi trong dự án với các tệp được di chuyển, đổi tên và xóa. Tôi muốn xóa tất cả theo dõi Git và bắt đầu làm mới với git init.


1
Hãy xem xét git-archive .
Martin v. Löwis

2
Tùy thuộc vào mức độ sai lầm của lỗi đó, bạn thực sự có thể muốn thực hiện một cuộc nổi loạn tương tác của toàn bộ sự việc và chỉ cần tập hợp lại hàng tấn cam kết sớm, nhưng lưu lại lịch sử tốt gần đây.
Cascabel

6
dành cho người dùng windows:rd /s /q .git
Soorena

Câu trả lời:


686

Tất cả dữ liệu mà Git sử dụng cho thông tin được lưu trữ .git/, vì vậy việc xóa nó sẽ hoạt động tốt. Tất nhiên, đảm bảo rằng bản sao làm việc của bạn ở trạng thái chính xác mà bạn muốn, bởi vì mọi thứ khác sẽ bị mất. .gitthư mục bị ẩn để đảm bảo bạn bật Show hidden files, folders and diskstùy chọn.

Từ đó, bạn có thể chạy git initđể tạo một kho lưu trữ mới.


1
Tôi chắc chắn rằng các thư mục con của tôi không có thư mục .git ẩn của riêng chúng, nhưng tôi vẫn nhận được biểu tượng màu xám khi đẩy các thư mục đó vào github ... tôi còn có thể thử gì nữa không?
Kokodoko

1
Ngoài ra còn có .gitconfig, vì vậy bạn cũng nên xóa nó.
Maximilian Mordig

xem xét 'code'git rm -r --cached your_folder / mục tiêu của tôi là biến một thư mục git được theo dõi thành một thư mục con của một thư mục git được theo dõi khác. Cha mẹ mới sẽ không nhận ra đứa trẻ mới cho đến khi tôi xóa bộ nhớ cache của thư mục con.
Ryan Huebert

419

rm -rf .gitnên đủ. Điều đó sẽ thổi bay tất cả thông tin liên quan đến Git.


1
Nếu bạn nhận được một số cannot unlink Permission deniedtrong windows, bạn có thể giết explorertiến trình trong trình quản lý tác vụ, chạy lại rm -rf .gitvà mở lại trình thám hiểm sau đó. nó làm việc cho tôi
Michael

10
Nếu bạn có Git Bashtrên windows, nó cũng sẽ hoạt động.
Viral

1
-rfnghĩa là gì
nilon

13
-rcó nghĩa là "đệ quy", vì vậy nó sẽ xóa toàn bộ nội dung của thư mục thay vì lỗi vì thư mục không trống và -fkhiến nó không hỏi liệu bạn có thực sự chắc chắn về việc xóa nội dung không.
Lily Ballard

1
@Lucky_girl Nó sẽ xóa tất cả trạng thái Git khỏi thanh toán của bạn. Không chi nhánh, không lịch sử, không điều khiển từ xa, không có gì cả. Tất cả những thứ đó được lưu trữ trong .gitthư mục. Không có nó, bạn thực sự không có kho lưu trữ git nữa.
Lily Ballard

96

Ngoài các bước bên dưới, bạn cũng có thể muốn xóa tệp .gitignore.

  • Xem xét xóa tệp .gitignore nếu bạn muốn xóa bất kỳ dấu vết nào của Git trong dự án của bạn.

  • ** Cân nhắc rời khỏi tệp .gitignore nếu bạn muốn kết hợp lại Git vào dự án.

Một số khung có thể tự động tạo tệp .gitignore để bạn có thể muốn rời khỏi nó.


Các hệ điều hành dựa trên Linux, Mac hoặc Unix

Mở một thiết bị đầu cuối và điều hướng đến thư mục của dự án của bạn, tức là - cd path_to_your_project.

Chạy lệnh này:

rm -rf .git*

Điều này sẽ xóa theo dõi và siêu dữ liệu Git khỏi dự án của bạn. Nếu bạn muốn giữ siêu dữ liệu (như .gitignore và .gitkeep), bạn chỉ có thể xóa theo dõi bằng cách chạy rm -rf .git.


các cửa sổ

Sử dụng dấu nhắc lệnh

Các rmdirhoặc rdlệnh sẽ không xóa / gỡ bỏ bất kỳ tập tin hoặc thư mục ẩn trong thư mục bạn chỉ định, vì vậy bạn nên sử dụng các dellệnh để chắc chắn rằng tất cả các file được xóa khỏi .gitthư mục.

  1. Mở dấu nhắc lệnh

    1. Nhấp vào Startsau đó Runhoặc nhấn Phím Windowsphím và rcùng một lúc.

    2. Nhập cmdvà nhấn enter

  2. Điều hướng đến thư mục dự án, tức là - cd path_to_your_project

  1. Chạy các lệnh này

    1. del /F /S /Q /A .git

    2. rmdir .git

Lệnh đầu tiên loại bỏ tất cả các file và thư mục trong các .gitthư mục. Thứ hai loại bỏ các .gitthư mục chính nó.

Không có dấu nhắc lệnh

  1. Mở trình thám hiểm tệp và điều hướng đến dự án của bạn

  2. Hiển thị các tập tin và thư mục ẩn - tham khảo bài viết này để được hướng dẫn trực quan

    1. Trong menu xem trên thanh công cụ, chọn Options

    2. Trong Advanced Settingsphần, tìm Hidden files and Foldersdưới Files and Foldersdanh sách và chọnShow hidden files and folders

  3. Đóng menu tùy chọn và bạn sẽ thấy tất cả các thư mục và tệp ẩn bao gồm cả .gitthư mục.

    Xóa .gitthư mục Xóa .gitignoretệp ** (xem ghi chú ở đầu câu trả lời này)


1
rmdir .gitkhông hoạt động vì có thư mục theo nó.
Dale

Dale, kiểm tra các dòng dưới rmdir .git. Nó giải thích rằng lệnh trên rmdir .gitđược sử dụng để xóa tất cả các tệp và thư mục trong thư mục .git, trước khi rmdirlệnh xóa chính thư mục đó.
Matt C

1
bạn cũng có thể làm rd /s /q .git, điều đó sẽ thổi bay thư mục và mọi thứ trong đó
Greg

Đối với các cửa sổ, rmdir /S .gitđã hoàn thành công việc. Cám ơn vì cái này.
Eder Luis Jorge

70

Đây không phải là một lựa chọn thông minh để di chuyển tất cả .git*bằng tay, đặc biệt khi các .gittệp này bị ẩn trong các thư mục con giống như điều kiện của tôi: khi tôi cài đặt Skeleton Zend 2 bởi nhà soạn nhạc + git, có khá nhiều .gittệp được tạo trong các thư mục và phụ thư mục.

Tôi đã thử rm -rf .gittrên trình bao GitHub của mình, nhưng trình bao không thể nhận ra tham số -rfcủa mục Xóa.

www.montanaflynn.me giới thiệu lệnh shell sau đây để xóa tất cả .gitcác tệp một lần, đệ quy! Nó thực sự hiệu quả!

find . | grep "\.git/" | xargs rm -rf

5
"Tôi đã thử 'rm -rf .git' trên trình bao Github của mình, nhưng trình bao không thể nhận ra tham số '-rf' của Remove-Item." - đó là vì rmbí danh PowerShell cho remove-item. Và -rflà * nix shell rmargument. Đối với PowerShell, sử dụng rm -recursive -forcethay thế.
KFL

14
NGUY HIỂM! grep .gitsẽ khớp các tệp như legit.gifhoặc anithing với "git" ở giữa tên tệp! Vui lòng xóa hoặc chỉnh sửa câu trả lời !!!
pamatt

4
Cập nhật để chỉ phù hợp trên git dirs: find. | grep "\ .git /"
Andrew

3
Vẫn không đủ an toàn: điều này sẽ bắt các tệp và thư mục kết thúc bằng .git. Nó nên là grep "^\.git/"; thậm chí tốt hơn (và nhanh hơn) sẽ được lọc theo tên trong findlời gọi : find . -name .git.
pvgoran

Thực hiện các lệnh sau: find -name .git | xargs rm -rffind -name .gitignore | xargs rm -rf.
Nhà phát triển Marius ilėnas

14

Tôi đang làm việc với môi trường Linux. Tôi đã xóa tất cả các tệp và thư mục Git theo cách đệ quy:

rm -rf .git

rm -rf .gitkeep

9

Trong môi trường Windows, bạn có thể xóa theo dõi Git khỏi thư mục của dự án bằng cách nhập vào bên dưới.

rd .git /S/Q

7

Từ thư mục gốc chạy

find . | grep .git

Xem lại các trận đấu và xác nhận nó chỉ chứa những tệp bạn muốn xóa và điều chỉnh cho phù hợp. Sau khi hài lòng, chạy

find . | grep .git | xargs rm -rf


5

Cách dễ nhất để giải quyết vấn đề này là sử dụng một dòng lệnh. rm -R .git/Nhập lệnh này sau đó Enter ... HOẶC rm -rf .git/Nhấn Enter ...


2

Dấu nhắc lệnh Windows (cmd):

Bạn có thể xóa đệ quy '.git' trong thư mục dự án nguồn bằng một lệnh đơn.

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.git*') DO RMDIR /S /Q "%G"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.