ฉันมีที่เก็บพร้อมไฟล์Hello.java
. เมื่อฉันรวบรวมมันHello.class
ไฟล์เพิ่มเติมจะถูกสร้างขึ้น
ฉันสร้างรายการสำหรับHello.class
ใน.gitignore
ไฟล์ อย่างไรก็ตามไฟล์ดังกล่าวยังคงถูกติดตาม
ฉันจะทำให้ Git เพิกเฉยได้Hello.class
อย่างไร
ฉันมีที่เก็บพร้อมไฟล์Hello.java
. เมื่อฉันรวบรวมมันHello.class
ไฟล์เพิ่มเติมจะถูกสร้างขึ้น
ฉันสร้างรายการสำหรับHello.class
ใน.gitignore
ไฟล์ อย่างไรก็ตามไฟล์ดังกล่าวยังคงถูกติดตาม
ฉันจะทำให้ Git เพิกเฉยได้Hello.class
อย่างไร
คำตอบ:
ปัญหาคือ.gitignore
ละเว้นไฟล์ที่ไม่ได้ติดตามมาก่อน (โดยgit add
) รันgit reset name_of_file
เพื่อเลิกเก็บไฟล์และเก็บไว้ ในกรณีที่คุณต้องการที่จะยังเอาไฟล์ที่ได้รับจากพื้นที่เก็บข้อมูล (หลังจากการผลักดัน), git rm --cached name_of_file
การใช้งาน
git rm --cached name_of_file
จะลบไฟล์ออกจาก repo git ของคุณ แม้ว่าคุณจะเพิ่มลงในไฟล์. gitignore ของคุณ ที่ไม่ได้สนใจที่จะลบ
git reset name_of_file
ลบการติดตามและไม่ลบไฟล์
วิธีเพิกเฉยไฟล์ใหม่
ทั่วโลก
เพิ่มเส้นทางไปยังไฟล์ที่คุณต้องการเพิกเฉย .gitignore
ไฟล์ (และคอมมิท) รายการไฟล์เหล่านี้จะใช้กับผู้อื่นที่ตรวจสอบที่เก็บข้อมูล
ในท้องถิ่น
เพิ่มเส้นทางไปยังไฟล์ของคุณซึ่งคุณต้องการเพิกเฉยต่อ.git/info/exclude
ไฟล์ของคุณ รายการไฟล์เหล่านี้จะใช้กับสำเนาการทำงานในท้องถิ่นของคุณเท่านั้น
วิธีละเว้นไฟล์ที่ถูกเปลี่ยนแปลง (ชั่วคราว)
ในการเพิกเฉยไฟล์ที่ถูกเปลี่ยนแปลงเพื่อแสดงรายการว่าถูกแก้ไขคุณสามารถใช้คำสั่ง git ต่อไปนี้:
git update-index --assume-unchanged <file>
หากต้องการคืนค่าความไม่รู้นั้นให้ใช้คำสั่งต่อไปนี้:
git update-index --no-assume-unchanged <file>
local
ละเว้นคอมไพล์แล้วรีสตาร์ทระบบของฉันมันยังคงแสดงว่าทำงานได้โดยตรง
update-index
เคล็ดลับที่มีประโยชน์สมบูรณ์แบบเพื่อหลีกเลี่ยงการเปลี่ยนแปลง.gitignore
ไฟล์ซึ่งถูกติดตามโดย Git!
เพิ่มบรรทัดต่อไปนี้ใน. gitignore:
/Hello.class
สิ่งนี้จะยกเว้น Hello.class จาก git หากคุณยืนยันแล้วให้รันคำสั่งต่อไปนี้:
git rm Hello.class
ถ้าคุณต้องการแยกไฟล์คลาสทั้งหมดออกจาก git ให้เพิ่มบรรทัดต่อไปนี้ใน. gitignore:
*.class
Hello.class
ลงใน.gitignore
จะไม่สนใจไฟล์ใด ๆ ที่เรียกว่าHello.class
ในไดเรกทอรีย่อย หากคุณต้องการละเว้นไฟล์Hello.class
ในไดเรกทอรีเดียวกับ.gitignore
ไฟล์ให้ใช้/Hello.class
บรรทัดแทน
.gitignore
ไฟล์ไว้ที่ไหน
.gitignore
ที่ใดก็ได้ในโครงการคอมไพล์ - หากเส้นทางเริ่มต้นด้วย/
มันจะสัมพันธ์กับตำแหน่งของ.gitignore
ไฟล์; มิฉะนั้นจะอ้างถึงไฟล์ซ้ำในไดเรกทอรีปัจจุบันและไดเรกทอรีที่สืบทอด
1) สร้าง.gitignore
ไฟล์ ในการทำเช่นนั้นคุณเพียงสร้าง.txt
ไฟล์และเปลี่ยนนามสกุลดังนี้:
จากนั้นคุณต้องเปลี่ยนชื่อเขียนบรรทัดต่อไปนี้ในหน้าต่าง cmd:
rename git.txt .gitignore
ในกรณีที่git.txt
เป็นชื่อของไฟล์ที่คุณเพิ่งสร้าง
จากนั้นคุณสามารถเปิดไฟล์และเขียนไฟล์ทั้งหมดที่คุณไม่ต้องการเพิ่มลงในที่เก็บ ตัวอย่างเช่นของฉันมีลักษณะเช่นนี้:
#OS junk files
[Tt]humbs.db
*.DS_Store
#Visual Studio files
*.[Oo]bj
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.[Cc]ache
*.ilk
*.log
*.lib
*.sbr
*.sdf
*.pyc
*.xml
ipch/
obj/
[Bb]in
[Dd]ebug*/
[Rr]elease*/
Ankh.NoLoad
#Tooling
_ReSharper*/
*.resharper
[Tt]est[Rr]esult*
#Project files
[Bb]uild/
#Subversion files
.svn
# Office Temp Files
~$*
เมื่อคุณมีสิ่งนี้แล้วคุณจะต้องเพิ่มมันเข้าไปในที่เก็บ Git ของคุณ คุณต้องบันทึกไฟล์ในที่เก็บของคุณ
จากนั้นใน Git Bash คุณต้องเขียนบรรทัดต่อไปนี้:
git config --global core.excludesfile ~/.gitignore_global
หากที่เก็บมีอยู่แล้วคุณต้องทำดังต่อไปนี้:
git rm -r --cached .
git add .
git commit -m ".gitignore is now working"
หากขั้นตอนที่ 2 ไม่ทำงานคุณควรเขียนเส้นทางทั้งหมดของไฟล์ที่คุณต้องการเพิ่ม
วิธีเพิกเฉย:
git update-index --assume-unchanged <path/to/file>
หากต้องการยกเลิกการเพิกเฉย:
git update-index --no-assume-unchanged <path/to/file>
lstat(2)
ค่าใช้จ่ายเพิ่มเติมขอสงวนสิทธิ์ในการรายงานว่าเส้นทางได้รับการแก้ไข (... git commit -a
มีอิสระที่จะยอมรับการเปลี่ยนแปลงนั้น) '
คุณสามารถใช้วิธีการด้านล่างเพื่อเพิกเฉย / ไม่สนใจการเปลี่ยนแปลงในไฟล์ที่ถูกติดตาม
git update-index --assume-unchanged <file>
git update-index --no-assume-unchanged <file>
lstat(2)
ค่าใช้จ่ายเพิ่มเติมขอสงวนสิทธิ์ในการรายงานว่าเส้นทางได้รับการแก้ไข (... git commit -a
มีอิสระที่จะยอมรับการเปลี่ยนแปลงนั้น) '
สร้าง.gitignore
ในไดเรกทอรีที่เป็น. git คุณสามารถแสดงรายการไฟล์ในไฟล์โดยคั่นด้วยบรรทัดใหม่ คุณยังสามารถใช้สัญลักษณ์แทน:
*.o
.*.swp
.gitignore
ไฟล์ (เว้นแต่ว่าโครงการนั้นได้รับคำสั่งจากโครงการ) คุณสามารถใส่รูปแบบสำหรับเครื่องมือที่คุณชื่นชอบในไฟล์แยกตามผู้ใช้ (ชุดcore.excludesFile
); มันจะทำงานกับที่เก็บข้อมูลทั้งหมดของคุณ เช่นgit config --global core.excludesFile "$HOME/.git-user-excludes"
วางไว้ในไฟล์นั้น
จากเว็บไซต์ GitHub อย่างเป็นทางการ:
หากคุณมีไฟล์อยู่แล้วและคุณต้องการเพิกเฉยมัน Git จะไม่เพิกเฉยต่อไฟล์หากคุณเพิ่มกฎในภายหลัง ในกรณีดังกล่าวคุณต้องยกเลิกการติดตามไฟล์ก่อนโดยรันคำสั่งต่อไปนี้ในเทอร์มินัลของคุณ:
git rm --cached FILENAME
หรือ
git rm --cached .
คุณควรเขียนสิ่งที่ชอบ
*.class
ลงใน.gitignore
ไฟล์ของคุณ
*.class
ของคุณ.gitignore
เพื่อให้คอมไพล์ละเว้นไฟล์ทั้งหมดที่ลงท้าย.class
ด้วย
เพิ่มไฟล์ที่คุณต้องการละเว้นไฟล์.gitignore
:
* .class
* .projects
* .prefs
*.โครงการ
โดยการสร้างไฟล์. gitignore ดูรายละเอียดที่นี่: Git Book - ละเว้นไฟล์
ตรวจสอบสิ่งนี้ด้วย: คุณจะทำให้ Git เพิกเฉยไฟล์โดยไม่ใช้. gitignore ได้อย่างไร?
หากคุณยืนยันไฟล์แล้วและคุณพยายามที่จะเพิกเฉยต่อการเพิ่ม.gitignore
ไฟล์ Git จะไม่เพิกเฉย เพื่อที่คุณจะต้องทำสิ่งต่าง ๆ ด้านล่าง:
git rm --cached FILENAME
หากคุณกำลังเริ่มโครงการใหม่และคุณต้องการเพิ่มไฟล์บางอย่างใน Git ละเว้นให้ทำตามขั้นตอนด้านล่างเพื่อสร้างไฟล์ Git ที่ไม่สนใจ:
.gitignore
ไฟล์คุณยังสามารถใช้. gitattributes (แทน. gitignore) เพื่อยกเว้นประเภทไฟล์ทั้งหมด ไฟล์อธิบายตัวเองได้ค่อนข้างสวย แต่ฉันกำลังวางเนื้อหาที่นี่เพื่อการอ้างอิง ให้ความสนใจกับบรรทัดสุดท้าย (* .class binary):
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.mo binary
*.pdf binary
*.phar binary
*.class binary
เพิ่มบรรทัดต่อไปนี้ใน. git / info / แยก:
Hello.class
.git
หรือไม่?
ฉันมีปัญหาคล้ายกับไฟล์ "dump.rdb"
ฉันพยายามเพิ่มไฟล์นี้ในรูปแบบต่างๆลงในไฟล์. gignignore แต่ใช้วิธีการเดียวเท่านั้น
เพิ่มชื่อไฟล์ของคุณที่ท้ายไฟล์. gitignore
หมายเหตุ: การเพิ่มไฟล์ในที่อื่นไม่ทำงาน
ตัวอย่างเช่นดู: https://gitlab.com/gitlab-org/gitlab-ce/raw/b3ad3f202478dd88a3cfe4461703bc3df1019f90/.gitignore
หน้าเว็บนี้อาจมีประโยชน์และประหยัดเวลาเมื่อทำงานกับ.gitignore
อาจจะมีประโยชน์และประหยัดเวลาเมื่อทำงานกับ
มันจะสร้างไฟล์. gignignore โดยอัตโนมัติสำหรับ IDE และระบบปฏิบัติการที่แตกต่างกันด้วยไฟล์ / โฟลเดอร์เฉพาะที่คุณมักไม่ต้องการดึงไปยังที่เก็บ Git ของคุณ (เช่นโฟลเดอร์เฉพาะของ IDE และไฟล์กำหนดค่า)
ฉันลองสิ่งนี้ -
git status
.idea/xyz.xml
.idea/pqr.iml
Output
.DS_Store
echo "
.idea/xyz.xml
.idea/pqr.iml
Output
.DS_Store" >> .gitignore
git status
.gitignore
ในทำนองเดียวกันเราสามารถเพิ่มไดเรกทอรีและ dir ย่อยทั้งหมดของมัน / ไฟล์ที่เราต้องการที่จะละเว้นในสถานะ git โดยใช้directoryname/*
และฉันดำเนินการคำสั่งนี้จากsrc
ไดเรกทอรี
git rm -r --cached .
git add .
ฉันได้ลอง--assume-unchanged
และยัง.gitignore
ไม่ดี พวกเขาทำให้มันยากที่จะสลับสาขาและยากที่จะรวมการเปลี่ยนแปลงจากคนอื่น นี่คือทางออกของฉัน:
เมื่อฉันยืนยันฉันจะลบไฟล์ออกจากรายการด้วยตนเองการเปลี่ยนแปลง
ก่อนที่ฉันจะดึงฉันเก็บไฟล์ที่ถูกเปลี่ยนแปลง และหลังจากที่ดึงผมทำป๊อปซ่อน
ขั้นตอนที่ 3 บางครั้งจะทำให้เกิดการรวมและอาจทำให้เกิดความขัดแย้งที่คุณต้องแก้ไขซึ่งเป็นสิ่งที่ดี
สิ่งนี้ทำให้ฉันสามารถทำการเปลี่ยนแปลงในท้องถิ่นที่ไม่ได้แชร์กับผู้อื่นในทีม