سؤال

هذا السؤال لديه بالفعل إجابة هنا:

لدي مستودع جيت تهيئة بالفعل قمت بإضافة .gitignore ملف إلى. كيف يمكنني تحديث فهرس الملف بحيث يتم تجاهل الملفات التي أريد تجاهلها؟

هل كانت مفيدة؟

المحلول

إلى Untrack أ غير مرتبطة ملف تم إضافته بالفعل / تهيئة إلى مستودعك، بمعنى آخر, ، توقف عن تتبع الملف ولكن لا يحذفه من استخدام النظام الخاص بك: git rm --cached filename

إلى Untrack. كل ملف الآن في حياتك .gitignore:

ارتكب أولا أي تغييرات رائعة, ثم، قم بتشغيل هذا الأمر:

git rm -r --cached .

هذا يزيل أي ملفات غيرت من فهرس(منطقة التدريج)، ثم تشغيل فقط:

git add .

ارتكبها:

git commit -m ".gitignore is now working"

للتراجع git rm --cached filename, ، استعمال git add filename.

تأكد من ارتكاب جميع التغييرات المهمة قبل التشغيل git add . خلاف ذلك، سوف تفقد أي تغييرات على الملفات الأخرى.

نصائح أخرى

إذا كنت تحاول تجاهل التغييرات في ملف تم تتبعه بالفعل في المستودع (مثل ملف Dev.Properties الذي ستحتاج إلى تغييره في بيئتك المحلية، لكنك لن ترغب أبدا في التحقق من هذه التغييرات) من ما تريد القيام به يكون:

git update-index --assume-unchanged <file>

إذا كنت تريد أن تبدأ في تتبع التغييرات مرة أخرى

git update-index --no-assume-unchanged <file>

يرى GIT-Update-Index (1) صفحة يدوية.

أيضا إلقاء نظرة على skip-worktree و no-skip-worktree خيارات لتحديث الفهرس إذا كنت بحاجة إلى هذا لاستمرار في الماضي إعادة تعيين GIT (عبر)


تحديث: نظرا لأن الأشخاص يسألون، إليك هنا مريحة (وتحديثا منذ ذلك الحين على أساس أدناه) لرؤية الملفات التي يتم "تجاهلها" حاليا (- دون تغيير) في مساحة عملك المحلية

$ git config --global alias.ignored = !git ls-files -v | grep "^[[:lower:]]"

لإعادة إخراج ملف تم إضافته بالفعل / تهيئه إلى مستودعك، أي التوقف عن تتبع الملف ولكن لا يحذفه من استخدام النظام الخاص بك: git rm --cached filename

نعم - .gitignore يتجاهل النظام فقط الملفات غير الموجودة حاليا تحت عنصر تحكم الإصدار من GIT.

أي إذا كنت قد أضفت بالفعل ملف يسمى test.txt استخدام git-add, ، ثم مضيفا test.txt ل .gitignore سوف لا تزال تتسبب في تغييرات test.txt لتتبعها.

سيكون لديك ل git rm test.txt أولا وارتكب هذا التغيير. فقط ثم سوف يتغير إلى test.txt يتم تجاهلها.

إزالة whitespace زائدة في. gitignore

أيضا، تأكد من عدم وجود Whitespace زائدة في .gitignore الخاص بك. حصلت على هذا السؤال لأنني كنت أبحث عن إجابة، ثم كان لدي شعور مضحك يجب أن أفتح المحرر بدلا من القطط فقط. gitignore. إزالة مساحة واحدة إضافية من النهاية و بوف انه يعمل الان :)

اتبعت هذه الخطوات

git rm -r --cached .
git add .
git reset HEAD

بعد ذلك، حذف GIT جميع الملفات (* .wp في حالتي) التي يجب أن تتجاهلها.

إذا كنت ترغب في إيقاف تتبع الملف دون حذف الملف من النظام المحلي الخاص بك، فإنني أفضل تجاهل config/database.yml ملف. ببساطة حاول:

git rm --cached config/database.yml
# this will delete your file from git history but not from your local system.

الآن، أضف هذا الملف إلى .gitignore ملف وارتكاب التغييرات. من الآن فصاعدا، لن يتم تتبع أي تغييرات تم إجراؤها على التكوين / قاعدة البيانات.

$ echo config/database.yml >> .gitignore

شكرا

إجابات معقدة في كل مكان!

فقط استخدم ما يلي

git rm -r --cached .

سيقوم بإزالة الملفات التي تحاول تجاهلها من الأصل وليس من السيد على جهاز الكمبيوتر الخاص بك!

بعد ذلك الالتزام والدفع!

لإزالة عدد قليل من الملفات المحددة فقط من تعقبها:

git update-index --assume-unchanged path/to/file

إذا كنت تريد أن تبدأ في تتبع ذلك مرة أخرى:

git update-index --no-assume-unchanged path/to/file                      

كما يقول DAV_I، من أجل الحفاظ على الملف في Repo ومع ذلك إزالته من التغييرات دون إنشاء ارتكاب إضافي، يمكنك استخدامه:

git update-index --assume-unchanged filename

عدم معرفة ما فعلت أمر "الإجابة"، لقد ركضت، الكثير ل disay. يزيل بشكل متكرر كل ملف من Repo Git الخاص بك.

stackoverflow إلى الإنقاذ ... كيفية العودة "جيت RM -R"؟

git reset HEAD

هل كانت الخدعة، لأنني تعاني من ملفات محلية غير ملزمة لا أريد الكتابة فوقها.

هناك اقتراح آخر ربما للرجال البطيء مثلي =) ضع .gitignore. ملف في جذر مستودع الخاص بك ليس في .شخص سخيف مجلد. هتافات!

أيا من الإجابات عملت بالنسبة لي.

في حين أن:

  1. انقل الملف من الدليل الذي يتم التحكم فيه GIT
  2. تحقق من الإزالة في جيت
  3. انقل الملف مرة أخرى إلى الدليل الذي يتم التحكم فيه

بعد نقل الملف مرة أخرى، سوف يتجاهلها GIT.

يعمل مع الدلائل أيضا!

مشكلة أخرى كنت قد قدمت تعليق مضمون.

tmp/*   # ignore my tmp folder (this doesn't work)

هذا يعمل

# ignore my tmp folder
tmp/

إذا كانت الملفات بالفعل في عنصر تحكم الإصدار، فأنت بحاجة إلى إزالتها يدويا.

بفضل إجابتك، كنت قادرا على كتابة هذا الخطوط الداخلية الصغيرة لتحسينه. ركضت ذلك على بلدي .gitignore وريبو، وليس له أي مشاكل، ولكن إذا رأى أي شخص أي مشاكل صارخة، يرجى التعليق. هذا يجب git rm -r --cached من .gitignore:

CAT $ (GIT Rev-Parse - Toplevel) /. Gitignore | SED "S // $ //" | Grep -v "^ #" | XARGS -L 1 -I {} البحث $ (GIT Rev-Parse - Toplevel) -NAME "{}" | Xargs -l 1 git rm -r - cachached

لاحظ أنك ستحصل على الكثير من fatal: pathspec '<pathspec>' did not match any files. وبعد هذا فقط للملفات التي لم يتم تعديلها.

لقد وجدت مشكلة غريبة مع. gitignore. كان كل شيء في مكانه ويبدو صحيحا. السبب الوحيد الذي يجعل بلدي .gitignore "تجاهل" كان، أن خط النهاية كان في شكل ماك ( r). لذلك بعد حفظ الملف باستخدام الخط الصحيح (في السادس باستخدام: SET FF = UNIX) كل شيء يعمل مثل سحر!

مشكلة أخرى غير مذكورة هنا هي إذا قمت بإنشاء .gitignore الخاص بك في Windows Notepad، فيمكن أن تبدو وكأنها رطانة على منصات أخرى كما اكتشفت. المفتاح هو التأكد من تعيين الترميز على ANSI في المفكرة (أو قم بإجراء الملف على Linux كما فعلت).

من إجابتي هنا: https://stackoverflow.com/a/11451916/406592.

في خادم خادم Linux الخاص بي (غير صحيح على Dev Mac المحلي الخاص بي)، يتم تجاهل الدلائل طالما أنني لا أضيف علامة النجمة:

www / أرشيف / *

لا أعرف لماذا لكنني جعلني أفقد بضع ساعات، لذلك أردت مشاركة ...

شيء واحد له أيضا في الاعتبار إذا .gitignore لا يبدو أنه يتجاهل الملفات غير المتناثرة هو أنه لا ينبغي أن يكون لديك تعليقات على نفس السطر مثل التجاهل. لذلك هذا جيد

# ignore all foo.txt, foo.markdown, foo.dat, etc.
foo*

ولكن هذا لن يعمل:

foo*   # ignore all foo.txt, foo.markdown, foo.dat, etc.

.gitignore يفسر الحالة الأخيرة باسم "تجاهل الملفات المسماة "foo* # ignore all foo.txt, foo.markdown, foo.dat, etc.", ، والتي، بالطبع، ليس لديك.

إذا كنت بحاجة إلى التوقف عن تتبع الكثير من الملفات التي تم تجاهلها، فيمكنك الجمع بين بعض الأوامر:

git ls-files -i --exclude-standard | xargs -L1 git rm --cached

هذا سوف يتوقف عن تتبع الملفات المجهولة. إذا كنت ترغب في إزالة الملفات فعليا من نظام الملفات، فلا تستخدم --cached اختيار. يمكنك أيضا تحديد مجلد للحد من البحث، مثل:

git ls-files -i --exclude-standard -- ${FOLDER} | xargs -L1 git rm

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top