ฉันจะละเว้น.pycไฟล์ใน git ได้อย่างไร
ถ้าใส่.gitignoreแล้วไม่ได้ผล ฉันต้องการให้พวกเขาไม่ถูกติดตามและไม่ถูกตรวจสอบการกระทำ
ฉันจะละเว้น.pycไฟล์ใน git ได้อย่างไร
ถ้าใส่.gitignoreแล้วไม่ได้ผล ฉันต้องการให้พวกเขาไม่ถูกติดตามและไม่ถูกตรวจสอบการกระทำ
คำตอบ:
.gitignoreใส่ไว้ใน แต่จากgitignore(5)หน้าคน:
· If the pattern does not contain a slash /, git treats it as a shell glob pattern and checks for a match against the pathname relative to the location of the .gitignore file (relative to the toplevel of the work tree if not from a .gitignore file). · Otherwise, git treats the pattern as a shell glob suitable for consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname. For example, "Documentation/*.html" matches "Documentation/git.html" but not "Documentation/ppc/ppc.html" or "tools/perf/Documentation/perf.html".
ดังนั้นให้ระบุพา ธ แบบเต็มไปยัง*.pycรายการที่เหมาะสมหรือวางไว้ใน.gitignoreไฟล์ในไดเร็กทอรีใด ๆ ที่นำมาจากรูทที่เก็บ (รวม)
คุณควรเพิ่มบรรทัดด้วย:
*.pyc
ไปยัง.gitignoreไฟล์ในโฟลเดอร์รูทของโครงสร้างที่เก็บ git ของคุณทันทีหลังจากการเริ่มต้นที่เก็บข้อมูล
ดังที่ralphtheninjaกล่าวไว้หากคุณลืมทำไว้ล่วงหน้าหากคุณเพิ่งเพิ่มบรรทัดลงใน.gitignoreไฟล์ไฟล์ที่ผูกมัดก่อนหน้านี้.pycทั้งหมดจะยังคงถูกติดตามดังนั้นคุณจะต้องลบออกจากที่เก็บ
หากคุณใช้ระบบ Linux (หรือ "ผู้ปกครองและบุตรชาย" เช่น MacOSX) คุณสามารถทำได้อย่างรวดเร็วด้วยคำสั่งบรรทัดเดียวที่คุณต้องดำเนินการจากรากของที่เก็บ:
find . -name "*.pyc" -exec git rm -f "{}" \;
นี่หมายความว่า:
เริ่มต้นจากไดเร็กทอรีที่ฉันอยู่ในปัจจุบันค้นหาไฟล์ทั้งหมดที่มีชื่อลงท้ายด้วยนามสกุล
.pycและส่งชื่อไฟล์ไปยังคำสั่งgit rm -f
หลังจาก*.pycลบไฟล์จาก git เป็นไฟล์ที่ติดตามแล้วให้ทำการเปลี่ยนแปลงนี้กับที่เก็บจากนั้นคุณสามารถเพิ่ม*.pycบรรทัดลงใน.gitignoreไฟล์ได้ในที่สุด
(ดัดแปลงจากhttp://yuji.wordpress.com/2010/10/29/git-remove-all-pyc/ )
คุณอาจจะได้เพิ่มพื้นที่เก็บข้อมูลให้พวกเขาก่อนที่จะวางใน*.pyc
ก่อนอื่นให้ลบออกจากที่เก็บ.gitignore
ฉันพยายามใช้ประโยคของโพสต์ก่อนหน้าและไม่ทำงานซ้ำจากนั้นอ่านความช่วยเหลือและรับบรรทัดนี้:
find . -name "*.pyc" -exec git rm -f "{}" \;
pd จำเป็นต้องเพิ่ม * .pyc ในไฟล์. gitignore เพื่อรักษา git ให้สะอาด
echo "*.pyc" >> .gitignore
สนุก.
หากคุณต้องการละเว้นไฟล์ ".pyc" ทั่วโลก (เช่นหากคุณไม่ต้องการเพิ่มบรรทัดในไฟล์. gitignore ในทุกไดเร็กทอรี git) ให้ลองทำดังต่อไปนี้:
$ cat ~/.gitconfig
[core]
excludesFile = ~/.gitignore
$ cat ~/.gitignore
**/*.pyc
[อ้างอิง]
https://git-scm.com/docs/gitignore
รูปแบบที่ผู้ใช้ต้องการให้ Git ละเว้นในทุกสถานการณ์ (เช่นการสำรองข้อมูลหรือไฟล์ชั่วคราวที่สร้างโดยตัวแก้ไขที่ผู้ใช้เลือก) โดยทั่วไปจะอยู่ในไฟล์ที่ระบุโดย core.excludesFile ใน ~ / .gitconfig ของผู้ใช้
"**" นำหน้าตามด้วยเครื่องหมายทับหมายถึงการจับคู่ในไดเรกทอรีทั้งหมด ตัวอย่างเช่น "** / foo" จะจับคู่ไฟล์หรือไดเรกทอรี "foo" ที่ใดก็ได้เช่นเดียวกับรูปแบบ "foo" "** / foo / bar" จับคู่ไฟล์หรือไดเร็กทอรี "bar" ที่ใดก็ได้ที่อยู่ภายใต้ไดเร็กทอรี "foo" โดยตรง
ขอบคุณ @Enrico สำหรับคำตอบ
โปรดทราบว่าคุณใช้ Virtualenv หรือไม่คุณจะมี.pycไฟล์อีกหลายไฟล์ภายในไดเร็กทอรีที่คุณกำลังอยู่ซึ่งจะถูกจับโดยคำสั่ง find ของเขา
ตัวอย่างเช่น:
./app.pyc
./lib/python2.7/_weakrefset.pyc
./lib/python2.7/abc.pyc
./lib/python2.7/codecs.pyc
./lib/python2.7/copy_reg.pyc
./lib/python2.7/site-packages/alembic/__init__.pyc
./lib/python2.7/site-packages/alembic/autogenerate/__init__.pyc
./lib/python2.7/site-packages/alembic/autogenerate/api.pyc
ฉันคิดว่าการลบไฟล์ทั้งหมดนั้นไม่เป็นอันตราย แต่ถ้าคุณต้องการลบ.pycไฟล์ในไดเร็กทอรีหลักของคุณเพียงแค่ทำ
find "*.pyc" -exec git rm -f "{}" \;
สิ่งนี้จะลบเฉพาะapp.pycไฟล์ออกจากที่เก็บ git