ฉันจะละเว้นโฟลเดอร์ bin และ obj จากที่เก็บ git ได้อย่างไร


112

ฉันต้องการละเว้นโฟลเดอร์ bin และ obj จากที่เก็บ git ของฉัน ดังที่ฉันได้ค้นพบไม่มีวิธีง่ายๆในการทำสิ่งนี้ใน. gitignore แล้วมีวิธีอื่นอีกไหม? ใช้ Clean Solution ใน Visual Studio หรือไม่


ทำงานได้ดีสำหรับฉัน - ฉันเพิ่มคำว่า 'bin' และ 'obj' เป็นบรรทัดแยกต่างหากในไฟล์. gitignore ของฉัน
Tim Robinson

1
และถ้าโซลูชันประกอบด้วยหลายโครงการไม่ใช่เพียงโครงการเดียว?
chester89

คุณสามารถโพสต์สิ่งที่คุณพยายามและสิ่งที่ไม่ได้ผล objและbinในระดับบนสุด. gitignore ควรละเว้นทุกสิ่งที่เรียกobjหรือbinในระดับล่างทั้งหมด
CB Bailey

2
ความเข้าใจของฉันคือเนื้อหา. gitignore ใช้ในทุกไดเรกทอรีย่อยดังนั้น 'bin' และ 'obj' ธรรมดาจึงทำงานได้ทุกที่ จะโพสต์. gitignore ของฉันในคำตอบ
Tim Robinson

คำตอบ:


165

ฉันไม่แน่ใจว่าเหตุใดจึงไม่ได้ผลสำหรับคุณ ในกรณีที่ช่วยได้นี่คือไฟล์. gitignore ทั่วไปจากโครงการ Visual Studio / git ของฉัน:

*.suo
*.user
_ReSharper.*
bin
obj
packages

4
ฉันเพิ่มด้วยpackagesเพราะคุณสามารถดาวน์โหลดซ้ำได้อย่างง่ายดายจาก NuGet
Michal Ciechan

1
มันจะไม่ทำงานเมื่อคุณคอมมิตไฟล์ทั้งหมดเป็นครั้งแรกจากนั้นเพิ่มไฟล์. gitignore ลงใน repo ของคุณและคอมมิต ไฟล์ที่เพิ่งถูกเพิกเฉยจะยังคงแสดงว่ามีการแก้ไข (หากคุณสร้างใหม่เป็นต้น)
vlad2135

7
ฉันเพิ่งใช้ไฟล์. gitignore ที่แนะนำที่นี่: github.com/github/gitignore/blob/master/VisualStudio.gitignoreประสบความสำเร็จอย่างมาก
BigTFromAZ

1
@BigTFromAZ คุณควรเพิ่มว่าเป็นคำตอบจะดีกว่าคำตอบที่ยอมรับ!
Avrohom Yisroel

62

เพียงแค่สร้างรายการใน gitignore ไม่สามารถเพิกเฉยต่อไฟล์คุณอาจต้องยอมรับ ฉันใช้วิธีต่อไปนี้และได้ผลสำหรับฉัน

git rm -r --cached .

git add .

แล้ว

git commit -am "Remove ignored files"

อย่างไรก็ตามสิ่งนี้จะไม่สนใจโฟลเดอร์สคริปต์ของฉันซึ่งฉันรวมไว้ในที่เก็บในภายหลัง


ใช้งานได้ดี แต่ Vscode ไม่พบโค้ดที่แก้ไข ฉันเปลี่ยนบางอย่างด้วยตัวเองและผลักดันให้เป็นผู้ให้กำเนิด จากนั้นก็ใช้งานได้ :)
Dentrax

ฉันมีวิธีแก้ปัญหากับโครงการมากมายและด้วยเหตุผลบางประการที่เพิ่มคอมไพล์ ไม่เสร็จสมบูรณ์
Chucky

Great Arvind! นักพัฒนามือใหม่ได้รวม bin / และ obj / ทั้งหมดเข้ากับสาขาการทำงานของเรา (ข้ามนโยบาย ... ฉันไม่รู้วิธี!) และนี่คือวิธีลบไฟล์เหล่านั้นทั้งหมดออกจาก repo
equintas

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

เยี่ยมมาก! สิ่งนี้ทำงานได้ดีสำหรับฉัน .vs, obj, bin และไฟล์อื่น ๆ ที่ละเว้นทั้งหมด
Stanley Okpala Nwosa

10

หากคุณใช้ Visual Studio มีวิธีง่ายๆในการทำเช่นนี้

  1. เปิด Team Explorer
  2. คลิกที่การตั้งค่า
  3. การตั้งค่าที่เก็บ
  4. ภายใต้ส่วนละเว้น & แอตทริบิวต์ไฟล์คลิกที่เพิ่มข้างละเว้นไฟล์

มันจะสร้างไฟล์. gitignore เริ่มต้นซึ่งจะไม่สนใจโฟลเดอร์และไฟล์ทั่วไปส่วนใหญ่ที่จะใช้โดยเฟรมเวิร์ก / ภาษา

ใส่คำอธิบายภาพที่นี่


3
  • ค้นหาbinและobjโฟลเดอร์ใน Windows Explorer
  • คลิกขวาที่ TortoiseGit> Delete และเพิ่มในรายการละเว้น> bin
  • คลิกขวาที่ TortoiseGit> ลบและเพิ่มในรายการละเว้น> obj

1
มันทำงานได้อย่างสมบูรณ์ ขอบคุณ @Denys Wessels
Biswajit Panday

2

หากคุณต้องการละเว้น bin และ obj ในทุกโครงการของคุณคุณสามารถใช้ (จากหน้าคน gitignore )

รูปแบบที่อ่านจากไฟล์ที่ระบุโดยตัวแปรคอนฟิกูเรชัน core.excludesfile

core.excludesfile สามารถตั้งค่าในไฟล์ config ซึ่งเป็น ~ / .gitconfig ใน Unix - ฉันไม่รู้ว่ามันอยู่ที่ไหนใน Windows


ข้อมูลที่ดี แต่เขาหมายถึงโครงการ Visual Studio ทั้งหมดของเขาในโซลูชันนี้ไม่ใช่ทุกโครงการในเครื่อง
AhHatem

2
แม้ว่าส่วนใหญ่เขาจะไม่สนใจที่จะยอมรับbinและobjโฟลเดอร์ในโซลูชันใด ๆ :)
MEMark

1

หากคุณได้กำหนดโฟลเดอร์ bin และ obj ไว้ก่อนหน้านี้การเพิ่มลงใน. gitignore จะไม่ลบโดยอัตโนมัติ คุณจำเป็นต้องกระทำการลบโฟลเดอร์เหล่านี้ด้วยตัวอย่างเช่น git rm -rf objหรือgit rm -rf yourProject/obj จากนั้นจึงทำการลบ


0

หากคุณลองผ่านซอร์สทรีแล้วไฟล์ที่เพิกเฉยยังไม่เข้ามาให้ไปที่ tools -> option-> Git จากนั้นเลือกตำแหน่งของ. gitignore ใส่คำอธิบายภาพที่นี่


0

ในกรณีของฉันโฟลเดอร์ bin และ obj ถูกซ้อนกันภายใต้โฟลเดอร์ Project จากไฟล์ root .gitignore ดังนั้นฉันจึงต้องเพิ่มมันดังนี้:

[PROJECT_FOLDER_NAME] / bin
[PROJECT_FOLDER_NAME] / obj

แทนที่ PROJECT_FOLDER_NAME ด้วยชื่อโฟลเดอร์โครงการของคุณ

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