ที่เก็บ git ละเว้น. dlls ทั้งหมด


88

Title บอกทุกอย่าง ฉันกำลังพยายามเพิ่มแพ็คเกจ NuGet ของฉันไปยังที่เก็บ ทุกอย่างยกเว้นไฟล์. dll กำลังถูกตรวจพบ

ไฟล์ gitignore ไม่มีการอ้างอิงถึง * .dll ไฟล์. dll ไม่ได้รับการยอมรับเมื่ออยู่ที่ใดก็ได้ในที่เก็บทั้งหมด ข้อมูล / ไม่รวมยังว่างเปล่า

ฉันยังโคลนที่เก็บ (ระบบไฟล์ไปยังระบบไฟล์ซึ่งต่างจากรีโมตไปเป็นไฟล์ซิสเท็ม) โดยไม่มีโชค ปัญหานี้ยังเกิดขึ้นกับคอมพิวเตอร์สองเครื่องที่แตกต่างกัน

ฉันสามารถเพิ่มไฟล์. dll ได้ด้วยตนเอง แต่ควรติดตาม ทำไมพวกเขาถึงไม่ถูกติดตาม?


26
อะไรgit config --get core.excludesfileเอ่ย?
Antony Hatchkins

2
นอกจากนี้โดยทั่วไปไม่ควรใช้ git เพื่อติดตามไฟล์ไบนารีเนื่องจาก git ไม่สามารถคำนวณเดลต้าระหว่างการแก้ไขได้อย่างมีประสิทธิภาพดังนั้นการเก็บเวอร์ชันทั้งหมดจะเป็นการสิ้นเปลืองหากมีพื้นที่ หาก dlls ถูกสร้างขึ้นทันทีจะเป็นการดีกว่าที่จะเพิกเฉยต่อสิ่งเหล่านี้ในคอมไพล์ หากไม่เป็นเช่นนั้นควรใช้กลไกการซิงค์อื่น (เช่น rsync) จะดีกว่า
Antony Hatchkins

นี่คือแพ็คเกจ NuGet ที่ฉันพยายามเพิ่มลงในคอมไพล์ ฉันไม่ได้ใช้ฟังก์ชัน "Package Restore" ของ NuGet ดังนั้นฉันจึงต้องเช็คอินโฟลเดอร์แพ็คเกจทั้งหมด
Paul Knopf

คำตอบ:


121

คุณมี~/.gitignore_globalหรือ~/.gitignoreในโฮมไดเร็กทอรีของคุณซึ่งสามารถแสดงรายการรูปแบบไฟล์เหล่านี้ได้หรือไม่?

ดูhttps://help.github.com/articles/ignoring-files


6
เนื่องจากเขาทำงานกับไฟล์ dll เขาอยู่บนแพลตฟอร์ม Windows ดังนั้น ~ หมายถึง $ HOMEDRIVE $ HOMEPATH ภายใต้ Windows 7
Antony Hatchkins

9
สิ่งนี้กลายเป็นปัญหา ฉันไม่ได้เพิ่มไฟล์ละเว้นนี้ มีเหตุผลอะไรที่มันจะโผล่มาจากไหนไม่รู้? ตอนนี้ฉันเพิ่งติดตั้ง SourceTree (จาก Atlassian) อาจจะเป็นผู้ร้าย?
Paul Knopf

6
ฉันมีปัญหาเดียวกันฉันยังติดตั้ง SourceTree ก่อนหน้านั้น ดังนั้นฉันเดาว่ามันเป็นการคาดเดาที่ยุติธรรม SourceTree เพิ่มไฟล์ละเว้นทั่วโลกเนื่องจากเคยใช้งานได้ในอดีต
Andreas Krebs

8
แก้ไข: ตกลงเพิ่มโดยลิงก์
Andreas Krebs

31
ฉันต้องวิ่งgit check-ignoreเพื่อค้นหาว่าไฟล์อยู่ที่ไหน ติดตามได้ที่ ~ / Documents / gitignore_global.txt
Matt Canty

98

หากคุณใช้ SourceTree และการตั้งค่าเริ่มต้นระบบจะละเว้น DLL ทั้งหมดโดยค่าเริ่มต้น ... Tools => Options => Git จากนั้น "Edit File" ... เพิ่ม "#" ก่อน. dll => "# .dll" .. . บันทึกและปิด

จากนั้นสำหรับ Windows Explorer ในโฟลเดอร์แพ็กเกจของคุณให้เปิดเทอร์มินัล GitBash แล้วพิมพ์ "git add" และปล่อยให้มันทำงานกลับไปที่ SourceTree รอสักครู่และ DLL ของแพ็คเกจที่ขาดหายไปทั้งหมดจะปรากฏขึ้นเพื่อให้คุณกระทำและผลักดัน


13
คำตอบที่ถูกต้องสำหรับผู้ใช้ SourceTree;)
jmpcm

รู้เกี่ยวกับรายชื่อที่เพิกเฉยทั่วโลกไม่พบใน GUI .. ขอบคุณ!
Christoph

Tools => Options => Git / Mercurial Global Ignore List ... หากคุณไม่มีคุณสามารถสร้างและชี้ไปที่นั่นได้
KevinB

2
ตำแหน่งไฟล์: ~ / Documents / gitignore_global.txt
James McCormack

สิ่งนี้ใช้ได้กับแผนผังแหล่งที่มา แต่วิธีการสำหรับสตูดิโอภาพนั้นไม่สนใจใน gitignore ของฉัน ฉันใช้
แผนผัง

11

ฉันสามารถเพิ่มไฟล์. dll ได้ด้วยตนเอง แต่ควรติดตาม ทำไมพวกเขาถึงไม่ถูกติดตาม?

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

ลองเพิ่มหนึ่งในนั้นด้วยตนเองgit addและจะบอกคุณว่าทำไมจึงเพิกเฉยและแจ้งให้คุณใช้git add -fเพื่อเพิ่มไฟล์ต่อไป


ฉันทำการ "เพิ่มคอมไพล์" / แพ็กเกจ "และตรวจไม่พบไฟล์. dlls จากนั้นฉันก็ใช้ -f และเพิ่มเข้าไป ฉันพบปัญหาแม้ว่า "* .dll" อยู่ในการเพิกเฉยทั่วโลกของฉัน ไม่ทราบว่าการเพิกเฉยทั่วโลกนี้มาจากไหน
Paul Knopf

2

คุณต้องบอก git อย่างชัดเจนเพื่อติดตามไฟล์ใหม่ ๆ

  1. เรียกใช้git add filenameเพื่อเพิ่มไฟล์ในดัชนีของคอมไพล์

  2. เรียกใช้git commitเพื่อยอมรับการเปลี่ยนแปลงในดัชนีของคุณ

git status ควรแสดงรายการไฟล์และไดเรกทอรีที่ไม่ถูกติดตามด้วย

หากคุณต้องการแสดงรายการไฟล์ทั้งหมดใน repo ซึ่ง gitignore ไม่สนใจคุณสามารถเรียกใช้:

git ls-files . --ignored --exclude-standard --others

หากคุณต้องการแสดงรายการไฟล์ที่ไม่ได้ติดตามทั้งหมดใน repo:

git ls-files . --exclude-standard --others

2
ฉันต้อง "git add -f" เพื่อติดตามไฟล์ที่ถูกละเลยในความเป็นจริง มันกลายเป็นรายการในไฟล์ global ไม่สนใจซึ่งแอพพลิเคชั่นบางตัวใส่ไว้ให้ฉันโดยไม่รู้ตัว
Paul Knopf

2

ฉันประสบปัญหาที่คล้ายกัน ฉันไม่สามารถเพิ่มไฟล์. dll จากไดเร็กทอรีแพ็กเกจไปยัง git ของฉันจากนั้นฉันพบไฟล์ gitignore_global.txt เนื่องจาก sourcetree เพิ่มไฟล์นี้โดยอัตโนมัติเป็นการตั้งค่าการละเว้นคอมไพล์ทั่วโลก ฉันลบ * .dll ออกจากไฟล์ gitignore_global.txt และมันก็ใช้ได้ดีสำหรับฉัน

ตำแหน่งของไฟล์ gitignore_global.txt ดังต่อไปนี้

C: \ Users \ XXXX \ Documents \ gitignore_global.txt หรือคุณสามารถค้นหาได้จากแท็บ sourcetree TOOL => OPTION => GIT และค้นหารายการละเว้นทั่วโลก


1

ในกรณีของฉันไม่มีการอ้างอิง. dll ในไฟล์. gitignore และฉันไม่มีไฟล์ส่วนกลาง อย่างไรก็ตามในไดเร็กทอรีย่อย. git ฉันพบไฟล์ชื่อ ms-persist.xml ฉันปิดอินสแตนซ์ทั้งหมดของ Visual Studio แล้วเพิ่ม. dlls ที่หายไปของฉันลงในไฟล์นั้นด้วยตนเอง เมื่อฉันเปิดวิชวลสตูดิโอขึ้นมาใหม่. dlls ก็แสดงว่าต้องเช็คอินฉันเช็คอินและตอนนี้ฉันเป็นสีทอง ...


0

คุณมีไฟล์โกลบอล.gitignoreที่ไหนสักแห่งหรือ.gitignoreไฟล์อื่น ๆ ในไดเร็กทอรีย่อยซึ่งสัมพันธ์กับรูทของโปรเจ็กต์ของคุณ

ในระบบ Linux และ MacOS การละเว้น git ทั่วโลกมักจะอยู่ในบ้านของคุณ ~/

~/.gitignore_global

ใน Windows มักจะอยู่ในไดเรกทอรีผู้ใช้ของคุณ ผู้ใช้ภายในเครื่องของคุณ (ซึ่งคุณสามารถค้นหาได้โดยการพิมพ์ECHO %USERPROFILE%หรือwhoamiที่บรรทัดคำสั่ง

ถ้าไม่มีก็แสดงว่า a .gitconfigอยู่แทน ดูที่นี่สำหรับตำแหน่งของ gitignore (เช่นDocumentsโฟลเดอร์ของผู้ใช้)

แก้ไข : ใช้git config --list --show-originเพื่อดูรายละเอียดของการตั้งค่าคอมไพล์และตำแหน่งไฟล์ที่เกี่ยวข้อง


0

ฉันรู้ว่าคำถามนี้เก่ามาก แต่ฉันจะเพิ่มสำหรับคนอื่น ๆ ที่อาจเข้ามาดูคำถามนี้ในอนาคต คุณสามารถแก้ไขไฟล์การละเว้นส่วนกลางของคุณได้ตามคำตอบที่กล่าวไว้ข้างต้น แต่จะส่งผลต่อ git repos ทั้งหมดของคุณ หากคุณต้องการแนวทางที่ละเอียดยิ่งขึ้นคุณสามารถยกเว้น DLL ที่เฉพาะเจาะจงหรือโฟลเดอร์เฉพาะในแต่ละโปรเจ็กต์ของคุณ .gitignores สิ่งนี้จะลบล้างการตั้งค่าที่ละเว้นทั้งหมดและบังคับให้คอมไพล์ตรวจพบและจัดการไฟล์ ฉันคิดว่านี่เป็นแนวทางที่ดีกว่า

.gitignore (สำหรับโครงการเฉพาะของคุณ)

# Custom ignores
!*.dll
# or
!My.specific.dll

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