มีคำสั่งละเว้นสำหรับคอมไพล์เหมือนที่มีสำหรับ svn หรือไม่?


125

ฉันเป็นผู้ใช้ใหม่gitและฉันกำลังเริ่มโครงการใหม่ ฉันมีไฟล์ dot มากมายที่ฉันอยากจะละเว้น มีคำสั่งเพิกเฉยgitเหมือนมีเพื่อsvn?


1
ทางเลือกที่ดีสำหรับ gitignore: git update-index - สมมติว่าไม่มีการเปลี่ยนแปลง <ไฟล์>ขอบคุณstackoverflow.com/a/16442091/2162226
Gene Bo

คำตอบ:


136

ไม่มีgit ignoreคำสั่งพิเศษใดๆ

แก้ไข.gitignoreไฟล์ที่อยู่ในตำแหน่งที่เหมาะสมภายในสำเนาที่ใช้งานได้ จากนั้นคุณควรเพิ่มสิ่งนี้.gitignoreและยืนยัน ทุกคนที่โคลน repo นั้นจะไม่สนใจไฟล์เหล่านั้น

โปรดทราบว่าเฉพาะชื่อไฟล์ที่ขึ้นต้นด้วย/เท่านั้นที่จะสัมพันธ์กับไดเร็กทอรีที่.gitignoreอยู่ส่วนอื่น ๆ จะตรงกับไฟล์ในไดเร็กทอรีย่อยใด ๆ

คุณยังสามารถแก้ไข.git/info/excludeเพื่อละเว้นไฟล์เฉพาะในสำเนาที่ใช้งานได้ .git/info/excludeไฟล์จะไม่ได้รับความมุ่งมั่นและจะทำให้มีผลเฉพาะในท้องถิ่นในการคัดลอกการทำงานนี้

git config --global core.excludesfileนอกจากนี้คุณยังสามารถตั้งค่าไฟล์ระดับโลกที่มีรูปแบบที่จะไม่สนใจกับ สิ่งนี้จะนำไปใช้กับสำเนาการทำงานของคอมไพล์ทั้งหมดในบัญชีของผู้ใช้เดียวกัน

เรียกใช้git help gitignoreและอ่านข้อความเพื่อดูรายละเอียด


75
การไม่มีคำสั่งเพิกเฉยแบบธรรมดาดูเหมือนว่าเป็นการกำกับดูแลในส่วนของทีมคอมไพล์
jcollum

4
@jcollum เมื่อมองแวบแรกมันทำได้ แต่ความเรียบง่ายของการตั้งนามแฝงคำสั่งเพื่อเพิ่มคำสั่งใหม่และความซับซ้อนของการสร้างและการทำงานผ่านกรณีขอบทั้งหมด / gotchas / ปัญหาที่อาจเกิดขึ้นในการแก้ไขไฟล์ข้อความก็สมเหตุสมผลเช่นกันที่จะปล่อยให้มันเป็น ผู้ใช้งาน ฉันรู้สึกขัดแย้งเพราะฉันทั้งเห็นด้วยและไม่เห็นด้วยกับคุณ
abelito

100

คำสั่งคอมไพล์ที่มีประโยชน์มากมาพร้อมกับtj / git-extras ที่ยอดเยี่ยม

นี่คือตัวอย่างการใช้งานบางส่วน:

แสดงรายการรูปแบบที่ถูกละเลยในปัจจุบันทั้งหมด

git ignore

เพิ่มรูปแบบ

git ignore "*.log"

เพิ่มเทมเพลตจากgitignore.io

git ignore-io -a rails

git-extrasมีคำสั่งที่เป็นประโยชน์มากมาย คุ้มค่าที่จะลอง


1
ดังนั้นถ้าฉันใช้ git ละเว้น "index.html" มันจะไม่สนใจไฟล์นี้?
JohnAndrews

คำสั่ง -t ยังใช้ได้หรือไม่? เมื่อฉันเรียกใช้มันจะเพิ่ม -t และเทมเพลตใด ๆ ที่ฉันพยายามเพิ่มลงในไฟล์ git ไม่สนใจ
Bynho

50

บน Linux / Unix คุณสามารถต่อท้ายไฟล์เข้ากับไฟล์. gitignore ด้วยechoคำสั่ง ตัวอย่างเช่นหากคุณต้องการละเว้น.svnโฟลเดอร์ทั้งหมดให้เรียกใช้สิ่งนี้จากรากของโครงการ:

echo .svn/ >> .gitignore

1
ฉันพบทวีตนี้โดยใช้ไวยากรณ์twitter.com/noodl_io/status/669904872704253953
JohnAndrews

3
ใน Git Bash บน Windows ฉันต้องเพิ่ม/'\' ที่นำหน้าและต่อท้าย (เพื่อสร้างบรรทัดใหม่) เช่นecho /nbproject/project.properties\ >> .gitignoreและecho /nbproject/project.xml\ >> .gitignore.
Ryan

15

คุณมีสองวิธีในการละเว้นไฟล์:

  • .gitignoreในโฟลเดอร์ใด ๆ จะละเว้นไฟล์ตามที่ระบุไว้ในไฟล์สำหรับโฟลเดอร์นั้น สามารถใช้สัญลักษณ์แทนได้
  • .git/info/excludeถือรูปแบบการละเว้นส่วนกลางคล้ายกับglobal-ignoresไฟล์คอนฟิกูเรชัน in subversions

6
โปรดสังเกตว่ารูปแบบใน.gitignoreไฟล์ที่ไม่มี '/' จะถูกจับคู่แบบวนซ้ำ (เช่นในไดเร็กทอรีย่อยทั้งหมดของไดเร็กทอรีที่.gitignoreไฟล์นั้นอยู่) ตรงกันข้ามกับกรณีของsvn:ignoreคุณสมบัติไดเร็กทอรีใน Subversion
Jakub Narębski

6

ฉันหวังว่ามันจะไม่สายเกินไป

หากคุณใช้ Windows คุณสามารถทำสิ่งต่อไปนี้เพื่อสร้างไฟล์. gitignore

echo name_of_the_file_you_want_to_ignore.extension > .gitignore

ในการแก้ไข. gitignoreคุณสามารถเรียกใช้

notepad .gitignore

2
อย่าใช้ไฟล์นั้นหากคุณมีไฟล์. gitignore อยู่แล้วไฟล์นั้นจะเขียนทับ! ในการต่อท้ายไฟล์เพื่อเพิกเฉยให้ใช้สิ่งนี้: echo ไม่สนใจถัดไป >>
.gitignore

คุณพูดถูกขอแนะนำให้ใช้เฉพาะเมื่อไม่มีไฟล์. gitignore ควรใช้ "notepad .gitignore" ถ้าคุณมีไฟล์. gitignore มันจะเปิดขึ้นมาและถ้าคุณไม่ทำมันจะสร้างขึ้นมาจากนั้นคุณสามารถเพิ่มไฟล์ทั้งหมดจาก notepad ได้ 1 ไฟล์ / โฟลเดอร์ต่อบรรทัด
Nesar

3

สร้างไฟล์ชื่อ. gitignore บนรูทของที่เก็บของคุณ ในไฟล์นี้คุณใส่เส้นทางสัมพัทธ์ไปยังแต่ละไฟล์ที่คุณต้องการละเว้นในบรรทัดเดียว คุณสามารถใช้*สัญลักษณ์แทน


2

การใช้คำตอบที่มีให้อยู่แล้วคุณสามารถม้วนของคุณเองgit ignoreคำสั่งโดยใช้นามแฝง เพิ่มสิ่งนี้ลงในไฟล์ ~ / .gitconfig ของคุณ:

ignore = !sh -c 'echo $1 >> .gitignore' -

หรือรันคำสั่งนี้จากเชลล์ (* nix) ที่คุณเลือก:

git config --global alias.ignore '!sh -c "echo $1 >> .gitignore" -'

คุณสามารถสร้างgit excludeคำสั่งได้เช่นเดียวกันโดยแทนที่ignoreด้วยexcludeและ.gitignoreด้วย.git/info/excludeในด้านบน

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


1
คำตอบที่นี่ขยาย $ 1 อย่างถูกต้อง: stackoverflow.com/a/21884533/1465227
Archangel33

2

สำหรับชื่อที่ไม่มีอยู่ในสำเนาการทำงานหรือ repo:

echo /globpattern >> .gitignore

หรือสำหรับไฟล์ที่มีอยู่ (บรรทัดคำสั่งประเภท sh):

echo /$(ls -1 file) >> .gitignore   # I use tab completion to select the file to be ignored  
git rm -r --cached file             # if already checked in, deletes it on next commit

1

มีประโยชน์ในการกำหนดไฟล์. gitignore ที่สมบูรณ์สำหรับโครงการของคุณ รางวัลคือการใช้ความสะดวก--allหรือ-aตั้งค่าสถานะเพื่อคำสั่งเช่นaddและcommitอย่างปลอดภัย

นอกจากนี้ให้พิจารณากำหนดไฟล์~ / .gitignoreส่วนกลางสำหรับรูปแบบที่ถูกละเว้นโดยทั่วไปเช่น*~ ซึ่งครอบคลุมไฟล์ชั่วคราวที่สร้างโดย Emacs


1

คุณต้องติดตั้ง git-extras สำหรับสิ่งนี้ คุณสามารถติดตั้งใน Ubuntu โดยใช้ apt-get

$ sudo apt-get install git-extras

จากนั้นคุณสามารถใช้คำสั่ง git ละเว้น

$ git ignore file_name

3
บน Mac ถ้าคุณมีการติดตั้ง Homebrew brew install git-extrasคุณสามารถเรียกใช้
Alex Glover

0

คุณยังสามารถใช้ gitignore.io ของ Joe Blau

ไม่ว่าจะผ่านทางเว็บอินเตอร์เฟสhttps://www.gitignore.io/

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

ลินุกซ์:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bashrc && source ~/.bashrc

OSX:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bash_profile && source ~/.bash_profile

จากนั้นคุณสามารถพิมพ์giตามด้วยองค์ประกอบแพลตฟอร์ม / สภาพแวดล้อมทั้งหมดที่คุณต้องการเกณฑ์ gitignore

ตัวอย่าง!
สมมติว่าคุณกำลังทำงานกับโปรเจ็กต์โหนดที่มีความฮึกเหิมและคุณกำลังใช้เว็บสตอร์มบน linux จากนั้นคุณอาจต้องการพิมพ์:
gi linux,webstorm,node,grunt > .gitignore(เพื่อสร้างไฟล์ใหม่เอี่ยม)
หรือ
gi linux,webstorm,node,grunt >> .gitignore(เพื่อต่อท้าย / เพิ่มกฎใหม่ลงในไฟล์ที่มีอยู่ )

แบมคุณไปได้ดี

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