سؤال

أعلم أنه يمكنني عرض الفرق بين الرأس والحالة الحالية meld .. وبعد ولكن كيف يمكنني عرض الاختلافات بين الفروع، على سبيل المثال master و devel مع ميلد؟

في الوقت الحالي أقوم بالخطوات التالية:

  1. إعادة تسمية مجلد نسخة العمل
    علي سبيل المثال mv /projectA /projectA_master)
  2. استنساخ المشروع مرة أخرى
    git clone url
  3. التبديل إلى devel فرع شجرة
    cd projectA && git -b devel origin/devel
  4. عرض الاختلافات مع ميلد
    meld /projectA_Master projectA

أليس هناك طريقة أسهل للحصول على نفس النتيجة في ميلد؟ أحتاجها فقط لمراجعة التغييرات وليس في المقام الأول للاندماج.

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

المحلول

لقد وجدت هذه المشكلة مزعجا، لذا فقد صنعت GIT Meld والتي تتيح وسيلة أكثر راحة لتفتيت التعسفية عن شجرة العمل أو منطقة التدريج. يمكنك العثور عليه في https://github.com/wmanley/git-meld. وبعد إنه مثل البرنامج النصي مارك ولكن يعمل مقارنة أي ارتكاب تعسفي أو منطقة التدريج أو دليل العمل من أي من الآخرين. إذا كان أحد الأشياء التي تقارن ضدها هي الشجرة العاملة بعد ذلك، فالكتب قراءة أيضا حتى لا تفقد تغييراتك.

نصائح أخرى

قصيرة وحلوة:

git config --global diff.tool meld

هذا تكوين GIT للاستخدام meld كما أداة diff. (لا تحتاج إلى تحديد وسيطات سطر الأوامر، ودعم meld بنيت في git.)

ثم، إذا كنت تريد فرق رسومي بدلا من نسخة نصية واحدة، فأنت ببساطة استدعاء git difftool بدلا من git diff (كلاهما يأخذ نفس الحجج). في حالتك:

git difftool master..devel

تحديث: إذا كنت لا تريد فرق واحد في الوقت المحدد، ولكن بدلا من ذلك، فأنت تريد استخدام عرض "الدليل الفرعي" في Meld مع جميع التغييرات بين الفرعين، لاحظ -d أو --dir-diff خيار git difftool. وبعد على سبيل المثال، عندما أكون على فرع XYZ وأريد أن أرى ما يختلف بين هذا وفرع ABC، قمت بتشغيل هذا:

git difftool -d ABC

بدءا من git v1.7.11، يمكنك استخدام git difftool --dir-diff لإجراء دليل فرق. التي تعمل بشكل جيد مع ميلد wihout https://github.com/wmanley/git-meld. نصوص.

تكوين git.

git config --global diff.tool meld

استخدامها

git difftool -d topic             // -d is --dir-diff
git difftool -d master..topic

لماوس

brew cask install meld
git config --global difftool.meld.cmd 'open -W -a Meld --args \"$LOCAL\" \"$PWD/$REMOTE\"'
git config --global difftool.meld.trustExitCode true

من المهم أن نقول ذلك باستخدام git difftool -d أنت لا يزال بإمكانه تحرير ملفات العمل الخاصة بك في ميلد و حفظها. وبعد من أجل تحقيق أنك تحتاج إلى مقارنة بعض الفرع لشجرة عملك الحالية، على سبيل المثال:

git difftool -d branchname

سوف يظهر ميلد أن الدلائل اليسرى والأيسر موجودة في / tmp. ومع ذلك، فإن الملفات الموجودة في الدليل الصحيح هي في الواقع روابط رمزية لملفاتك في دليل العمل الحالي (لا ينطبق على Windows). لذلك يمكنك تحريرها مباشرة في Meld وعند حفظها سيتم حفظ التغييرات الخاصة بك في Dir العامل الخاص بك.

ومع ذلك، فإن الخيار الأكثر إثارة للاهتمام هو مقارنة من Dir العامل الحالي مع Stash. يمكنك أن تفعل ذلك ببساطة الكتابة:

git difftool -d stash

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

أعتقد أنه يمكن أن يعزز سير العمل بشكل كبير مع Stashes. يمكنك نقل التغييرات تدريجيا من Stash إلى نسخ العمل والالتزام بها واحدا تلو الآخر، وإدخال بعض التغييرات الأخرى إذا كنت تريد.

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

http://gist.github.com/498628.

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

أعتقد طريقة سهلة للقيام بذلك تستخدم git reset --soft:

الهدف: مقارنة الاختلافات بين branch_a و branch_b مع ميلد

git checkout branch_a
git checkout -b do_diff
git reset --soft branch_b
meld .

في git v1.7.9 يمكنك مقارنة ارتكاب اثنين دون القائد:

يجب تكوين خيارات تحرير "GIT GUI"، عالمية: "استخدام أداة دمج: Meld".

يبدأ غيتك, ، حدد الالتزام، انقر بزر الماوس الأيمن فوق ارتكاب آخر> "Diff هذا -> المحدد". ضمن" التصحيح "، انقر بزر الماوس الأيمن فوق ملف>"فرق خارجي".

ميلد سوف تبدأ وعرض لا يزال محددا، ارتكب أولا على الجانب الأيمن.

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