ฉันจะลบการติดตามเวอร์ชันออกจากโครงการที่โคลนจาก git ได้อย่างไร


686

ฉันต้องการลบการติดตามเวอร์ชันทั้งหมดออกจากไดเรกทอรีของโครงการ

วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร?

ฉันสามารถทำคำสั่งเชลล์เช่น:

rm -rf .git

จากไดเรกทอรีโครงการของฉันหรือมีวิธีทำเช่นนี้เป็นคำสั่ง Git หรือไม่

ฉันใช้โครงการนี้เพื่อเรียนรู้ Git และรู้ว่าฉันทำผิดพลาดไปก่อนในโครงการด้วยไฟล์ที่ถูกย้ายเปลี่ยนชื่อและลบ ฉันต้องการที่จะลบทั้งหมดติดตาม Git git initและเริ่มต้นใหม่กับ


1
พิจารณาGit-เก็บ
Martin v. Löwis

2
ขึ้นอยู่กับความผิดพลาดที่เลวร้ายคุณอาจต้องการลดระดับการโต้ตอบของสิ่งต่าง ๆ ทั้งหมดและเพียงแค่รวมกันเป็นจำนวนมากตั้งแต่ต้น แต่บันทึกประวัติศาสตร์ที่ดีขึ้นเมื่อไม่นานมานี้
Cascabel

6
สำหรับผู้ใช้ windows:rd /s /q .git
Soorena

คำตอบ:


687

ข้อมูลทั้งหมดที่ Git ใช้สำหรับข้อมูลนั้นถูกเก็บไว้ใน.git/ดังนั้นการลบออกควรจะใช้ได้ดี แน่นอนตรวจสอบให้แน่ใจว่าสำเนาการทำงานของคุณอยู่ในสถานะที่แน่นอนที่คุณต้องการเพราะทุกอย่างจะหายไป .gitโฟลเดอร์ถูกซ่อนเพื่อให้แน่ใจว่าคุณเปิดShow hidden files, folders and disksตัวเลือก

จากตรงนั้นคุณสามารถเรียกใช้git initเพื่อสร้างพื้นที่เก็บข้อมูลใหม่


1
ฉันแน่ใจว่าโฟลเดอร์ย่อยของฉันไม่มีไดเรกทอรี. git ที่ซ่อนอยู่ แต่ฉันยังคงได้รับไอคอน greyed out เมื่อผลักโฟลเดอร์เหล่านั้นไปยัง GitHub ... มีอะไรอีกบ้างที่ฉันจะลอง?
Kokodoko

1
นอกจากนี้ยังมี. gitconfig ดังนั้นคุณควรลบออก
Maximilian Mordig

พิจารณา 'code'git rm -r - แคช your_folder / เป้าหมายของฉันคือเปลี่ยนโฟลเดอร์คอมไพล์ที่ถูกติดตามเป็นโฟลเดอร์ย่อยของโฟลเดอร์คอมไพล์อื่นที่ถูกติดตาม ผู้ปกครองใหม่จะไม่รู้จักเด็กคนใหม่จนกว่าฉันจะลบแคชของโฟลเดอร์ลูก
Ryan Huebert

420

rm -rf .gitควรจะพอเพียง นั่นจะทำให้ข้อมูลที่เกี่ยวข้องกับ Git หมดไป


1
หากคุณได้รับบางอย่างcannot unlink Permission deniedใน windows คุณสามารถฆ่าexplorerกระบวนการในตัวจัดการงานรันใหม่rm -rf .gitและเปิด explorer อีกครั้งหลังจากนั้น มันใช้งานได้สำหรับฉัน!
Michael

10
หากคุณมีGit Bashหน้าต่างมันจะทำงานได้เช่นกัน
Viral

1
สิ่งที่ไม่-rfหมายถึง?
nilon

13
-rหมายถึง "เรียกซ้ำ" ดังนั้นมันจะลบเนื้อหาทั้งหมดของโฟลเดอร์แทนการทำผิดเพราะโฟลเดอร์ไม่ว่างเปล่าและ-fไม่ถามว่าคุณแน่ใจเกี่ยวกับการลบสิ่งต่าง ๆ หรือไม่
Lily Ballard

1
@ Lucky_girl มันจะลบสถานะ Git ทั้งหมดออกจากการชำระเงินของคุณ ไม่มีสาขาไม่มีประวัติไม่มีรีโมตไม่มีอะไรเลย ทุกสิ่งนั้นถูกเก็บไว้ใน.gitไดเรกทอรี หากไม่มีคุณก็จะไม่มีที่เก็บข้อมูลคอมไพล์อีกต่อไป
Lily Ballard

96

นอกเหนือจากขั้นตอนด้านล่างคุณอาจต้องการลบไฟล์. gitignore

  • พิจารณาลบไฟล์. gitignore หากคุณต้องการลบร่องรอยของ Git ในโครงการของคุณ

  • ** ลองปล่อยไฟล์. gitignore ไว้หากคุณต้องการให้ Git รวมเข้าไปในโครงการอีกครั้ง

เฟรมเวิร์กบางตัวอาจสร้างไฟล์. gitignore โดยอัตโนมัติดังนั้นคุณอาจต้องการออกจากมัน


ระบบปฏิบัติการที่ใช้ Linux, Mac หรือ Unix

เปิด terminal และนำทางไปยังไดเรกทอรีของโครงการของคุณคือ cd path_to_your_project-

เรียกใช้คำสั่งนี้:

rm -rf .git*

การดำเนินการนี้จะลบการติดตาม Git และข้อมูลเมตาออกจากโครงการของคุณ หากคุณต้องการที่จะเก็บข้อมูลเมตา (เช่น .gitignore และ .gitkeep) rm -rf .gitคุณสามารถลบเฉพาะการติดตามโดยการเรียกใช้


ของ windows

การใช้พรอมต์คำสั่ง

rmdirหรือrdคำสั่งจะไม่ลบ / ลบไฟล์ที่ซ่อนหรือโฟลเดอร์ในสารบบที่คุณระบุดังนั้นคุณควรใช้delคำสั่งเพื่อให้แน่ใจว่าไฟล์ทั้งหมดจะถูกลบออกจาก.gitโฟลเดอร์

  1. เปิดพรอมต์คำสั่ง

    1. คลิกStartแล้วRunหรือตีปุ่ม Windowsที่สำคัญและrในเวลาเดียวกัน

    2. พิมพ์cmdและกด Enter

  2. นำทางไปยังไดเรกทอรีโครงการเช่น - cd path_to_your_project

  1. เรียกใช้คำสั่งเหล่านี้

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

    2. rmdir .git

คำสั่งแรกลบไฟล์และโฟลเดอร์ภายใน.gitโฟลเดอร์ ประการที่สองจะลบ.gitโฟลเดอร์เอง

ไม่มีพรอมต์คำสั่ง

  1. เปิดไฟล์ explorer และนำทางไปยังโครงการของคุณ

  2. แสดงไฟล์และโฟลเดอร์ที่ซ่อน - อ้างถึงบทความนี้สำหรับคำแนะนำแบบเห็นภาพ

    1. ในเมนูมุมมองบนแถบเครื่องมือให้เลือก Options

    2. ในAdvanced Settingsส่วนค้นหาHidden files and Foldersภายใต้Files and FoldersรายการและเลือกShow hidden files and folders

  3. ปิดเมนูตัวเลือกและคุณจะเห็นโฟลเดอร์และไฟล์ที่ซ่อนอยู่ทั้งหมดรวมถึง.gitโฟลเดอร์

    ลบ.gitโฟลเดอร์ลบ.gitignoreไฟล์ ** (ดูหมายเหตุที่ด้านบนของคำตอบนี้)


1
rmdir .gitไม่ทำงานเพราะมีโฟลเดอร์อยู่ข้างใต้
Dale

เดล, rmdir .gitตรวจสอบภายใต้บรรทัด มันอธิบายว่าคำสั่งข้างต้นrmdir .gitจะใช้ในการลบไฟล์และโฟลเดอร์ทั้งหมดภายในโฟลเดอร์. git ก่อนที่rmdirคำสั่งจะลบโฟลเดอร์เอง
Matt C

1
คุณอาจรวมทั้งทำrd /s /q .gitซึ่งจะพัดไปโฟลเดอร์และทุกอย่างในนั้น
เกร็ก

สำหรับ windows rmdir /S .gitทำงานให้เสร็จ ขอบคุณสำหรับสิ่งนี้.
Eder Luis Jorge

70

มันไม่ใช่ตัวเลือกที่ฉลาดที่จะย้ายทุกอย่าง.git*ด้วยมือโดยเฉพาะอย่างยิ่งเมื่อ.gitไฟล์เหล่านี้ซ่อนอยู่ในโฟลเดอร์ย่อยเช่นเดียวกับสภาพของฉัน: เมื่อฉันติดตั้ง Skeleton Zend 2 โดยผู้แต่ง + git มี.gitไฟล์จำนวนมากที่สร้างขึ้นในโฟลเดอร์และย่อย โฟลเดอร์

ฉันลองใช้rm -rf .gitGitHub shell แล้ว แต่เชลล์ไม่สามารถรับรู้พารามิเตอร์-rfของ Remove-Item

www.montanaflynn.me แนะนำคำสั่งเชลล์ต่อไปนี้เพื่อลบ.gitไฟล์ทั้งหมดในครั้งเดียวซ้ำ! มันใช้งานได้จริง!

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

5
"ฉันลอง 'rm -rf .git' บนเชลล์ Github ของฉัน แต่เชลล์ไม่สามารถรับรู้พารามิเตอร์ '-rf' ของ Remove-Item ได้" - นั่นเป็นเพราะrmเป็นนามแฝง PowerShell remove-itemสำหรับ และ-rfคือ * rmอาร์กิวเมนต์เชลล์ สำหรับ PowerShell ให้ใช้rm -recursive -forceแทน
KFL

14
อันตราย! grep .gitจะจับคู่ไฟล์เช่นlegit.gifหรือ anithing กับ "git" ที่อยู่ตรงกลางชื่อไฟล์! โปรดลบหรือแก้ไขคำตอบ !!!
pamatt

4
อัปเดตเพื่อจับคู่เฉพาะใน git dirs: find | grep "\ .git /"
แอนดรู

3
.gitยังคงไม่เพียงพอปลอดภัยนี้จะจับไฟล์และไดเรกทอรีที่ลงท้ายด้วย มันควรจะเป็นgrep "^\.git/"; ได้ดียิ่งขึ้น (และเร็วขึ้น) จะเป็นตัวกรองตามชื่อในการภาวนา:find find . -name .git
pvgoran

อย่ารันคำสั่งต่อไปนี้: และfind -name .git | xargs rm -rf find -name .gitignore | xargs rm -rf
พัฒนา Marius Žilėnas

14

ฉันทำงานกับสภาพแวดล้อม Linux ฉันลบไฟล์และโฟลเดอร์ Git ทั้งหมดด้วยวิธีแบบเรียกซ้ำ:

rm -rf .git

rm -rf .gitkeep

9

ในระบบ Windows คุณสามารถลบการติดตาม Git ออกจากไดเรกทอรีของโครงการโดยพิมพ์ด้านล่าง

rd .git /S/Q

7

เรียกใช้จากโฟลเดอร์รูท

find . | grep .git

ตรวจสอบการแข่งขันและยืนยันว่ามีเฉพาะไฟล์ที่คุณต้องการลบและปรับให้เหมาะสม เมื่อพอใจแล้วให้วิ่ง

find . | grep .git | xargs rm -rf


5

วิธีที่ง่ายที่สุดในการแก้ปัญหานี้คือการใช้บรรทัดคำสั่ง พิมพ์คำสั่งนี้rm -R .git/แล้วrm -rf .git/กด... หรือกด Enter ...


2

ผู้ใช้พร้อมรับคำสั่งของ Windows (cmd):

คุณสามารถลบ '.git' ซ้ำภายในโฟลเดอร์โครงการแหล่งโดยใช้คำสั่งบรรทัดเดียว

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.git*') DO RMDIR /S /Q "%G"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.