سؤال

ولدي في حل بعض النزاعات بعد git pull.

$ git pull
CONFLICT (rename/add): Renamed vignette_generator_mashed.h->vision_problem_8.h in 49423dd0d47abe6d839a783b5517bdfd200a202f. vision_problem_8.h added in HEAD
Added as vision_problem_8.h~HEAD_1 instead
Removed vignette_generator_cross_square.cc
Automatic merge failed; fix conflicts and then commit the result.

وهكذا أنا googled عليه قليلا، ووجد الناس يقولون باستخدام git mergetool. ولكن هنا هو ما حصلت عليه:

$ git mergetool
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
No files need merging
$ git mergetool opendiff
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
opendiff: file not found

وهكذا يعني لا بد لي من تثبيت شيء؟

وماذا لو أردت ببساطة نسخة من git pull الكتابة كل شيء؟

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

المحلول

وأنت لا تحتاج mergetool لهذا الغرض. ويمكن حلها بسهولة جدا يدويا.

والمتعارض هو أن يرتكب المحلية وأضافت ملف، vision_problem_8.h، أن جهاز تحكم عن بعد كرست أيضا خلق، من خلال إعادة تسمية من vignette_generator_mashed.h. إذا قمت بتشغيل ls -l vision_problem_8.h* هل من المحتمل أن نرى إصدارات متعددة من هذا الملف الذي بوابة والحفاظ عليها بالنسبة لك. واحد منهم أن يكون لك، وآخر منهم سوف يكون الإصدار بعيد. يمكنك استخدام محرر أو أي أدوات أردت لحل محتويات متناقضة. عند الانتهاء من ذلك، git add الملفات المتضررة والالتزام لاستكمال عملية الدمج.

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


وفيما يتعلق أدوات الدمج، إلقاء نظرة على git help mergetool. في الأساس، فإنه سيكون لمحاولة تشغيل كل الاحتمالات شملت حتى يجدها واحد، أو استخدام واحدة قمت بتكوين صراحة.

نصائح أخرى

وأعتقد أنك مجرد نسيت مفتاح "-t" في سطر الأوامر الخاص بك. ووفقا صفحة بوابة المساعدة التي تقف على "-t، --tool =" لذلك يجعل ما يقصد إليه.

وجرب:

git mergetool -t gvimdiff

وبالطبع يمكنك استخدام أداة دمج الخاصة بك مفضلة بدلا من gvimdiff الألغام، إخلط هو عظيم جدا ...

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

ماذا لو أردت ببساطة نسخة من سحب بوابة الكتابة كل شيء؟ إذا كنت ترغب فقط التي يجب أن تستخدمها:

 git fetch
 git reset --hard origin/your-branch-name
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top