كيفية جعل GIT "ننسى" حول ملف تم تتبعه ولكن الآن في. gitignore؟

StackOverflow https://stackoverflow.com/questions/1274057

  •  16-09-2019
  •  | 
  •  

سؤال

هناك ملف يجري تعقبه git, ، ولكن الآن الملف على .gitignore قائمة.

ومع ذلك، فإن هذا الملف يحتفظ الظهور في git status بعد تحريرها. كيف تجبر git أن ننسى تماما عن ذلك؟

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

المحلول

.gitignore سيمنع الملفات غير المتناثرة من إضافة (بدون add -f) إلى مجموعة الملفات التي تتبعها GIT، إلا أن GIT سيستمر في تتبع أي ملفات يتم تتبعها بالفعل.

لإيقاف تتبع ملف تحتاج إلى إزالته من الفهرس. يمكن تحقيق ذلك مع هذا الأمر.

git rm --cached <file>

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

git rm -r --cached <folder>

سيحدث إزالة الملف من مراجعة الرأس في الالتزام التالي.

تحذير: في حين أن هذا لن يقوم بإزالة الملف الفعلي من المحلي الخاص بك، فسيقوم بإزالة الملفات من أجهزة المطورين الأخرى git pull.

نصائح أخرى

ستقوم سلسلة الأوامر أدناه بإزالة جميع العناصر من مؤشر GIT (وليس من دليل العمل أو Repo المحلي)، ثم يقوم بتحديث مؤشر GIT، مع احترام جيت يتجاهل. ملاحظة. فهرس = ذاكرة التخزين المؤقت

أولاً:

git rm -r --cached . 
git add .

ثم:

git commit -am "Remove ignored files"

جيت تحديث مؤشر هل الوظيفة بالنسبة لي:

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

ملحوظة: هذا الحل مستقل بالفعل .gitignore كما Gitignore هو فقط للملفات غير المتناثرة.

تعديل: منذ نشر هذه الإجابة، تم إنشاء خيار جديد ويجب أن يفضل ذلك. يجب عليك استخدامها --skip-worktree وهو الملفات المعدلة التي تعقبها المستخدم لا يرغب في الالتزام بعد الآن والحفاظ عليها --assume-unchanged للأداء لمنع GIT للتحقق من حالة الملفات المتعقبة الكبيرة. يرى https://stackoverflow.com/a/13631525/717372. لمزيد من التفاصيل...

git update-index --skip-worktree <file>
git ls-files --ignored --exclude-standard -z | xargs -0 git rm --cached
git commit -am "Remove ignored files"

يستغرق هذا قائمة الملفات التي تم تجاهلها وتزيلها من الفهرس، ثم ارتكب التغييرات.

أنا دائما استخدام هذا الأمر لإزالة تلك الملفات غير المستحقة. خط واحد، نمط UNIX، خرج نظيف:

git ls-files --ignored --exclude-standard | sed 's/.*/"&"/' | xargs git rm -r --cached

يسرد جميع ملفاتك التي تم تجاهلها، واستبدل كل سطر إخراج باستخدام سطر مقتبس بدلا من ذلك لمعالجة المسارات بمسافات داخلها، وتمرير كل شيء git rm -r --cached لإزالة المسارات / الملفات / المؤسس من الفهرس.

انقله، ارتكب، ثم نقله مرة أخرى. هذا عمل لي في الماضي. ربما هناك طريقة "غيتير" لإنجاز هذا.

إذا كنت لا تستطيع ذلك git rm ملف مجنز لأن الأشخاص الآخرين قد يحتاجون إليها (تحذير، حتى لو أنت git rm --cached, ، عندما يحصل شخص آخر على هذا التغيير، سيتم حذف ملفاتهم في نظام الملفات الخاصة بهم). غالبا ما يتم ذلك بسبب تجاوزات ملفات التكوين، وأوراق اعتماد المصادقة، وما إلى ذلك، يرجى إلقاء نظرة على https:/gist.github.com/1423106. عن طرق عمل الناس حول المشكلة.

كي تختصر:

  • اجعل تطبيقك بحثا عن ملف تكوين ملف تجاهله - إزاده واستخدام ذلك عبر ملف Config.ini الملتزم (أو بالتناوب، ابحث عن ~ / .config / myapp.ini، أو $ myconfigfile)
  • ارتكاب ملف Config- Sample.ini وتجاهل ملف Config.ini، لديك برنامج نصي أو نسخة مماثلة للملف حسب الضرورة إذا لزم الأمر.
  • حاول استخدام Gitattributes Clean / Smudge Magic لتطبيق وإزالة التغييرات من أجلك، على سبيل المثال، لطخة ملف التكوين كخرطلة من فرع بديل وتنظيف ملف التكوين كخرطلة من الرأس. هذه أشياء صعبة، أنا لا أوصي به للمستخدم المبتدئ.
  • احتفظ بملف التكوين على فرع نشر مخصص له لم يتم دمجه أبدا. عندما تريد نشر / ترجمة / اختبار دمج هذا الفرع والحصول على هذا الملف. هذا هو في الأساس النهج الطمي / النظيف باستثناء استخدام سياسات دمج الإنسان وحلويات اضافية جيت.
  • مكافحة الاستنتاج: لا تستخدم تفترض - دون تغيير، لن ينتهي فقط بالبكاء (لأن وجود جيت يكمن في حد ذاته سيؤدي إلى حدوث أشياء سيئة، مثل تغييرك إلى الأبد).

استخدم هذا عندما:

1. تريد إخراج الكثير من الملفات، أو

2. قمت بتحديث ملف Gitignore الخاص بك

رابط المصدر: http://www.codeblocq.com البريد الإلكتروني.com/2016/01/untrack-files-already-added-to-git-repository-based-on-gitignore/

دعنا نقول أنك قد قمت بالفعل بإضافة / ارتكبت بعض الملفات إلى مستودع GIT الخاص بك وتضيفها إلى .gitignore؛ ستظل هذه الملفات موجودة في مؤشر المستودع الخاص بك. هذه المقالة سنرى كيفية التخلص منها.

الخطوة 1: ارتكاب جميع التغييرات

قبل المتابعة، تأكد من ارتكاب جميع التغييرات الخاصة بك، بما في ذلك ملف .gitignore الخاص بك.

الخطوة 2: إزالة كل شيء من المستودع

لمسح Repo الخاص بك، استخدم:

git rm -r --cached .
  • RM. هو إزالة الأمر
  • أدرك سوف تسمح بإزالة العودية
  • معقد سيتم إزالة الملفات فقط من الفهرس. سوف ملفاتك ستظل هناك.

ال rm يمكن أن يكون الأمر غير مفحم. إذا كنت ترغب في تجربة ما يفعله مسبقا، أضف -n أو --dry-run علم لاختبار الأشياء بها.

الخطوة 3: إعادة إضافة كل شيء

git add .

الخطوة 4: الالتزام

git commit -m ".gitignore fix"

مستودع الخاص بك هو نظيف :)

ادفع التغييرات على جهاز التحكم عن بعد لرؤية التغييرات فعالة هناك أيضا.

لقد أنجزت هذا باستخدام فرع فلتر جيت. وبعد تم أخذ الأمر الدقيق الذي استخدمته من صفحة الرجل:

تحذير: سيحذف هذا الملف من تاريخك بالكامل

git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD

سيقوم هذا الأمر بإعادة إنشاء تاريخ الالتزام بالكامل، والتنفيذ git rm قبل كل الالتزام، سوف تتخلص من الملف المحدد. لا تنس دعمها قبل تشغيل الأمر كما هو إرادة كن خاسرا.

ما لم يعمل بالنسبة لي

(تحت Linux)، أردت استخدام المشاركات هنا تشير إلى ls-files --ignored --exclude-standard | xargs git rm -r --cached مقاربة. ومع ذلك، (بعض) تم إزالة الملفات التي سيتم إزالتها على خط جديد / LF / LF\n في أسمائهم. لا أحد الحلول:

git ls-files --ignored --exclude-standard | xargs -d"\n" git rm --cached
git ls-files --ignored --exclude-standard | sed 's/.*/"&"/' | xargs git rm -r --cached

التعامل مع هذا الوضع (احصل على أخطاء حول الملفات غير الموجودة).

لذلك أنا أقدم

git ls-files -z --ignored --exclude-standard | xargs -0 git rm -r --cached

هذا يستخدم -z حجة ل LS-files., ، و ال -0 حجة ل Xargs. لتلبية الوفاء بأمان / بشكل صحيح لشخصيات "سيئة" في أسماء الملفات.

في الصفحة اليدوية ملفات git-ls (1), ، فإنه ينص:

عندما لا يتم استخدام خيار Z، يتم تمثيل علامة التبويب، LF، والفشل الخلطي في أسماء المسارات ك T، n، و على التوالي.

لذلك أعتقد أن حلاي مطلوب إذا كانت أسماء الملفات لها أي من هذه الأحرف فيها.

تحرير: لقد طلب مني إضافة ذلك - - مثل أي git rm أمر --- يجب أن يتبع ذلك يقترف لجعل عمليات الإزالة دائما، على سبيل المثال git commit -am "Remove ignored files".

  1. تحديث الخاص بك .gitignore ملف - على سبيل المثال، أضف مجلدا لا تريد تتبعه .gitignore.

  2. git rm -r --cached . - إزالة جميع الملفات المتعقبة، بما في ذلك المطلوبين وغير المرغوب فيها. سيكون رمزك آمنا طالما قمت بحفظه محليا.

  3. git add . - سيتم إضافة جميع الملفات مرة أخرى، باستثناء تلك الموجودة في .gitignore.


نصيحة قبعة إلى akirayamamoto لأشيرنا في الاتجاه الصحيح.

أعتقد أنه ربما لا يمكن أن ينسى Git تماما عن الملف بسبب تصوره (قسم "لقطات، لا اختلافات").

هذه المشكلة غائبة، على سبيل المثال، عند استخدام CVS. تقوم CVS بتخزين المعلومات كقائمة من التغييرات المستندة إلى الملفات. معلومات CVS هي مجموعة من الملفات والتغييرات التي تم إجراؤها على كل ملف مع مرور الوقت.

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

كانت هذه المقالات 2 مفيدة بالنسبة لي:

بوابة افترض - دون تغيير مقابل تخطي worktreeو كيفية تجاهل التغييرات في الملفات المتعقبة مع git

استنادا إلى ذلك أقوم بما يلي، إذا تم تتبع الملف بالفعل:

git update-index --skip-worktree <file>

من هذه اللحظة سيتم تجاهل جميع التغييرات المحلية في هذا الملف ولن تذهب إلى جهاز التحكم عن بعد. إذا تم تغيير الملف على جهاز التحكم عن بعد، فسوف يحدث الصراع، متى git pull. وبعد ستاس لن تعمل. لحلها، نسخ محتوى الملف إلى المكان الآمن واتبع الخطوات التالية:

git update-index --no-skip-worktree <file>
git stash
git pull 

سيتم استبدال محتوى الملفات بالمحتوى البعيد. لصق التغييرات الخاصة بك من مكان آمن إلى ملف وأداء مرة أخرى:

git update-index --skip-worktree <file>

إذا كان الجميع يعملون مع المشروع، سيؤديون git update-index --skip-worktree <file>, ، مشاكل مع pull يجب أن تكون غائبة. هذا الحل موافق لملفات التكوينات، عندما يكون لكل مطور تكوين مشروع خاص به.

ليس من المناسب جدا القيام بذلك في كل مرة، عند تغيير الملف على جهاز التحكم عن بعد، ولكن يمكنك حمايته من الكتابة عن طريق المحتوى البعيد.

قم بالخطوات التالية بشكل صحيح، ستكون على ما يرام.

1.إزالة الملفات المضافة عن طريق الخطأ من الدليل / التخزين. وبعد يمكنك استخدام الأمر "RM -R" (Linux) أو حذفها عن طريق تصفح الدلائل. أو نقلها إلى موقع آخر على جهاز الكمبيوتر الخاص بك. [ربما تحتاج إلى إغلاق IDE إذا كان يعمل ل تتحرك / إزالة]

2. إضافة الملفات / الدلائل إلى gitignore ملف الآن واحفظه.

3. دون إزالة لهم من ذاكرة التخزين المؤقت git. باستخدام هذه الأوامر (إذا كان هناك أكثر من دليل واحد، فقم بإزالةها واحدا تلو الآخر من خلال إصدار هذا الأمر بشكل متكرر)

git rm -r --cached path-to-those-files

4. دون فعل أ الالتزام ودفع, ، استخدم هذه الأوامر. هذا سوف قم بإزالة هذه الملفات من GIT Remote وجعل git. توقف تتبع تلك الملفات.

git add .
git commit -m "removed unnecessary files from git"
git push origin

الإجابة النسخة / لصق هي git rm --cached -r .; git add .; git status

سيتجاهل هذا الأمر الملفات التي تلتزم بالفعل بمستودع GIT ولكن الآن أضفناها .gitignore.

كان الجواب من مات الخوف هو IMHO الأكثر فعالية. ما يلي هو مجرد برنامج نصي PowerShell لأولئك الموجودين في Windows فقط لإزالة الملفات فقط من Repo Git الخاص بهم يطابق قائمة الاستبعاد الخاصة بهم.

# Get files matching exclusionsfrom .gitignore
# Excluding comments and empty lines
$ignoreFiles =  gc .gitignore | ?{$_ -notmatch  "#"} |  ?{$_ -match  "\S"} | % {
                    $ignore = "*" + $_ + "*"
                    (gci -r -i $ignore).FullName
                }
$ignoreFiles = $ignoreFiles| ?{$_ -match  "\S"}

# Remove each of these file from Git 
$ignoreFiles | % { git rm $_}

git add .

نقل أو نسخ الملف إلى موقع آمن، لذلك لا تفقده. ثم git rm الملف والالتزام. سيظل الملف يظهر إذا عدت إلى أحد المرتكبات السابقة، أو فرع آخر حيث لم تتم إزالته. ومع ذلك، في كل ما يرتكب في المستقبل، لن ترى الملف مرة أخرى. إذا كان الملف موجودا في GIT يتجاهل، فيمكنك نقله مرة أخرى إلى المجلد، ولن يراه GIT.

ال BFG. تم تصميمه خصيصا لإزالة البيانات غير المرغوب فيها مثل الملفات الكبيرة أو كلمات المرور من GIT Repos، بحيث يحتوي على علامة بسيطة تقوم بإزالة أي ملفات تاريخية كبيرة (غير متقدمة): "- Brobs-Bigger- من'

$ java -jar bfg.jar --strip-blobs-bigger-than 100M

إذا كنت ترغب في تحديد الملفات بالاسم، فيمكنك القيام بذلك أيضا:

$ java -jar bfg.jar --delete-files *.mp4

BFG هو 10-1000X أسرع من فرع مرشح GIT، وبشكل عام أسهل بكثير للاستخدام - تحقق من تعليمات الاستخدام الكامل و أمثلة لمزيد من التفاصيل.

مصدر: https://confluence.atlassian.com/bitbucket/reduce-repository-size-321848262.html ..

إذا كنت لا ترغب في استخدام CLI ويعملون على Windows، فإن الحل البسيط للغاية هو استخدامه tortoisegit., ، لديها "حذف (الحفاظ على المحلية)" الإجراء في القائمة التي تعمل بشكل جيد.

أحببت إجابة Jonbrave ولكن لدي أدلة عمل فوضوية كافية ترتكز - تخيفني قليلا، لذلك إليك ما فعلته:

Git Config - Global Alias.exclude - تم تجاهله Xargs -0 git rm -r - crafed && git ls-files -z - الموقع - exclude-standard | Xargs -0 Git Stage && Git Stage. gitignore && git comment -m "gitignore جديد وإزالة الملفات التي تم تجاهلها من الفهرس"

تقسمها:

git ls-files -z --ignored --exclude-standard | xargs -0 git rm -r --cached 
git ls-files -z --ignored --exclude-standard | xargs -0 git stage 
git stage .gitignore 
git commit -m "new gitignore and remove ignored files from index"
  • إزالة الملفات التي تم تجاهلها من الفهرس
  • مرحلة .gitignore والملفات التي قمت بإزالتها
  • يقترف

باستخدام git rm --cached لا يجيب الأمر على السؤال الأصلي:

كيف تجبر git لننسى بالكامل [ملف]؟

في الواقع، سيؤدي هذا الحل إلى أن يكون الملف تم الحذف في كل مثيل آخر من المستودع عند تنفيذ أ git pull!

يتم توثيق الطريقة الصحيحة لإجبار GIT على نسيان ملف بواسطة Github هنا.

أوصي بقراءة الوثائق، ولكن أساسا:

git fetch --all
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch full/path/to/file' --prune-empty --tag-name-filter cat -- --all
git push origin --force --all
git push origin --force --tags
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
git reflog expire --expire=now --all
git gc --prune=now

فقط استبدل full/path/to/file مع المسار الكامل للملف. تأكد من أنك أضفت الملف إلى .gitignore.

سوف تحتاج أيضا إلى (مؤقتا) السماح بدفع غير سريع إلى الأمام إلى مستودعك, ، لأنك تقوم بتغيير تاريخ GIT الخاص بك.

لم تعد هذه مشكلة في أحدث جيت (V2.17.1 في وقت كتابة هذا التقرير).

ال .gitignore أخيرا يتجاهل الملفات المعقولة ولكن المحذوفة. يمكنك اختبار هذا بنفسك عن طريق تشغيل البرنامج النصي التالي. الاخير git status يجب أن يقدم البيان تقرير "لا شيء يرتكب".

# Create empty repo
mkdir gitignore-test
cd gitignore-test
git init

# Create a file and commit it
echo "hello" > file
git add file
git commit -m initial

# Add the file to gitignore and commit
echo "file" > .gitignore
git add .gitignore
git commit -m gitignore

# Remove the file and commit
git rm file
git commit -m "removed file"

# Reintroduce the file and check status.
# .gitignore is now respected - status reports "nothing to commit".
echo "hello" > file
git status

في حالة ارتكاب بالفعل DS_Store:

find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch

تجاهلهم من خلال:

echo ".DS_Store" >> ~/.gitignore_global
echo "._.DS_Store" >> ~/.gitignore_global
echo "**/.DS_Store" >> ~/.gitignore_global
echo "**/._.DS_Store" >> ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global

أخيرا، ارتكب!

خاصة بالنسبة للملفات IDE القائمة على IDE، أستخدم هذا:

على سبيل المثال slnx.sqlite، لقد تخلصت من ذلك تماما مثل ما يلي:

git rm {PATH_OF_THE_FILE}/slnx.sqlite -f
git commit -m "remove slnx.sqlite"

فقط ضع في اعتبارك أن بعض هذه الملفات تخزن بعض إعدادات المستخدم وتفضيلات المستخدم المحلي للمشاريع (مثل الملفات التي لديك فتحها). لذلك في كل مرة تقوم فيها بالتنقل أو تقوم ببعض التغييرات في IDE الخاصة بك، يتم تغيير هذا الملف، وبالتالي فهو يتحقق من ذلك وإظهاره حيث توجد تغييرات غير ملائمة.

الإجابة المقبولة لا "جعل بوابة "ننسى" حول ملف ... "(تاريخيا). يجعل فقط git يتجاهل الملف في الحاضر / المستقبل.

هذه الطريقة تجعل بوابة ننسى تماما ملفات تجاهلها (ماضي/ الحاضر / المستقبل)، ولكن يفعل ليس احذف أي شيء من دليل العمل (حتى عند إعادة سحبها من جهاز التحكم عن بعد).

هذه الطريقة تتطلب استخدام /.git/info/exclude (يفضل) أو أ مسبقا موجودة .gitignore في الكل يلتزم بتجاهل الملفات / نسيانها. 1

جميع طرق فرض سلوك الجيت يتجاهل بعد الحقيقة إعادة كتابة التاريخ بشكل فعال وبالتالي تداعيات كبيرة بالنسبة لأي ريبوس عام / مشترك / التعاون الذي قد يتم سحبه بعد هذه العملية. 2

نصيحة عامة: تبدأ مع ريبو نظيفة - كل شيء ملتزم، لا شيء في انتظار في دليل العمل أو مؤشر، وجعل النسخ الاحتياطي!

أيضا، التعليقات /مراجعة التاريخ من هذه الإجابة (ومراجعة التاريخ من هذا السؤال) قد تكون مفيدة / التنوير.

#commit up-to-date .gitignore (if not already existing)
#this command must be run on each branch

git add .gitignore
git commit -m "Create .gitignore"

#apply standard git ignore behavior only to current index, not working directory (--cached)
#if this command returns nothing, ensure /.git/info/exclude AND/OR .gitignore exist
#this command must be run on each branch

git ls-files -z --ignored --exclude-standard | xargs -0 git rm --cached

#Commit to prevent working directory data loss!
#this commit will be automatically deleted by the --prune-empty flag in the following command
#this command must be run on each branch

git commit -m "ignored index"

#Apply standard git ignore behavior RETROACTIVELY to all commits from all branches (--all)
#This step WILL delete ignored files from working directory UNLESS they have been dereferenced from the index by the commit above
#This step will also delete any "empty" commits.  If deliberate "empty" commits should be kept, remove --prune-empty and instead run git reset HEAD^ immediately after this command

git filter-branch --tree-filter 'git ls-files -z --ignored --exclude-standard | xargs -0 git rm -f --ignore-unmatch' --prune-empty --tag-name-filter cat -- --all

#List all still-existing files that are now ignored properly
#if this command returns nothing, it's time to restore from backup and start over
#this command must be run on each branch

git ls-files --other --ignored --exclude-standard

أخيرا، اتبع بقية هذا دليل جيثب (بدءا من الخطوة 6) الذي يتضمن تحذيرات / معلومات مهمة حول الأوامر أدناه.

git push origin --force --all
git push origin --force --tags
git for-each-ref --format="delete %(refname)" refs/original | git update-ref --stdin
git reflog expire --expire=now --all
git gc --prune=now

Evs الأخرى التي تسحب من Remote Remote المعدلة الآن يجب أن تجعل نسخة احتياطية ثم:

#fetch modified remote

git fetch --all

#"Pull" changes WITHOUT deleting newly-ignored files from working directory
#This will overwrite local tracked files with remote - ensure any local modifications are backed-up/stashed
#Switching branches after this procedure WILL LOOSE all newly-gitignored files in working directory because they are no longer tracked when switching branches

git reset FETCH_HEAD

الحواشي

1 لان /.git/info/exclude يمكن تطبيقها على جميع الالتزامات التاريخية باستخدام التعليمات المذكورة أعلاه، وربما تفاصيل حول الحصول على .gitignore ملف داخل الالتزام التاريخي الذي يحتاج إليه هو خارج نطاق هذه الإجابة. أردت مناسبة .gitignore أن تكون في ارتكاب الجذر، كما لو كان أول شيء فعلته. البعض الآخر قد لا يهتم منذ ذلك الحين /.git/info/exclude يمكن تحقيق نفس الشيء بغض النظر عن مكان .gitignore موجود في تاريخ الالتزام، وإعادة كتابة التاريخ بوضوح هو جداً موضوع Touchy، حتى عند الاطلاع على تداعيات.

FWIW، قد تشمل الأساليب المحتملة git rebase أو أ git filter-branch التي نسخ an. خارجي .gitignore في كل ارتكاب، مثل الإجابات على هذا السؤال

2 إنفاذ سلوك GIT يتجاهل بعد الحقيقة من خلال ارتكاب نتائج مستقل git rm --cached قد يؤدي الأمر إلى ملف تجاهل حديثا حذف في المستقبل يسحب من بعيد القوة. ال --prune-empty العلم في ما يلي git filter-branch يتجنب الأمر هذه المشكلة عن طريق إزالة الفهرس "حذف كافة تجاهل" السابق تلقائيا. يعيد كتابة تاريخ GIT يغير أيضا الالتزام تعيث فسادا في المستقبل يسحب من الشيدات العامة / المشتركة / التعاونية. يرجى فهم تداعيات تماما قبل القيام بذلك لهذا الريبو. هذا دليل جيثب يحدد ما يلي:

أخبر المتعاونين repase., ليس دمج، أي فروع تم إنشاؤها من تاريخ مستودعك القديم (الملوث). يمكن أن يرتكب دمج واحد إعادة تقديم بعض أو كل التاريخ الملوث الذي ذهبت للتو إلى مشكلة التطهير.

الحلول البديلة التي لاتفعل تؤثر على الريبو عن بعد git update-index --assume-unchanged </path/file> أو git update-index --skip-worktree <file>, ، أمثلة يمكن العثور عليها هنا.

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