วิธีใช้คำสั่ง gitignore ใน git


120

ฉันทำงานครั้งแรกกับคอมไพล์ ฉันได้ผลักดันสาขาของฉันบน github และมันดันไลบรารีและเอกสารทั้งหมดเข้าสู่ github ตอนนี้ฉันจะทำอย่างไรและฉันจะใช้คำสั่ง gitignore เพื่อหลีกเลี่ยงข้อผิดพลาดเดิมอีกครั้งได้อย่างไร


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

ฉันใช้ Ubuntu คุณช่วยพูดเส้นทางของ git root directory ได้
ไหม

2
git initมันเป็นไดเรกทอรีที่คุณใช้ .gitไดเรกทอรีตั้งอยู่ที่นั่น
LonelyWebCrawler

2
สำหรับผู้ที่ไม่ทราบวิธีใช้ gitignore - ไปที่gitignore.ioคุณสามารถพิมพ์เครื่องมือทั้งหมดที่คุณใช้ (symfony, CakePHP, ZendFramework, wordpress, grunt, sublime text, netbeans และอื่น ๆ คุณจะได้รับการเจาะ ... ) และจะสร้างไฟล์ละเว้นคอมไพล์ให้คุณ หากคุณไม่รู้วิธีใช้ gitignore ฉันคิดว่าวิธีที่ดีที่สุดในการเรียนรู้คือการดูตัวอย่างกรณีการใช้งานที่ดี (เช่นที่สร้างโดย gitignore.io หากคุณต้องการใช้จากบรรทัด cmd (วิธีที่เกินบรรยาย ) ดูบทช่วยสอนนี้: vimeo.com/70609819
DevWL

คำตอบ:


163

ดังนั้นขึ้นอยู่กับสิ่งที่คุณกล่าวว่าไฟล์เหล่านี้ห้องสมุด / เอกสารที่คุณไม่ต้องการที่จะลบ githubแต่ยังไม่ต้องการที่จะผลักดันการ พูดให้คุณมีโครงการของคุณในโฟลเดอร์และไดเรกทอรีเอกสาร:your_projectyour_project/doc

  1. ลบออกจากไดเร็กทอรีโครงการ (โดยไม่ต้องลบจริง): git rm --cached doc/*
  2. หากคุณไม่ได้มีอยู่แล้วคุณสามารถทำอย่างใดอย่างหนึ่งภายในขวาของโฟลเดอร์โครงการของคุณ:.gitignoreproject/.gitignore
  3. ใส่doc/*ใน. gitignore
  4. จัดเวทีไฟล์เพื่อคอมมิต: git add project/.gitignore
  5. กระทำ: git commit -m "message".
  6. githubผลักดันการเปลี่ยนแปลงของคุณไป

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

ขอบคุณสำหรับคำตอบ. ก่อนที่จะกระทำฉันต้องเรียกใช้ git add -A
user1559230

4
สวัสดี gitignore เป็นเพียงไฟล์ข้อความธรรมดา จริงๆแล้วมันคือ. gitignore (DOTgitignore) เพียงใส่ชื่อไฟล์ / ประเภทไฟล์ที่คุณต้องการให้คอมไพล์ละเว้นหนึ่งรายการต่อบรรทัด ตัวอย่าง: sujee.net/tech/articles/gitignore
u19964


42

หากคุณไม่มีไฟล์. gitignore ให้ใช้ขั้นแรก:

touch .gitignore

จากนั้นคำสั่งนี้เพื่อเพิ่มบรรทัดในไฟล์ gitignore ของคุณ:

echo 'application/cache' >> .gitignore

ระวังเรื่องเส้นใหม่


ไม่จำเป็นต้องลงtouchไฟล์ก่อน >>มีความหมายเหมือนกันกับ>ถ้าไฟล์ไม่มีอยู่แล้ว echoต่อท้ายบรรทัดใหม่ที่ส่วนท้ายของผลลัพธ์ -nคุณสามารถหยุดที่มี หากคุณต้องการละเว้นต่างๆจะทำ echos ต่างๆหรือการใช้งานเช่นต่อไปนี้:-e echo -e "**/cache/\n**.pyc" >> .gitignoreเครื่องหมายดอกจันคู่จะจับคู่ไฟล์ทั้งหมดที่ขุดลงในโฟลเดอร์แบบวนซ้ำเช่นกัน ใช้/ในตอนท้ายของโฟลเดอร์ในกรณี
mazunki

1
@Andrew tl; dr: เพิ่มไฟล์ที่ละเว้นโดยecho "file_to_be_ignored" >> .gitignoreไม่ต้องทำอะไรอีก จบชื่อโฟลเดอร์ที่มีฐานะ/ echo "**/modules/" >> .gitignore
mazunki

ทำไมความคิดเห็นของฉันจึงถูกลบ
Andrew

12

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

เช่นเดียวกันคุณสามารถ "ให้ความสนใจ" ไฟล์บางอย่างในโครงสร้างลึกหรือส่วนย่อยเฉพาะ (เช่นคุณไม่สนใจ .log * แต่ต้องการที่จะยังคงติดตาม important.log) !โดยรูปแบบการระบุเริ่มต้นด้วย เช่น:

*.log !important.log

จะละเว้นไฟล์บันทึกทั้งหมด แต่จะติดตามไฟล์ที่ชื่อ important.log

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

# delete files that should be ignored, or untrack them with 
# git rm --cached <file list or pattern>

# stage all the changes git commit
git add -A 

จากนี้ไปที่เก็บของคุณจะไม่มีการติดตาม

หากคุณต้องการล้างประวัติคุณสามารถทำได้

# if you want to correct the last 10 commits
git rebase -i --preserve-merges HEAD~10 

แล้วทำเครื่องหมายกระทำแต่ละคนมีหรือe editบันทึกแผน ตอนนี้คอมไพล์จะเล่นซ้ำประวัติของคุณโดยหยุดที่การกระทำแต่ละครั้งที่คุณทำเครื่องหมายด้วย e ที่นี่คุณจะลบไฟล์ที่คุณไม่ต้องการgit add -Aจากนั้นgit rebase --continueจนกว่าคุณจะเสร็จสิ้น ประวัติของคุณจะสะอาด อย่าลืมบอกเพื่อนร่วมงานเพราะคุณจะต้องผลักดันและพวกเขาจะต้องตั้งฐานใหม่ในสิ่งที่พวกเขายังไม่ได้ผลักดัน


8

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

*~

หากคุณต้องการลบไฟล์ที่ไม่ต้องการออกจากสาขาของคุณคุณสามารถใช้git add -Aซึ่ง " ลบไฟล์ที่ไม่อยู่ในโครงสร้างการทำงานอีกต่อไป "

หมายเหตุ: สิ่งที่ฉันเรียกว่า "git root directory" เป็นเพียงไดเร็กทอรีที่คุณใช้git initเป็นครั้งแรก นอกจากนี้ยังเป็นที่ที่คุณสามารถค้นหา.gitไดเร็กทอรี


จะเกิดอะไรขึ้นกับไฟล์ที่
พุช

4

หากคุณไม่มีไฟล์. gitignore คุณสามารถสร้างใหม่ได้โดย

touch .gitignore

และคุณสามารถแยกโฟลเดอร์ได้โดยป้อนคำสั่งด้านล่างในไฟล์. gitignore

/folderName

พุชไฟล์นี้ลงในที่เก็บ git ของคุณเพื่อที่ว่าเมื่อคนใหม่โคลนโปรเจ็กต์ของคุณเขาไม่ต้องเพิ่มมันอีก


2

มีหลายวิธีในการใช้ gitignore git

  • ระบุโดยชื่อไฟล์เฉพาะ ตัวอย่างเช่นหากต้องการละเว้นไฟล์
    ชื่อ readme.txt เพียงแค่ต้องเขียน readme.txt ในไฟล์. gitignore
  • คุณยังสามารถเขียนชื่อนามสกุลไฟล์ ตัวอย่างเช่นหากต้องการ
    ละเว้นไฟล์. txt ทั้งหมดให้เขียน * .txt
  • คุณยังสามารถละเว้นทั้งโฟลเดอร์ได้ ตัวอย่างเช่นคุณต้องการละเว้น
    โฟลเดอร์ชื่อ test จากนั้นเขียนทดสอบ / ในไฟล์

เพียงสร้างไฟล์. gitignore และเขียนสิ่งที่คุณต้องการละเว้นไฟล์ gitignore ตัวอย่างจะเป็น:

# NPM packages folder.
node_modules

# Build files
dist/

# lock files
yarn.lock
package-lock.json

# Logs
logs
*.log
npm-debug.log*

# node-waf configuration
.lock-wscript

# Optional npm cache directory
.npm

# Optional REPL history
.node_repl_history

# Jest Coverage
coverage

.history/

คุณสามารถค้นหาเพิ่มเติมได้ที่git documentation gitignore


1

บน mac ของฉันฉันพบไฟล์นี้.gitignore_global .. มันอยู่ในโฮมไดเร็กทอรีของฉันที่ซ่อนอยู่ดังนั้นให้ทำการls -altrดู

ฉันเพิ่มไฟล์ eclipse ฉันต้องการให้คอมไพล์ละเว้น เนื้อหามีลักษณะดังนี้:

 *~
.DS_Store
.project
.settings
.classpath
.metadata

เมื่อฉันใส่ไฟล์. gitignore ในโฟลเดอร์โปรเจ็กต์ของฉันมันทำให้โปรเจ็กต์ eclipse ของฉันวุ่นวาย รู้ไหมว่าทำไมถึงเกิดขึ้นได้และจะป้องกันได้อย่างไร ?? ตอนนี้ฉันแค่อยู่ห่างจาก. gitignore
JesseBoyd

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