جيت على ويندوز:كيف يمكنك إعداد mergetool?
سؤال
لقد حاولت msysGit و جيت على Cygwin.سواء تعمل على ما يرام في حد ذاتها و كل تشغيل gitk و بوابة واجهة المستخدم الرسومية تماما.
الآن كيف هيك هل تكوين mergetool?(Vimdiff يعمل على Cygwin, ولكن يفضل أود شيئا قليلا أكثر سهولة على ويندوز المحبة زملاء العمل.)
المحلول
متابعة تشارلز بيلي الجواب ، جيت إعداد باستخدام p4merge (مجانا عبر منصة 3way دمج أداة);اختبار على msys بوابة (ويندوز) تثبيت:
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"'
أو من windows cmd.exe شل الخط الثاني يصبح :
git config --global mergetool.p4merge.cmd "p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
التغييرات (نسبة إلى تشارلز بايلي):
- إضافة إلى العالمية من بوابة التكوين ، أيصالحة لجميع بوابة المشاريع الحالية
- مخصصة أداة التكوين قيمة يقيم في "mergetool.[أداة].cmd" لا "دمج.[أداة].cmd" (سخيفة لي, قضيت ساعة استكشاف الأخطاء وإصلاحها لما جيت تبقى تشكو من عدم وجود أداة)
- وأضاف التنصيص على جميع أسماء الملفات حتى الملفات ذات المساحات لا يزال يمكن العثور عليها عن طريق دمج أداة (أنا اختبرت هذا في msys جيت من Powershell)
- ملاحظة بشكل افتراضي بالضرورة إضافة نصبها dir المسار, وبالتالي لا تحتاج إلى تحديد المسار الكامل إلى p4merge في الأمر
تحميل: http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools
تحرير (Feb 2014)
كما أشار @غريغوري Pakosz, أحدث msys بوابة الآن "أصلا" يدعم p4merge (اختبار على 1.8.5.2.msysgit.0).
يمكنك عرض قائمة أدوات تشغيل:
git mergetool --tool-help
يجب أن نرى p4merge إما المتاحة أو صالح قائمة.إذا كان لا يرجى تحديث بوابة.
إذا p4merge كما تم إدراج المتاحة, في المسار و لديك فقط لتعيين دمج.أداة:
git config --global merge.tool p4merge
إذا كانت مدرجة صالح, عليك أن تحدد mergetool.p4merge.المسار بالإضافة إلى دمج.أداة:
git config --global mergetool.p4merge.path c:/Users/my-login/AppData/Local/Perforce/p4merge.exe
- ما سبق هو مثال على الطريق عندما p4merge تم تثبيت للمستخدم الحالي ، ليس على مستوى المنظومة (لا تتطلب حقوق المسؤول أو UAC الارتفاع)
- على الرغم من أن
~
يجب أن التوسع الحالي في الدليل الرئيسي للمستخدم (حتى من الناحية النظرية يجب أن يكون المسار~/AppData/Local/Perforce/p4merge.exe
) هذا لم يعمل بالنسبة لي - والأفضل أن يكون من الاستفادة من بيئة متغيرة (على سبيل المثال
$LOCALAPPDATA/Perforce/p4merge.exe
), بوابة لا يبدو أن توسيع متغيرات البيئة على مسارات (إذا كنت تعرف كيفية الحصول على هذا العمل ، يرجى اسمحوا لي أن أعرف أو تحديث هذا الجواب)
نصائح أخرى
وتحديد وmergetool.p4merge.cmd لا تعمل بعد الآن منذ بدأت جيت في محاولة لدعم p4merge، انظر libexec / بوابة النواة / git-mergetool--lib.so نحن بحاجة فقط لتحديد المسار mergetool للبوابة، على سبيل المثال وp4merge:
git config --global mergetool.p4merge.path 'C:\Program Files\Perforce\p4merge.exe'
git config --global merge.tool p4merge
وبعد ذلك سوف تنجح.
وأنا باستخدام بوابة المحمولة على ويندوز إكس بي (يعمل على علاج!)، وتحتاج إلى حل الصراع الذي جاء في المتفرعة. من كل عام واجهة المستخدم الرسومية راجعت، KDiff3 ثبت أن الأكثر شفافية للاستخدام.
ولكن وجدت تعليمات كنت بحاجة للحصول على انها تعمل في ويندوز في <لأ href = "http://www.blog.project13.pl/index.php/coding/1192/setup-git-on-windows- لاستخدام kdiff3 كما هو وله في mergetool / "يختلط =" noreferrer "> هذا بلوق وظيفة أو التعليمات التي تختلف قليلا عن المناهج الأخرى المذكورة هنا. فقد بلغت أساسا إلى إضافة هذه الأسطر إلى ملفي .gitconfig
:
[merge]
tool = kdiff3
[mergetool "kdiff3"]
path = C:/YourPathToBinaryHere/KDiff3/kdiff3.exe
keepBackup = false
trustExitCode = false
العمل بشكل جيد الآن!
تحت Cygwin ، فقط الشيء الذي عملت بالنسبة لي هو ما يلي:
git config --global merge.tool myp4merge
git config --global mergetool.myp4merge.cmd 'p4merge.exe "$(cygpath -wla $BASE)" "$(cygpath -wla $LOCAL)" "$(cygpath -wla $REMOTE)" "$(cygpath -wla $MERGED)"'
git config --global diff.tool myp4diff
git config --global difftool.myp4diff.cmd 'p4merge.exe "$(cygpath -wla $LOCAL)" "$(cygpath -wla $REMOTE)"'
أيضا أحب أن إيقاف رسالة فورية عن difftool:
git config --global difftool.prompt false
وgit mergetool
هو تماما شكلي بحيث يمكنك حد كبير اختار أداة المفضلة لديك.
والوثائق الكاملة هنا هو: HTTP: // www.kernel.org/pub/software/scm/git/docs/git-mergetool.html
وباختصار، يمكنك تعيين mergetool الافتراضي من خلال وضع المستخدم التكوين merge.tool
متغير.
إذا الأداة دمج هي واحدة من تلك المعتمدة أصلا من قبل أنه لديك فقط لتحديد mergetool.<tool>.path
إلى المسار الكامل إلى أداة (استبدال <tool>
من خلال ما قمت بتكوين merge.tool
أن يكون.
وعلى خلاف ذلك، يمكنك تعيين mergetool.<tool>.cmd
إلى قليلا من قذيفة إلى أن eval'ed في وقت التشغيل مع المتغيرات قذيفة $BASE, $LOCAL, $REMOTE, $MERGED
لتعيين الملفات المناسبة. عليك أن تكون حذرا بعض الشيء مع الهروب سواء قمت بتحرير ملف التكوين مباشرة أو تعيين المتغير مع الأمر git config
.
وشيء من هذا القبيل يجب أن تعطي نكهة ما يمكنك القيام به ( 'mymerge' هو أداة خيالية).
git config merge.tool mymerge
git config merge.mymerge.cmd 'mymerge.exe --base "$BASE" "$LOCAL" "$REMOTE" -o "$MERGED"'
وبمجرد إعداد أداة دمج المفضلة لديك، انها مجرد مسألة تشغيل git mergetool
كلما كان لديك الصراعات لحلها.
وأداة p4merge من بالضروره هي أداة دمج بذاتها جيدة.
للا سبيل للمقارنة على ويندوز 7
git config --global merge.tool bc3
git config --global mergetool.bc3.path "C:\Program Files (x86)\Beyond Compare 3\BCompare.exe"
ويبدو أن أحدث إصدارات بوابة تدعم p4merge مباشرة، لذلك
git config --global merge.tool p4merge
يجب أن يكون كل ما تحتاجه، إذا p4merge.exe على المسار. لا حاجة لاقامة كمد أو المسار.
وكان لي لإسقاط خارج نقلا عن استخدام msysGit على ويندوز 7، وليس متأكدا من السبب.
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED'
إذا كنت تفعل ذلك من خلال سيغوين، قد تحتاج إلى استخدام cygpath:
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge `cygpath -w $BASE` `cygpath -w $LOCAL` `cygpath -w $REMOTE` `cygpath -w $MERGED`'
وباه، وهذا <م> أخيرا م> عملت بالنسبة لي (ويندوز 7 + سيغوين + TortoiseMerge):
في. بوابة / التكوين:
cmd = TortoiseMerge.exe /base:$(cygpath -d \"$BASE\") /theirs:$(cygpath -d \"$REMOTE\") /mine:$(cygpath -d \"$LOCAL\") /merged:$(cygpath -d \"$MERGED\")
وبفضل الملصقات السابقة لهذه المعلومة لاستخدام cygpath!
ويمكنني استخدام التطبيق يسمى ينمرغ ( http://winmerge.org/ ) معلومات من دليل على ( http://manual.winmerge.org/CommandLine.html )
وهذا هو السيناريو باش ط استخدام من التوجيه mergetool
عبر .gitconfig
#!/bin/sh
# using winmerge with git
# replaces unix style null files with a newly created empty windows temp file
file1=$1
if [ "$file1" == '/dev/null' ] || [ "$file1" == '\\.\nul' ] || [ ! -e "$file1" ]
then
file1="/tmp/gitnull"
`echo "">$file1`
fi
file2=$2
if [ "$file2" == '/dev/null' ] || [ "$file2" == '\\.\nul' ] || [ ! -e "$file2" ]
then
file2="/tmp/gitnull"
`echo "">$file2`
fi
echo diff : $1 -- $2
"C:\Program files (x86)\WinMerge\WinMergeU.exe" -e -ub -dl "Base" -dr "Mine" "$file1" "$file2"
وأساسا حسابات باش لأنه عندما نتيجة للفرق في ملف فارغ ويخلق ملف مؤقت جديد في الموقع الصحيح.
وجدت طريقتين لتكوين "SourceGear DiffMerge"كما difftool و mergetool في جيثب ويندوز.
الأوامر التالية في موجه الأوامر سيتم تحديث الخاص بك .gitconfig لتكوين استخدام بوابة DiffMerge:
git config --global diff.tool diffmerge
git config --global difftool.diffmerge.cmd 'C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\"'
git config --global merge.tool diffmerge
git config --global mergetool.diffmerge.cmd 'C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe -merge -result=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"'
[أو]
أضف الأسطر التالية إلى ملف .gitconfig.وينبغي أن يكون هذا الملف في الدليل الرئيسي الخاص بك في C:\Users\UserName:
[diff]
tool = diffmerge
[difftool "diffmerge"]
cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\"
[merge]
tool = diffmerge
[mergetool "diffmerge"]
trustExitCode = true
cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe -merge -result=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"
وأنت قد تحتاج إلى إضافة هذه الخيارات أيضا:
git config --global merge.tool p4mergetool
git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED'
git config --global mergetool.p4mergetool.trustExitCode false
git config --global mergetool.keepBackup false
وأيضا، وأنا لا أعرف لماذا ولكن نقلا عن والقطع من الأشياء ميلان Gardian في الإجابة ثمل بالنسبة لي.
وإذا كان أي شخص يريد استخدام gvim كأداة فرق على تورتويز جت، ثم وهذا هو ما تحتاجه للدخول في إدخال النص لمسار إلى أداة فرق الخارجية:
path\to\gvim.exe -f -d -c "wincmd R" -c "wincmd R" -c "wincmd h" -c "wincmd J"
على فكرة IntelliJ (المجتمع Edition) 3-طريقة بوابة mergetool التكوين في بيئة ويندوز (~/.gitconfig
)
Cygwin
[mergetool "ideamerge"]
cmd = C:/Program\\ Files\\ \\(x86\\)/JetBrains/IntelliJ\\ IDEA\\ Community\\ Edition\\ 14.1.3/bin/idea.exe merge `cygpath -wa $LOCAL` `cygpath -wa $REMOTE` `cygpath -wa $BASE` `cygpath -wa $MERGED`
[merge]
tool = ideamerge
Msys
[mergetool "ideamerge"]
cmd = "/c/Program\\ Files\\ \\(x86\\)/JetBrains/IntelliJ\\ IDEA\\ Community\\ Edition\\ 14.1.3/bin/idea.exe" merge `~/winpath.sh $LOCAL` `~/winpath.sh $REMOTE` `~/winpath.sh $BASE` `~/winpath.sh $MERGED`
[merge]
tool = ideamerge
و ~/winpath.sh هو تحويل مسارات ويندوز على msys و هو مأخوذ من msys طريق تحويل السؤال على ستاكوفيرفلوو
#! /bin/sh
function wpath {
if [ -z "$1" ]; then
echo "$@"
else
if [ -f "$1" ]; then
local dir=$(dirname "$1")
local fn=$(basename "$1")
echo "$(cd "$dir"; echo "$(pwd -W)/$fn")" | sed 's|/|\\|g';
else
if [ -d "$1" ]; then
echo "$(cd "$1"; pwd -W)" | sed 's|/|\\|g';
else
echo "$1" | sed 's|^/\(.\)/|\1:\\|g; s|/|\\|g';
fi
fi
fi
}
wpath "$@"
لp4merge الإعداد، تثبيتها باستخدام تشوكولاتيي على النوافذ لكلا دمج وفرق، نلقي نظرة هنا: https://gist.github.com/CamW/88e95ea8d9f0786d746a
إذا كنت تواجه مشاكل في فتح p4merge من SourceTree تبدو لك ملف التكوين محلي يدعى على التهيئة ضمن MyRepo.git وحذف أي تكوين الدمج. في حالتي كان يحاول فتح أخلط الذي أنا إلغاء تثبيت فقط