it-swarm.asia

كيف يمكنني فرض "git pull" على الكتابة فوق الملفات المحلية؟

كيف يمكنني فرض الكتابة فوق الملفات المحلية على git pull؟

السيناريو التالي:

  • يقوم أحد أعضاء الفريق بتعديل القوالب لموقع ويب نعمل عليه
  • يقومون بإضافة بعض الصور إلى دليل الصور (لكن ينسى إضافتها تحت التحكم بالمصادر)
  • إنهم يرسلون الصور عن طريق البريد ، فيما بعد ، إلي
  • أقوم بإضافة الصور الموجودة تحت التحكم بالمصادر ودفعها إلى GitHub مع تغييرات أخرى
  • لا يمكنهم سحب التحديثات من GitHub لأن Git لا يريد الكتابة فوق ملفاتهم.

هذا هو الخطأ الذي أتلقاه:

خطأ: سيتم الكتابة فوق ملف دمج شجرة العمل 'العامة/images/icon.gif'

كيف أجبر جيت على الكتابة عليها؟ الشخص مصمم - عادةً ما أقوم بحل جميع التعارضات باليد ، وبالتالي فإن الخادم لديه أحدث إصدار يحتاج فقط إلى تحديثه على جهاز الكمبيوتر الخاص به.

6088
Jakub Troszok

هام: إذا كان لديك أي تغييرات محلية ، فستضيع. مع أو بدون خيار --hard ، سيتم فقد أي تعهدات محلية لم يتم دفعها.[*]

إذا كان لديك أي ملفات لا يتم تتبعها بواسطة Git (مثل محتوى المستخدم الذي تم تحميله) ، فلن تتأثر هذه الملفات.


أعتقد أن هذا هو الطريق الصحيح:

git fetch --all

ثم ، لديك خياران:

git reset --hard Origin/master

أو إذا كنت في فرع آخر:

git reset --hard Origin/<branch_name>

تفسير:

git fetch يقوم بتنزيل أحدث إصدار من جهاز التحكم عن بعد دون محاولة دمج أي شيء أو إعادة تسميته.

ثم git reset يعيد تعيين الفرع الرئيسي إلى ما جلبته للتو. يقوم خيار --hard بتغيير جميع الملفات في شجرة العمل الخاصة بك لمطابقة الملفات في Origin/master


الحفاظ على الالتزامات المحلية الحالية

[*]: تجدر الإشارة إلى أنه من الممكن الحفاظ على الالتزامات المحلية الحالية من خلال إنشاء فرع من master قبل إعادة التعيين:

git checkout master
git branch new-branch-to-save-current-commits
git fetch --all
git reset --hard Origin/master

بعد ذلك ، سيتم الاحتفاظ بجميع الالتزامات القديمة في new-branch-to-save-current-commits.

تغييرات غير ملتزم بها

التغييرات غير الملتزم بها ، ومع ذلك (حتى على مراحل) ، سوف تضيع. تأكد من خبأ ارتكاب أي شيء تحتاجه. لذلك يمكنك تشغيل ما يلي:

git stash

ثم لإعادة تطبيق هذه التغييرات غير الملتزم بها:

git stash pop
8501
RNA

جرب هذا:

git reset --hard HEAD
git pull

يجب أن تفعل ما تريد.

829
Travis Reeder

تحذير: git clean يحذف جميع ملفاتك/أدلةك التي لم يتم تعقبها ولا يمكن التراجع عنها.


في بعض الأحيان ، لا يساعد clean -f. في حالة قيامك بإلغاء تحديد الدلائل ، يلزم أيضًا الخيار -d:

# WARNING: this can't be undone!

git reset --hard HEAD
git clean -f -d
git pull

تحذير: git clean يحذف جميع ملفاتك/أدلةك التي لم يتم تعقبها ولا يمكن التراجع عنها.

فكر في استخدام علامة -n (--dry-run) أولاً. سيوضح لك هذا ما سيتم حذفه دون حذف أي شيء:

git clean -n -f -d

مثال الإخراج:

Would remove untracked-file-1.txt
Would remove untracked-file-2.txt
Would remove untracked/folder
...
427
David Avsajanishvili

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

قم أولاً بتنفيذ تغييراتك

 git add *
 git commit -a -m "local file server commit message"

ثم جلب التغييرات والكتابة فوق إذا كان هناك تعارض

 git fetch Origin master
 git merge -s recursive -X theirs Origin/master

"-X" هو اسم الخيار ، و "ملكهم" هو قيمة هذا الخيار. أنت تختار استخدام التغييرات "الخاصة بهم" ، بدلاً من التغييرات "الخاصة بك" إذا كان هناك تعارض.

353
Richard Kersey

بدلا من القيام:

git fetch --all
git reset --hard Origin/master

أنصحك بالقيام بما يلي:

git fetch Origin master
git reset --hard Origin/master

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

255
Johanneke

يبدو أن أفضل طريقة هي القيام أولاً:

git clean

لحذف جميع الملفات التي لم يتم تعقبها ، ثم تابع باستخدام git pull... المعتاد.

128
Jakub Troszok

تحذير ، سيؤدي القيام بذلك إلى حذف ملفاتك نهائيًا إذا كان لديك أي إدخالات/دليل في ملف gitignore.

بعض الإجابات تبدو فظيعة. فظيع بمعنى ما حدث لـLauri باتباع اقتراح David Avsajanishvili.

بالأحرى (git> v1.7.6):

git stash --include-untracked
git pull

في وقت لاحق يمكنك تنظيف التاريخ خبأ.

يدويًا ، واحد تلو الآخر:

$ git stash list
[email protected]{0}: WIP on <branch>: ...
[email protected]{1}: WIP on <branch>: ...

$ git stash drop [email protected]{0}
$ git stash drop [email protected]{1}

بوحشية ، الكل في مرة واحدة:

$ git stash clear

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

$ git stash list
...
$ git stash apply [email protected]{5}
105
Hedgehog

قد تجد هذا الأمر مفيدًا للتخلص من التغييرات المحلية:

git checkout <your-branch> -f

ثم قم بتنظيف (يزيل الملفات التي لم يتم تعقبها من شجرة العمل):

git clean -f

إذا كنت ترغب في إزالة الدلائل التي لم يتم تعقبها بالإضافة إلى الملفات التي لم يتم تعقبها:

git clean -fd
91
Vishal

بدلاً من الدمج مع git pull ، جرّب هذا:

git fetch --all

تليها:

git reset --hard Origin/master.

83
Lloyd Moore

الشيء الوحيد الذي كان يعمل بالنسبة لي هو:

git reset --hard HEAD~5

هذا سوف يأخذك إلى الوراء خمس مرات ثم

git pull

لقد وجدت أنه من خلال البحث عن كيفية التراجع عن دمج Git .

57
Chris BIllante

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

إليك الحل الأنظف الذي نستخدمه:

# Fetch the newest code
git fetch

# Delete all files which are being added, so there
# are no conflicts with untracked files
for file in `git diff HEAD..Origin/master --name-status | awk '/^A/ {print $2}'`
do
    rm -f -- "$file"
done

# Checkout all files which were locally modified
for file in `git diff --name-status | awk '/^[CDMRTUX]/ {print $2}'`
do
    git checkout -- "$file"
done

# Finally pull all the changes
# (you could merge as well e.g. 'merge Origin/master')
git pull
  • يجلب الأمر الأول أحدث البيانات.

  • يتحقق الأمر الثاني مما إذا كان هناك أي ملفات تتم إضافتها إلى المستودع وحذف تلك الملفات التي لم يتم تعقبها من المستودع المحلي الذي قد يتسبب في حدوث تعارضات.

  • يقوم الأمر الثالث بفحص كافة الملفات التي تم تعديلها محليًا.

  • أخيرًا ، نقوم بالسحب للتحديث إلى أحدث إصدار ، لكن هذه المرة دون أي تعارضات ، لأن الملفات التي لم يتم تعقبها والموجودة في الريبو لم تعد موجودة بعد وجميع الملفات المعدلة محليًا هي نفسها كما في المستودع.

52
Strahinja Kustudic

كان لي نفس المشكلة. لم يعطني أحد هذا الحل ، لكنه نجح بالنسبة لي.

أنا حلها عن طريق:

  1. احذف جميع الملفات. اترك فقط دليل .git.
  2. git reset --hard HEAD
  3. git pull
  4. git Push

الآن يعمل.

41
John John Pichler

علاوة:

عند الحديث عن السحب/الجلب/الدمج في الإجابات السابقة ، أود أن أشارك خدعة مثيرة ومثمرة ،

git pull --rebase

هذا الأمر أعلاه هو الأمر الأكثر فائدة في حياتي Git التي وفرت الكثير من الوقت.

قبل دفع التزامك الجديد بالخادم ، جرب هذا الأمر وسيقوم تلقائيًا بمزامنة آخر تغييرات الخادم (مع إحضار + دمج) وسيضع التزامك في الجزء العلوي في سجل Git. ليست هناك حاجة للقلق بشأن السحب/الدمج اليدوي.

العثور على تفاصيل في ماذا "git pull --rebase" تفعل؟.

35
Sazzad Hissain Khan

بادئ ذي بدء ، جرب الطريقة القياسية:

git reset HEAD --hard # To remove all not committed changes!
git clean -fd         # To remove all untracked (non-git) files and folders!

تحذير : أوامر أعلاه يمكن أن تؤدي إلى فقدان البيانات/الملفات فقط إذا لم تكن قد ارتكبت! إذا لم تكن متأكدًا ، فقم بعمل النسخ الاحتياطي أولاً في مجلد المستودع بالكامل.

ثم اسحبه مرة أخرى.

إذا كان أعلاه لن يساعدك ولا تهتم بالملفات/الدلائل غير المستكشفة (قم بعمل النسخ الاحتياطي أولاً في حالة) ، فجرب الخطوات البسيطة التالية:

cd your_git_repo  # where 'your_git_repo' is your git repository folder
rm -rfv *         # WARNING: only run inside your git repository!
git pull          # pull the sources again

سيؤدي ذلك إلى إزالة جميع ملفات git (مثال: .git/ dir ، حيث لديك جميع الالتزامات) وسحبها مرة أخرى.


لماذا git reset HEAD --hard قد تفشل في بعض الحالات؟

  1. القواعد المخصصة في .gitattributes file

    يمكن أن يؤدي وجود قاعدة eol=lf في .gitattributes إلى git لتعديل بعض تغييرات الملفات عن طريق تحويل نهايات سطر CRLF إلى LF في بعض الملفات النصية.

    إذا كان الأمر كذلك ، فعليك الالتزام بهذه التغييرات CRLF/LF (عن طريق مراجعتها في git status) ، أو حاول: git config core.autcrlf false لتجاهلها مؤقتًا.

  2. عدم توافق نظام الملفات

    عندما تستخدم نظام ملفات لا يدعم سمات الإذن. على سبيل المثال ، لديك مستودعين ، أحدهما على Linux/Mac (ext3/hfs+) وآخر على نظام الملفات المستند إلى FAT32/NTFS.

    كما تلاحظ ، هناك نوعان مختلفان من أنظمة الملفات ، لذا فإن النظام الذي لا يدعم أذونات Unix لا يمكنه بشكل أساسي إعادة تعيين أذونات الملفات على النظام الذي لا يدعم هذا النوع من الأذونات ، لذلك بغض النظر عن كيفية --hard الذي تحاوله ، بوابة دائما الكشف عن بعض "التغييرات".

35
kenorb

كان لدي مشكلة مماثلة. توجب علي فعل هذا:

git reset --hard HEAD
git clean -f
git pull
27
Ryan

لقد لخصت إجابات أخرى. يمكنك تنفيذ git pull دون أخطاء:

git fetch --all
git reset --hard Origin/master
git reset --hard HEAD
git clean -f -d
git pull

تحذير : هذا البرنامج النصي قوي للغاية ، لذا فقد تفقد تغييراتك.

27
Robert Moon

بناءً على تجربتي الخاصة ، فإن الحل الذي قدمته Strahinja Kustudic أعلاه هو الأفضل إلى حد بعيد. كما أوضح آخرون ، فإن القيام بإعادة تعيين القرص الصلب سيؤدي إلى إزالة الكل الملفات التي لم يتم تعقبها والتي قد تتضمن الكثير من الأشياء التي لا تريد إزالتها ، مثل ملفات التكوين. ما هو أكثر أمانًا ، هو إزالة الملفات التي ستتم إضافتها فقط ، ولهذا الغرض ، قد ترغب أيضًا في التحقق من أي ملفات تم تعديلها محليًا على وشك التحديث.

هذا في الاعتبار ، لقد قمت بتحديث البرنامج النصي Kustudic للقيام بذلك. أنا أيضا إصلاح الخطأ المطبعي (في عداد المفقودين 'في الأصل).

#/bin/sh

# Fetch the newest code
git fetch

# Delete all files which are being added,
# so there are no conflicts with untracked files
for file in `git diff HEAD..Origin/master --name-status | awk '/^A/ {print $2}'`
do
    echo "Deleting untracked file $file..."
    rm -vf "$file"
done

# Checkout all files which have been locally modified
for file in `git diff HEAD..Origin/master --name-status | awk '/^M/ {print $2}'`
do
    echo "Checking out modified file $file..."
    git checkout $file
done

# Finally merge all the changes (you could use merge here as well)
git pull
27
Rolf Kaiser

أعتقد أن هناك سببين محتملين للصراع ، يجب حلهما بشكل منفصل ، وبقدر ما يمكنني معرفة أي من الإجابات المذكورة أعلاه تتناول كليهما:

  • يجب حذف الملفات المحلية التي لم يتم تعقبها ، إما يدويًا (أكثر أمانًا) أو كما هو مقترح في إجابات أخرى ، بواسطة git clean -f -d

  • يلزم أيضًا حذف الالتزامات المحلية غير الموجودة في الفرع البعيد. أسهل طريقة لتحقيق ذلك هي: git reset --hard Origin/master (استبدل كلمة "master" بأي فرع تعمل عليه ، وقم بتشغيل git fetch Origin أولاً)

23
tiho

أسهل طريقة هي:

git checkout --theirs /path/to/file.extension
git pull Origin master

هذا سوف يتجاوز الملف المحلي الخاص بك مع الملف على بوابة

20
maximus 69

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

بناءً على مجموعة من إجابة RNA و إجابة torek على سؤال مماثل ، لقد توصلت إلى هذا الأمر الذي يعمل بشكل رائع:

git fetch
git reset --hard @{u}

شغِّل هذا من فرع وسوف يعيد تعيين الفرع المحلي الخاص بك فقط إلى الإصدار الأولي.

يمكن وضع هذا بشكل جيد في اسم مستعار git (git forcepull) أيضًا:

git config alias.forcepull "!git fetch ; git reset --hard @{u}"

أو في ملفك .gitconfig:

[alias]
  forcepull = "!git fetch ; git reset --hard @{u}"

استمتع!

20
JacobEvelyn

واجهت نفس المشكلة ولسبب ما ، حتى git clean -f -d لن تفعل ذلك. إليك السبب: لسبب ما ، إذا تم تجاهل ملفك بواسطة Git (عبر إدخال .gitignore ، أفترض) ، فلا يزال يزعجك الكتابة فوق هذا باستخدام سحب ، ولكن تنظيف لن قم بإزالته ، إلا إذا أضفت -x.

19
Tierlieb

أنا فقط حل هذا بنفسي عن طريق:

git checkout -b tmp # "tmp" or pick a better name for your local changes branch
git add -A
git commit -m 'tmp'
git pull
git checkout master # Or whatever branch you were on originally
git pull
git diff tmp

حيث يعطي الأمر الأخير قائمة بما كانت عليه تغييراتك المحلية. استمر في تعديل فرع "tmp" حتى يكون مقبولًا ، ثم ادمج مرة أخرى في برنامج الماجستير باستخدام:

git checkout master && git merge tmp

في المرة القادمة ، ربما يمكنك التعامل مع هذا بطريقة أنظف من خلال البحث عن "git stash branch" على الرغم من أن stash من المحتمل أن تسبب لك بعض المشاكل في المحاولات القليلة الأولى ، لذلك قم بتجربة أول مشروع غير حاسم ...

18
Simon B.

لدي موقف غريب لا يعمل git clean أو git reset. يجب إزالة الملف المتعارض من git index باستخدام البرنامج النصي التالي على كل ملف لم يتم تعقبه:

git rm [file]

ثم أنا قادر على سحب ما يرام.

17
Chen Zhang

أعرف طريقة أسهل وأقل إيلاما:

$ git branch -m [branch_to_force_pull] tmp
$ git fetch
$ git checkout [branch_to_force_pull]
$ git branch -D tmp

هذا هو!

17
ddmytrenko

هذه الأوامر الأربعة تعمل من أجلي.

git reset --hard HEAD
git checkout Origin/master
git branch -D master
git checkout -b master

لفحص/سحب بعد تنفيذ هذه الأوامر

git pull Origin master

جربت الكثير ولكن أخيرًا حصلت على نجاح مع هذه الأوامر.

13
vishesh chandra

على الرغم من السؤال الأصلي ، يمكن أن تتسبب أهم الإجابات في حدوث مشكلات للأشخاص الذين يعانون من مشكلة مماثلة ، لكنهم لا يريدون فقد ملفاتهم المحلية. على سبيل المثال ، راجع تعليقات Al-Punk و crizCraig.

يلزم الإصدار التالي تغييراتك المحلية على فرع مؤقت (tmp) ، ويتحقق من الفرع الأصلي (الذي أفترض أنه master) ويدمج التحديثات. يمكنك القيام بذلك باستخدام stash ، لكنني وجدت أنه من الأسهل عادة استخدام نهج الفرع/الدمج.

git checkout -b tmp
git add *; git commit -am "my temporary files"
git checkout master

git fetch Origin master
git merge -s recursive -X theirs Origin master

حيث نفترض مستودع آخر هو Origin master.

13
Snowcrash

فقط افعل

git fetch Origin branchname
git checkout -f Origin/branchname // This will overwrite ONLY new included files
git checkout branchname
git merge Origin/branchname

لذا يمكنك تجنب جميع الآثار الجانبية غير المرغوب فيها ، مثل حذف الملفات أو الدلائل التي تريد الاحتفاظ بها ، إلخ.

12
user2696128

أعد ضبط الفهرس والرئيس إلى Origin/master ، لكن لا تقم بإعادة تعيين شجرة العمل:

git reset Origin/master
11
user811773

المتطلبات:

  1. تتبع التغييرات المحلية حتى لا يفقدها أحد هنا.
  2. اجعل المستودع المحلي مطابقًا لمستودع المنشأ البعيد.

حل:

  1. خبأ التغييرات المحلية.
  2. إحضار مع تنظيف من الملفات و الدلائل تجاهل .gitignore و إعادة التعيين الثابت إلى الأصل .

    git stash --include-untracked
    git fetch --all
    git clean -fdx
    git reset --hard Origin/master
    
9
vezenkov

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

[alias]
      fp = "!f(){ git fetch ${1} ${2} && git reset --hard ${1}/${2};};f"

قم بتشغيل الأمر باسم

git fp Origin master

أي ما يعادل

git fetch Origin master
git reset --hard Origin/master
9
Venkat Kotra

لا تستخدم git reset --hard. سيؤدي ذلك إلى مسح التغييرات التي قد تكون غير مرغوب فيها تمامًا. في حين أن:

git pull
git reset Origin/master
git checkout <file1> <file2> ...

يمكنك بالطبع استخدام git fetch بدلاً من git pull لأنه من الواضح أنه لن يتم دمجه ، ولكن إذا كنت عادةً تسحب الأمر فمن المنطقي الاستمرار في السحب هنا.

إذن ما يحدث هنا هو أن git pull يقوم بتحديث مرجعك الأصلي/الرئيسي ؛ git reset يقوم بتحديث مرجع الفرع المحلي الخاص بك على أن يكون هو نفسه الأصل/الرئيسي دون تحديث أي ملفات ، وبالتالي فإن حالة السحب لم تتغير. ثم git checkout يعيد الملفات إلى حالة فهرس الفرع المحلي حسب الحاجة. في الحالات التي تمت فيها إضافة نفس الملف بالضبط على الهواء مباشرة وعلى الملف الرئيسي الرئيسي ، يكون الفهرس مطابقًا بالفعل للملف بعد إعادة التعيين ، لذلك في الحالة الشائعة لا تحتاج إلى git checkout على الإطلاق.

إذا كان فرع المنبع يحتوي أيضًا على تعهدات تريد تطبيقها تلقائيًا ، فيمكنك اتباع تباين دقيق في العملية:

git pull
git merge <commit before problem commit>
git reset <problem commit>
git checkout <file1> <file2> ...
git pull
8
Jim Driscoll

هذه هي أفضل ممارسة للعودة إلى التغييرات:

  • git commit ارتكب التغييرات التي تم إجراؤها على مراحل بحيث يتم حفظها فيreflog(انظر أدناه)
  • git fetch إحضار أحدث التغييرات في عمليات المنبع
  • git reset --hard Origin/master إعادة التعيين الثابت في فرع Origin الرئيسي

reflogسجلات الفروع والمراجع الأخرى التي يتم تحديثها في المستودع المحلي. أو ببساطة - reflog هو تاريخ التغييرات الخاصة بك .

لذلك دائما ممارسة كبيرة لارتكابها. يتم إلحاق الالتزامات بسجل إعادة التوطين الذي يضمن لك دائمًا طريقة لاسترداد الكود المحذوف.

7
Jordan Georgiev

لقد استخدمت هذا الأمر للتخلص من الملفات المحلية التي تمنعني من القيام بعملية سحب/دمج. لكن كن حريص! قم بتشغيل git merge … أولاً لمعرفة ما إذا كانت هناك فقط تلك الملفات التي تريد إزالتها حقًا.

git merge Origin/master 2>&1 >/dev/null | grep ^[[:space:]] | sed s/^[[:space:]]//g | xargs -L1 rm
  • يسرد git merge من بين أشياء أخرى جميع هذه الملفات. يسبقهم بعض المساحة البيضاء.
  • 2>&1 >/dev/null يعيد توجيه إخراج الخطأ إلى معيار واحد بحيث يتم التقاطه بواسطة grep.
  • grep ^[[:space:]] تقوم بتصفية الأسطر التي تحتوي على أسماء الملفات فقط.
  • sed s/^[[:space:]]//g يقوم بتقليص المساحة البيضاء من البداية.
  • xargs -L1 rm يدعو rm على كل من هذه الملفات ، وحذفها.

تعامل بعناية: بغض النظر عن مخرجات git merge ، سيتم استدعاء rm كل سطر يبدأ بمسافة بيضاء.

5
Glutexo

كنت أحاول استخدام فرع Material2 على Angular2-Webpack-Starter وكان لديّ وقتًا طويلاً. كانت هذه هي الطريقة الوحيدة التي يمكنني بها تنزيل هذا الفرع واستخدامه.

git clone --depth 1 https://github.com/angularclass/angular2-webpack-starter.git

cd angular2-webpack-starter/

git checkout -b material2

افتح مجلد المشروع واحذف جميع الملفات والمجلدات غير المخفية. اترك كل الأشياء المخفية.

git add .

git commit -m "pokemon go"

git reset --hard

git pull Origin material2

(عندما ينبثق المحرر ، اضغط على ": wq" ، ثم اضغط Enter)

أنت الآن جاهز.

5
Helzgate

في نظام Windows ، قم بتنفيذ هذا الأمر الفردي:

git fetch --all & git reset --hard Origin/master
3
Luca C.

يمكنك تجاهل هذا الملف مع ملف في مجلد قاعدة المشروع:

.gitignore

public/images/*

ثم اسحب التغييرات ثم أزل هذا السطر من ملف gitignore الخاص بك.

3
Daniel Gaytán

git fetch --all && git reset --hard Origin/master && git pull

0
Suge

1: إعادة التعيين إلى التزام سابق

git reset --hard HEAD

2: حذف الملفات التي لم يتم تعقبها

git clean -f

3: سحب ارتكابها

git pull

مصادر:

0
abhijithvijayan

إذا كنت ترغب في إعادة التعيين إلى فرع التتبع عن بعد بطريقة عامة ، استخدم:

git fetch
git reset --keep Origin/$(git rev-parse --abbrev-ref HEAD)

إذا كنت تريد إعادة تعيين تغييراتك المحلية أيضًا:

git fetch
git reset --hard Origin/$(git rev-parse --abbrev-ref HEAD)
0
warch