ฉันจะลบไฟล์ออกจากที่เก็บ Git ได้อย่างไร


1922

ฉันได้เพิ่มไฟล์ชื่อ"file1.txt"ในที่เก็บ Git หลังจากนั้นฉันยืนยันแล้วเพิ่มไดเรกทอรีที่เรียกว่าdir1และdir2และส่งไปยังที่เก็บ Git

ตอนนี้พื้นที่เก็บข้อมูลในปัจจุบันมี"file1.txt", และdir1 dir2ฉันจะลบ"file1.txt"โดยไม่ส่งผลกระทบต่อผู้อื่นเช่นdir1และได้dir2อย่างไร


85
git rmเป็นคำตอบที่ถูกต้อง แต่จำไว้ว่าไฟล์จะยังอยู่ในประวัติ หากคุณต้องการลบไฟล์เพราะมีข้อมูลที่ละเอียดอ่อนคุณจะต้องทำอะไรที่รุนแรงกว่านี้ (การเปลี่ยนประวัติโดยเฉพาะอย่างยิ่งเนื้อหาที่คุณได้ทำไปแล้วนั้นเป็นเรื่องที่ต้องทำอย่างยิ่งและควรหลีกเลี่ยงหากเป็นไปได้)
Keith Thompson

8
หมายเหตุ: บน GitHub ตอนนี้คุณสามารถลบไฟล์ออกจากเว็บอินเตอร์เฟสได้โดยตรง (โดยไม่ต้องลอกแบบ repo) ดูคำตอบของฉันด้านล่าง
VonC

4
@ KeithThompson ขั้นตอนใดที่อาจเป็นไปได้ถ้าฉันต้องการทำอย่างนั้น?
lessthanl0l


คำตอบ:


3219

git rmใช้

หากคุณต้องการลบไฟล์ออกจากที่เก็บ Git และระบบไฟล์ให้ใช้:

git rm file1.txt
git commit -m "remove file1.txt"

แต่ถ้าคุณต้องการลบไฟล์ออกจากที่เก็บ Git เท่านั้นและไม่ลบออกจากระบบไฟล์ให้ใช้:

git rm --cached file1.txt
git commit -m "remove file1.txt"

และเพื่อผลักดันการเปลี่ยนแปลงไปสู่ ​​repo ระยะไกล

git push origin branch_name  

92
ยังมีประโยชน์: ไดเรกทอรี git rm -r // เพื่อลบไดเรกทอรีและเนื้อหา
Reg

10
ที่จะไม่กำจัดไฟล์นั้นในกระทำอื่น ๆ ว่า
VaTo

6
@SaulOrtega: ถูกต้อง ในการลบไฟล์จากกระทำก่อนหน้า (เปลี่ยนประวัติศาสตร์ที่ผ่านมา) ดูหน้าความช่วยเหลือ GitHub บนข้อมูลที่สำคัญลบ
Greg Hewgill

15
รับทราบนี้จะลบไฟล์ภายในเช่นกัน หากคุณต้องการลบออกจาก repo do เท่านั้น: git rm --cached file1.txt
Weston Ganger

5
มันเป็นมูลค่า noting ว่าถ้าไฟล์ที่มีข้อมูลที่สำคัญ (เช่นข้อมูลประจำตัว) คุณควรเปลี่ยนข้อมูลประจำตัวของผู้ทันที ในการอ้างอิงGitHub "เมื่อคุณส่งคำมั่นสัญญาไปยัง GitHub แล้วคุณควรพิจารณาว่าข้อมูลใดที่มีอยู่ในนั้นถูกบุกรุกหากคุณยืนยันรหัสผ่านให้เปลี่ยน!
c1moore

608

git rm file.txtลบไฟล์ออกจาก repo แต่ยังลบออกจากระบบไฟล์โลคอล

ในการลบไฟล์ออกจาก repo และไม่ลบออกจากระบบไฟล์โลคอลให้ใช้:
git rm --cached file.txt

สถานการณ์ที่แน่นอนด้านล่างคือที่ฉันใช้ git เพื่อรักษาการควบคุมเวอร์ชันสำหรับเว็บไซต์ธุรกิจของฉัน แต่ไดเรกทอรี "mickey" เป็นโฟลเดอร์ tmp เพื่อแชร์เนื้อหาส่วนตัวกับนักพัฒนา CAD เมื่อเขาต้องการไฟล์ขนาดใหญ่ฉันสร้างไดเรคทอรี่ส่วนตัวที่ไม่ได้เชื่อมโยงและ ftpd ไฟล์ที่นั่นเพื่อให้เขาดึงข้อมูลผ่านเบราว์เซอร์ ลืมไปเลยว่าฉันทำสิ่งนี้ในภายหลังฉันได้ทำ a git add -Aจากไดเรกทอรีฐานของเว็บไซต์ ต่อจากนั้นgit statusแสดงไฟล์ใหม่ที่ต้องการยืนยัน ตอนนี้ฉันต้องการลบออกจากการติดตามและการควบคุมเวอร์ชันของ git ...

ผลลัพธ์ตัวอย่างด้านล่างมาจากสิ่งที่เพิ่งเกิดขึ้นกับฉันที่ฉันลบ.003ไฟล์โดยไม่ตั้งใจ โชคดีที่ฉันไม่สนใจสิ่งที่เกิดขึ้นกับสำเนาใน.003เครื่อง แต่ไฟล์อื่น ๆ ที่มีการเปลี่ยนแปลงในปัจจุบันบางตัวเป็นอัปเดตที่ฉันเพิ่งทำกับเว็บไซต์ "ระบบแฟ้มท้องถิ่น" = เว็บไซต์สด(ไม่ใช่การปฏิบัติที่ดี แต่คือความเป็นจริง)

[~/www]$ git rm shop/mickey/mtt_flange_SCN.7z.003
error: 'shop/mickey/mtt_flange_SCN.7z.003' has local modifications
(use --cached to keep the file, or -f to force removal)
[~/www]$ git rm -f shop/mickey/mtt_flange_SCN.7z.003
rm 'shop/mickey/mtt_flange_SCN.7z.003'
[~/www]$ 
[~/www]$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   deleted:    shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   shop/mickey/mtt_flange_SCN.7z.001
#   modified:   shop/mickey/mtt_flange_SCN.7z.002
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001  shop/mickey/mtt_flange_SCN.7z.002
[~/www]$ 
[~/www]$ 
[~/www]$ git rm --cached shop/mickey/mtt_flange_SCN.7z.002
rm 'shop/mickey/mtt_flange_SCN.7z.002'
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001  shop/mickey/mtt_flange_SCN.7z.002
[~/www]$ 
[~/www]$ 
[~/www]$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   deleted:    shop/mickey/mtt_flange_SCN.7z.002
#   deleted:    shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
#   modified:   shop/mickey/mtt_flange_SCN.7z.001
[~/www]$

อัปเดต:คำตอบนี้กำลังได้รับปริมาณการใช้งานดังนั้นฉันคิดว่าฉันจะพูดถึงคำตอบ Git อื่น ๆของฉันแบ่งปันแหล่งข้อมูลดีๆสองสามรายการ: หน้านี้มีกราฟิกที่ช่วยให้ Git เข้าใจฉันได้ยาก หนังสือ"Pro Git" ออนไลน์และช่วยฉันได้มาก


6
จากนั้นคุณจะต้องกระทำนี้กับสิ่งที่ต้องการแล้วถ้าคุณมีพื้นที่เก็บข้อมูลระยะไกลผลักดันกระทำกับสิ่งที่ต้องการgit commit -m "Just removing file1.txt" git push origin master
บ้านจีโอเอน

77

ขั้นแรกถ้าคุณใช้git rmโดยเฉพาะไฟล์หลาย ๆ ไฟล์พิจารณาว่าเชลล์จะได้รับการแก้ไขโดยเชลล์ไม่ใช่gitคำสั่ง

git rm -- *.anExtension
git commit -m "remove multiple files"

แต่ถ้าไฟล์ของคุณอยู่ใน GitHub คุณสามารถ (ตั้งแต่เดือนกรกฎาคม 2013)ได้โดยตรงลบออกจากเว็บ GUI!

เพียงแค่ดูไฟล์ใด ๆ ในที่เก็บของคุณคลิกที่ไอคอนถังขยะที่ด้านบนและยืนยันการลบเช่นเดียวกับการแก้ไขบนเว็บอื่น ๆ

จากนั้น " git pull" ใน repo ท้องถิ่นของคุณและจะลบไฟล์ในเครื่องด้วย
ซึ่งทำให้คำตอบนี้เป็นวิธี (วงเวียน) เพื่อลบไฟล์จาก git repo?
(ไม่ต้องพูดถึงว่าไฟล์ใน GitHub อยู่ใน "git repo")


ปุ่มลบ

(การกระทำจะสะท้อนให้เห็นถึงการลบไฟล์นั้น):

กระทำการลบ

และเช่นนั้นมันหายไป

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

หมายเหตุ: เนื่องจากเป็นระบบควบคุมเวอร์ชัน Git จะมีข้อมูลสำรองเสมอหากคุณต้องการกู้คืนไฟล์ในภายหลัง

ประโยคสุดท้ายหมายความว่าไฟล์ที่ถูกลบยังคงเป็นส่วนหนึ่งของประวัติและคุณสามารถกู้คืนได้ง่ายพอ (แต่ยังไม่ผ่าน GitHub ผ่านเว็บอินเตอร์เฟส):

ดู " กู้คืนไฟล์ที่ถูกลบใน Git repo "


4
คุณต้องเลื่อนไปที่ด้านล่างและกด "ยอมรับการเปลี่ยนแปลง" เพื่อคอมมิทลบ!
LevinsonTechnologies

1
สิ่งนี้ใช้ไม่ได้กับไฟล์ข้อความขนาดใหญ่ เซิร์ฟเวอร์พยายามแสดงไฟล์ในภาพหน้าจอและล้มเหลวด้วยข้อผิดพลาด 500
CapeCoder

9
คำตอบนี้อ้างถึง GitHub คำถามคือเกี่ยวกับ git repo ไม่ใช่วิธีใช้อินเตอร์เฟส github
ปีเตอร์มาร์แชล

65

นี่เป็นตัวเลือกเดียวที่เหมาะกับฉัน

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch *.sql'

หมายเหตุ: แทนที่ * .sql ด้วยชื่อไฟล์หรือประเภทไฟล์ของคุณ ระวังให้ดีเพราะสิ่งนี้จะผ่านการคอมมิตและริพไฟล์ประเภทนี้หมด

แก้ไข: ให้ความสนใจ - หลังจากคำสั่งนี้คุณจะไม่สามารถผลักดันหรือดึง - คุณจะเห็นการปฏิเสธของ 'ประวัติที่ไม่เกี่ยวข้อง' คุณสามารถใช้ 'git push --force -u ต้นแบบต้นแบบ' เพื่อผลักดันหรือดึง


9
นี่เป็นคำตอบที่ดี แต่โปรดทราบว่าในทางตรงกันข้ามกับคำตอบอื่น ๆ คำสั่งนี้จะเขียนประวัติการคอมมิทใหม่และลบร่องรอยทั้งหมดของไฟล์ที่ตรงกับรูปแบบ สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณพบว่าคุณได้รับข้อมูลที่ละเอียดอ่อนบางอย่างโดยไม่ตั้งใจ (และหากจำเป็นสามารถใช้ - บังคับให้เขียนประวัติของ repos ระยะไกลที่ถูกผลักไป)
yoniLavi

3
นั่นเป็นปัญหาที่ฉันมีอย่างแน่นอนและต้องลองผิดลองถูกเพื่อให้ถูกต้อง ผู้ชายที่ฉันทำงานด้วยมีความมุ่งมั่นที่จะทิ้งฐานข้อมูลขนาดใหญ่หลายแห่งลงไปในธุรกรรมซื้อคืนที่จะทำผ่านหลาย ๆ สัญญา ซึ่งเป็นเหตุผลที่ฉันใช้. sql ในตัวอย่างของฉัน repo ของฉันมีป่องและใหญ่มากที่ github จะไม่ยอมรับการกดอีกต่อไป
Jason Glisson

3
หากคุณกำลังใช้ต้นแบบระยะไกลคุณจะต้องบังคับให้ส่งและส่งมันไปด้วยgit push --force -u origin master
AlbertMarkovski

2
@AlbertMarkovski ขออภัยฉันไม่เจาะจง ที่จริงแล้ว Github ไม่ยอมรับการผลักเนื่องจากสมาชิกซื้อเกินขนาดที่กำหนดไว้ อย่างน้อยหลาย GB พวกเขาตัดฉันออกและส่งอีเมลถึงฉันเกี่ยวกับเรื่องนี้ ดังนั้นน่าเสียดายที่ไม่มีการบังคับจำนวนมากที่จะช่วยในจุดนั้น
Jason Glisson

2
@JasonGlisson ฉันยังประสบปัญหาที่เพิ่มวิดีโอลงในที่เก็บโดยไม่ตั้งใจ
AlbertMarkovski

34

นอกจากนี้หากเป็นโฟลเดอร์ที่จะลบและเป็นโฟลเดอร์ย่อยหรือไฟล์รองให้ใช้:

git rm -r foldername

2
นี่เป็นการลบโฟลเดอร์ออกจากโลคอลด้วย! Use git rm --cached -r <foldername>
ฝ่ายอักษะ

24

โดยทั่วไปแล้วgit helpจะช่วยตอบคำถามง่ายๆอย่างน้อยเช่นนี้:

zhasper@berens:/media/Kindle/documents$ git help
usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path] [-p|--paginate|--no-pager] [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS]

The most commonly used git commands are:
   add        Add file contents to the index
   :
   rm         Remove files from the working tree and from the index

6
สำหรับสิ่งที่ซับซ้อนมากขึ้นผมพบgit helpความสับสน แต่จะดีสำหรับสิ่งที่ง่าย :)
เจมส์ Polley

9
จริง ๆ แล้วมันไม่ได้ยอดเยี่ยมสำหรับ noit git เพราะ "index" ไม่ใช่แนวคิด noit git ที่คุ้นเคย ฉันพูดจากประสบการณ์ส่วนตัวของการเป็น noob git :) นอกจากนี้ฉันรู้สึกว่ามันสับสนน้อยกว่าที่จะบอกว่าrm ไฟล์เป็นระยะสำหรับการลบมากกว่าลบออกจากดัชนี (แม้ว่ามันจะยังไม่มีความหมายสำหรับ noobs)
Roman Starkov

การเห็นด้วยกับ romkyns: คำอธิบาย "ลบไฟล์ออกจากแผนผังการทำงานและจากดัชนี" ไม่ได้ฟังดูดีสำหรับฉันเพราะมันเป็นวิธีการลบไฟล์ออกจาก repo บางทีถ้าฉันเข้าใจคอมไพล์มันจะดีกว่า แต่มันเสียงเหมือนคุณเพียงแค่ไฟล์ unstaging (และเลือกที่จะลบออกจากต้นทำงาน - จะส่งผลกระทบที่ต้องซื้อคืนหรือไม่)
LarsH

14

หากคุณต้องการลบไฟล์ออกจาก repo แต่เก็บไว้ในระบบไฟล์ (จะไม่ถูกติดตาม):

bykov@gitserver:~/temp> git rm --cached file1.txt
bykov@gitserver:~/temp> git commit -m "remove file1.txt from the repo"

หากคุณต้องการลบไฟล์ออกจาก repo และจากระบบไฟล์มีสองตัวเลือก:

  1. หากไฟล์ไม่มีการเปลี่ยนแปลงใด ๆ ในดัชนี:

    bykov@gitserver:~/temp> git rm file1.txt
    bykov@gitserver:~/temp> git commit -m "remove file1.txt"
    
  2. หากไฟล์มีการเปลี่ยนแปลงระยะในดัชนี:

    bykov@gitserver:~/temp> git rm -f file1.txt
    bykov@gitserver:~/temp> git commit -m "remove file1.txt"
    

12

git rm จะลบไฟล์ในสาขานี้ต่อจากนี้ไป แต่จะยังอยู่ในประวัติและคอมไพล์จะจดจำได้

วิธีที่ถูกต้องในการทำเช่นนี้กับgit filter-branchคนอื่น ๆ ได้กล่าวถึงที่นี่ มันจะเขียนทุกการกระทำในประวัติของสาขาเพื่อลบไฟล์นั้น

แต่แม้หลังจากทำเช่นนั้นแล้ว git ยังสามารถจดจำได้เพราะสามารถอ้างอิงได้ใน reflog, remotes, tags และอื่น ๆ

หากคุณต้องการลบออกอย่างสมบูรณ์ในขั้นตอนเดียวฉันขอแนะนำให้คุณใช้ git forget-blob

https://ownyourbits.com/2017/01/18/completely-remove-a-file-from-a-git-repository-with-git-forget-blob/

git forget-blob file1.txtมันเป็นเรื่องง่ายเพียงแค่ทำ

การทำเช่นนี้จะลบการอ้างอิงทั้งหมดทำgit filter-branchและสุดท้ายเรียกใช้ตัวรวบรวมขยะ git git gcเพื่อกำจัดไฟล์นี้อย่างสมบูรณ์ใน repo ของคุณ


10

อีกวิธีหนึ่งถ้าคุณต้องการลบไฟล์ออกจากโฟลเดอร์ในเครื่องของคุณโดยใช้คำสั่ง rm แล้วกดการเปลี่ยนแปลงไปยังเซิร์ฟเวอร์ระยะไกล

rm file1.txt

git commit -a -m "Deleting files"

git push origin master

10

หมายเหตุ: หากคุณต้องการลบไฟล์จากการใช้คอมไพล์ด้านล่าง:

git rm --cached file1.txt

หากคุณต้องการลบจากฮาร์ดดิสก์ด้วย:

git rm file1.txt

หากคุณต้องการลบโฟลเดอร์ (โฟลเดอร์อาจมีไฟล์ไม่กี่ไฟล์) ดังนั้นคุณควรลบโดยใช้คำสั่งซ้ำดังนี้:

git rm -r foldername

หากคุณต้องการลบโฟลเดอร์ภายในโฟลเดอร์อื่น

git rm -r parentFolder/childFolder

จากนั้นคุณสามารถcommitและpushตามปกติ อย่างไรก็ตามหากคุณต้องการกู้คืนโฟลเดอร์ที่ถูกลบคุณสามารถทำตามสิ่งต่อไปนี้: กู้คืนไฟล์ที่ถูกลบจากคอมไพล์ได้

จากเอกสาร:

git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--] <file>…​

ตัวเลือก

<file>…​

Files to remove. Fileglobs (e.g. *.c) can be given to remove all matching files. If you want Git to expand file glob characters, you

อาจจำเป็นต้องหลบหนีพวกเขา ชื่อไดเรกทอรีนำ (เช่น dir เพื่อลบ dir / file1 และ dir / file2) สามารถกำหนดให้ลบไฟล์ทั้งหมดในไดเรกทอรีและเรียกไดเรกทอรีย่อยทั้งหมดซ้ำ แต่จะต้องกำหนดตัวเลือก -r อย่างชัดเจน -f --force

Override the up-to-date check.

-n --dry-run

Don’t actually remove any file(s). Instead, just show if they exist in the index and would otherwise be removed by the command.

-r

Allow recursive removal when a leading directory name is given.

--

This option can be used to separate command-line options from the list of files, (useful when filenames might be mistaken for

ตัวเลือกบรรทัดคำสั่ง) --cached

Use this option to unstage and remove paths only from the index. Working tree files, whether modified or not, will be left alone.

ละเลย-Unmatch

Exit with a zero status even if no files matched.

-q --quiet

git rm normally outputs one line (in the form of an rm command) for each file removed. This option suppresses that output.

อ่านเพิ่มเติมเกี่ยวกับเอกสารอย่างเป็นทางการ


7

เพื่อลบไฟล์เฉพาะ

ชื่อไฟล์ git rm

เพื่อล้างไฟล์ที่ไม่ได้ติดตามทั้งหมดจากไดเรกทอรีซ้ำในช็อตเดียว

git clean -fdx


5

หากคุณมีแอพพลิเคชั่น GitHub สำหรับ Windows คุณสามารถลบไฟล์ได้ใน 5 ขั้นตอนง่าย ๆ :

  • คลิกซิงค์
  • คลิกที่ไดเรกทอรีที่ไฟล์นั้นอยู่และเลือกไฟล์เวอร์ชันล่าสุดของคุณ
  • คลิกที่เครื่องมือและเลือก "เปิดเปลือกที่นี่"
  • ในเชลล์ให้พิมพ์: "rm {filename}" และกด Enter
  • ยอมรับการเปลี่ยนแปลงและซิงค์อีกครั้ง

5

ในกรณีของฉันฉันพยายามที่จะลบไฟล์บน GitHub หลังจากกระทำไม่กี่ แต่บันทึกในคอมพิวเตอร์

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch file_name_with_path' HEAD
git push --force -u origin master

และต่อมาไฟล์นี้ถูกละเว้น


3
  1. ก่อนอื่นให้ลบไฟล์ออกจากที่เก็บในเครื่อง

    git rm -r ชื่อไฟล์

    หรือลบไฟล์จากที่เก็บในเครื่องเท่านั้น แต่ออกจากระบบไฟล์

    git rm - ไฟล์ชื่อที่เก็บไว้

  2. ประการที่สองกระทำการเปลี่ยนแปลงลงในพื้นที่เก็บข้อมูลท้องถิ่น

    git commit -m "unwanted files or some inline comments"   
    
  3. ในที่สุดปรับปรุง / ผลักดันการเปลี่ยนแปลงในท้องถิ่นลงในพื้นที่เก็บข้อมูลระยะไกล

    git push 
    

สิ่งนี้จะลบทุกสิ่งที่เกี่ยวข้องกับไฟล์ที่เพิ่มและผลักโดยไม่ตั้งใจหรือไม่
bapors

1

ฉันลองตัวเลือกที่แนะนำจำนวนมากและดูเหมือนว่าจะไม่มีใครทำงาน (ฉันจะไม่แสดงปัญหาต่าง ๆ ) สิ่งที่ฉันทำลงไปซึ่งใช้งานได้ง่ายและเรียบง่าย (สำหรับฉัน) คือ:

  1. ย้าย repo ท้องถิ่นทั้งหมดที่อื่น
  2. โคลน repo อีกครั้งจากต้นแบบไปยังไดรฟ์ในประเทศของคุณ
  3. คัดลอกไฟล์ / โฟลเดอร์จากสำเนาต้นฉบับของคุณใน # 1 กลับไปที่โคลนใหม่จาก # 2
  4. ตรวจสอบให้แน่ใจว่าไฟล์ขนาดใหญ่ของปัญหาไม่มีอยู่ในนั้นหรือถูกแยกออกในไฟล์. gitignore
  5. ทำ git ปกติเพิ่ม / git กระทำ / ดัน git

1

หลังจากคุณลบไฟล์ออกจาก repo ด้วยgit rmคุณสามารถใช้BFG Repo-Cleanerเพื่อกำจัดไฟล์ออกจากประวัติ repo ได้อย่างสมบูรณ์และง่ายดาย


0

ฉันมีไฟล์ obj และ bin ที่ทำให้มันกลายเป็น repo โดยที่ฉันไม่ต้องการทำให้รายการ 'ไฟล์ที่ถูกเปลี่ยนแปลง' ของฉันสกปรก

หลังจากที่ฉันสังเกตเห็นว่าพวกเขาไปที่รีโมตฉันไม่สนใจพวกเขาโดยเพิ่มสิ่งนี้เข้าไป.gitignore

/*/obj
/*/bin

ปัญหาคือพวกเขาอยู่ในระยะไกลและเมื่อพวกเขาได้รับการเปลี่ยนแปลงพวกเขาปรากฏขึ้นเมื่อมีการเปลี่ยนแปลงและมลพิษรายการไฟล์ที่เปลี่ยนแปลง

หากต้องการหยุดเห็นคุณต้องลบทั้งโฟลเดอร์ออกจากที่เก็บระยะไกล

ในพรอมต์คำสั่ง:

  1. ซีดีไปยังโฟลเดอร์ repo (เช่นC:\repos\MyRepo)
  2. ฉันต้องการลบ SSIS \ obj ดูเหมือนว่าคุณจะสามารถลบได้ที่ระดับบนสุดเท่านั้นดังนั้นตอนนี้คุณต้องซีดีลงใน SSIS: (เช่นC:\repos\MyRepo\SSIS )
  3. ตอนนี้พิมพ์คาถาวิเศษ git rm -r -f obj
    • RM = ลบ
    • -r = ลบซ้ำ
    • -f = หมายถึงกำลังทำให้คุณหมายถึงมันจริงๆ
    • obj เป็นโฟลเดอร์
  4. ตอนนี้ทำงาน git commit -m "remove obj folder"

ฉันได้รับข้อความแจ้งว่ามี13 ไฟล์เปลี่ยนการลบ 315222 ครั้ง

จากนั้นเนื่องจากฉันไม่ต้องการค้นหาบรรทัด CMD ฉันจึงเข้าสู่ Visual Sstudio และทำการซิงค์เพื่อใช้กับรีโมท


0

หากคุณต้องการลบไฟล์ออกจากส่วนขยายที่กำหนด (ตัวอย่างเช่นไฟล์ที่รวบรวม) คุณสามารถทำสิ่งต่อไปนี้เพื่อลบไฟล์ทั้งหมดในครั้งเดียว:

git remove -f *.pyc

0

ตามที่เอกสาร

git rm --cached giant_file

เมื่อพูดถึงข้อมูลที่ละเอียดอ่อน - อย่าบอกว่าคุณลบไฟล์ แต่ควรรวมไว้ในการคอมมิทที่รู้จักกันล่าสุด:

0. แก้ไขการกระทำล่าสุด

git commit --amend -CHEAD

หากคุณต้องการลบไฟล์จากประวัติ git ทั้งหมดตามเอกสารคุณควรทำดังต่อไปนี้:

1. ลบออกจากประวัติท้องถิ่นของคุณ

git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \  --prune-empty --tag-name-filter cat -- --all
# Replace PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA with the path to the file you want to remove, not just its filename
  1. อย่าลืมที่จะรวมไฟล์นี้ไว้ใน. gitignore (หากเป็นไฟล์ที่คุณไม่ต้องการแชร์ (เช่นรหัสผ่าน ... ):
echo "YOUR-FILE-WITH-SENSITIVE-DATA" >> .gitignore
git add .gitignore
git commit -m "Add YOUR-FILE-WITH-SENSITIVE-DATA to .gitignore"

3. หากคุณต้องการลบจากระยะไกล

git push origin --force --all

4. หากคุณต้องการลบออกจากการวางแท็กด้วย:

git push origin --force --tags

-7

กรณีถ้าคุณไม่ยื่นใน repo ท้องถิ่นของคุณ แต่ใน git repo เพียงเปิดไฟล์ใน git repo ผ่านเว็บอินเตอร์เฟสและหาปุ่ม Delete ที่มุมขวาในอินเตอร์เฟส คลิกที่นี่เพื่อดูตัวเลือกการลบอินเตอร์เฟส

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.