ไฟล์ไดเร็กตอรี่. aide


306

ฉันตั้งใจ.idea/คอมมิทไดเรกทอรีเป็น git นี่เป็นสาเหตุของความขัดแย้งในทุกที่ที่ฉันต้องเช็คเอาต์ repo ของฉัน ฉันสงสัยว่าฉันจะลบไฟล์เหล่านี้จากรีโมทได้อย่างไร

ฉันยังต้องการไฟล์เหล่านี้ในเครื่องเนื่องจาก Intellij IDE ต้องการมัน ฉันแค่ไม่ต้องการพวกมันในที่ห่างไกล ฉันได้เพิ่มไดเรกทอรี.idea/ของฉัน.gitignoreและมุ่งมั่นและผลักไฟล์นี้เป็นระยะไกล สิ่งนี้ดูเหมือนว่าจะไม่มีผลในระหว่างการชำระเงินของฉันในเครื่องอื่นของฉัน ฉันยังได้รับข้อความแสดงข้อผิดพลาด:

error: The following untracked working tree files would be overwritten by checkout:
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/uiDesigner.xml
.idea/vcs.xml
.idea/workspace.xml

10
คุณสามารถช่วยหลีกเลี่ยงปัญหานี้ได้ในอนาคตโดยตรวจสอบความมุ่งมั่นของคุณ ฉันชอบที่จะทำงานcommitกับ-vเพื่อแสดงความแตกต่างในการแก้ไขของคุณเมื่อคุณเขียนความมุ่งมั่น มันช่วยป้องกันความผิดพลาดประเภทนี้รวมทั้งช่วยให้คุณมุ่งเน้นที่ข้อความยืนยันในสิ่งที่คุณเปลี่ยนแปลง
Daenyth

Daenyth ถูกต้อง Plus Git โดยค่าเริ่มต้นคุณจะต้องเพิ่มไฟล์ในรายการการเปลี่ยนแปลงที่ทำดังนั้นจึงควรใช้และไม่ยอมรับทุกสิ่งในครั้งเดียว มิฉะนั้นคุณจะทำให้ที่เก็บข้อมูลของคุณสกปรกตามที่เกิดขึ้นโดยการเพิ่ม.ideaเข้าไป
Tadeck

1
ทั้งหมดยกเว้นสองไฟล์ใน .idea ควรอยู่ในการควบคุมแหล่งที่มา: devnet.jetbrains.com/docs/DOC-1186
cja

ฉันพบปลั๊กอิน IntelliJ .ignore มีประโยชน์มากเมื่อคุณต้องการจัดการไฟล์ทั้งหมดที่ไม่ควรมุ่งมั่นในการคอมไพล์: plugins.jetbrains.com/plugin/7495?pr=idea
paranza

สวัสดีสิ่งที่เป็นอันตรายจากการที่ถ้าเรามี. videoa ในพื้นที่เก็บข้อมูลระยะไกล?
milad salimi

คำตอบ:


676

เพิ่มไดเรกทอรี .idea ไปยังรายการไฟล์ที่ถูกละเว้น

ก่อนอื่นให้เพิ่มเข้าไป.gitignoreดังนั้นคุณจึงไม่ได้รับมอบหมาย (หรือบุคคลอื่น) โดยไม่ได้ตั้งใจ:

.idea

ลบออกจากที่เก็บ

อันดับที่สองลบไดเรกทอรีออกจากที่เก็บเท่านั้น แต่อย่าลบทิ้ง เพื่อให้บรรลุสิ่งนั้นให้ทำสิ่งที่ระบุไว้ที่นี่

ลบไฟล์ออกจากที่เก็บ Git โดยไม่ต้องลบออกจากระบบไฟล์ในเครื่อง

ส่งการเปลี่ยนแปลงให้ผู้อื่น

ประการที่สามกระทำ.gitignoreไฟล์และการลบออก.ideaจากพื้นที่เก็บข้อมูล หลังจากนั้นดันไปยังรีโมต

สรุป

กระบวนการทั้งหมดจะเป็นดังนี้:

$ echo '.idea' >> .gitignore
$ git rm -r --cached .idea
$ git add .gitignore
$ git commit -m '(some message stating you added .idea to ignored entries)'
$ git push

(เป็นทางเลือกคุณสามารถแทนที่บรรทัดสุดท้ายด้วยgit push some_remoteซึ่งsome_remoteเป็นชื่อของรีโมตที่คุณต้องการพุชไป)


4
หมายเหตุ: หากคุณได้รับข้อความfatal: pathspec '.idea' did not match any filesเมื่อคุณเรียกใช้git rm -r --cached .ideaให้ลบโฟลเดอร์ .idea ของคุณดึงจาก github แล้วลองอีกครั้ง
annedroiid

หากคุณได้รับข้อผิดพลาด @annedroiid ของ 'ไม่ตรงกับไฟล์ใด ๆ ' คุณสามารถลองและเพิ่มเส้นทางของมันได้ เช่นเดียวกับตอนที่ฉันลบไฟล์ database.yml ฉันก็แค่ 'git rm -r --cached config / database.yml'
Ruto Collins

ไฟล์บางไฟล์ในไดเรกทอรี .idea ควรตรวจสอบใน repo ของคุณ ดูgithub.com/github/gitignore/blob/master/Global/ ......สำหรับคำแนะนำของ JetBrains เกี่ยวกับลักษณะที่ว่า. gitignore ของคุณควรเป็นอย่างไร
tokenizer_fsj

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

1
เรามีวิธีแก้ไขปัญหาอย่างถาวรสำหรับสิ่งนี้เพื่อตั้งค่าเป็น IntelliJ ไม่เคยเพิ่ม.ideaโฟลเดอร์เพื่อส่งไฟล์หรือไม่?
Serhat

88

คุณสามารถลบมันออกจาก repo และยอมรับการเปลี่ยนแปลง

git rm .idea/ -r --cached
git add -u .idea/
git commit -m "Removed the .idea folder"

หลังจากนั้นคุณสามารถผลักดันมันไปยังระยะไกลและเช็คเอาต์ / โคลนทุกครั้งหลังจากนั้นจะตกลง


10
สิ่งนี้ใช้ได้กับฉันตรงข้ามกับคำตอบที่ยอมรับได้ บางทีมันอาจจะเป็น add -u ที่สร้างความแตกต่าง
เปาโล Mioni

คุณไม่ต้องการบรรทัดที่ 2
kjdion84

อย่างที่คนอื่นพูดฉันไม่ได้ทำงานที่สอง ทำงานเหมือนจับใจ! ขอบคุณ
blackkara

0

คุณควรเพิ่มไฟล์. gignignoreให้กับโครงการของคุณและเพิ่ม/.ideaเข้าไป คุณควรเพิ่มแต่ละไดเรกทอรี / ไฟล์ในหนึ่งบรรทัด

หากคุณมีไฟล์. gitignoreอยู่แล้วคุณควรเพิ่มบรรทัดใหม่ลงในไฟล์และใส่/.ideaลงในบรรทัดใหม่

หลังจากนั้นเรียกใช้git rm -r --cached .ideaคำสั่ง

หากคุณพบข้อผิดพลาดคุณสามารถเรียกใช้git rm -r -f --cached .ideaคำสั่ง หลังจากทั้งหมดทำงานgit add .และจากนั้นgit commit -m "Removed .idea directory and added a .gitignore file"และในที่สุดก็ผลักดันการเปลี่ยนแปลงโดยใช้git pushคำสั่ง


0

มันดีกว่าที่จะทำสิ่งนี้กับสาขาของอาจารย์

แก้ไขไฟล์. gignignore เพิ่มบรรทัดด้านล่างในนั้น

.idea

ลบโฟลเดอร์ .idea จาก repo ระยะไกล ใช้คำสั่งด้านล่าง

git rm -r --cached .idea

สำหรับข้อมูลเพิ่มเติม การอ้างอิง: การลบไฟล์ออกจากที่เก็บ Git โดยไม่มีการลบออกจริง

ไฟล์ Stage .gitignore ใช้คำสั่งด้านล่าง

git add .gitignore

ผูกมัด

git commit -m 'Removed .idea folder'

กดไปที่รีโมท

git push origin master

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