উইন্ডোজে গিট: আপনি কীভাবে একটি মার্জেটুল সেট আপ করবেন?


346

আমি সাইজউইনে এমএসজিজিট এবং গিট চেষ্টা করেছি। উভয়ই নিজের মধ্যে এবং ঠিকঠাক কাজ করে এবং গিটক এবং গিট-গুই উভয়ই পুরোপুরি চালায়।

এখন কীভাবে আমি একটি মার্জেটুল কনফিগার করব? (ভিমডিফ সাইগউইন-এ কাজ করেন তবে আমাদের উইন্ডোজ-প্রেমী সহকর্মীদের জন্য আমি কিছুটা বেশি ব্যবহারকারী-বান্ধব চাই))



4
গিট এক্সটেনশনের একটি গিট ইউআই রয়েছে যা বেশ ভাল, এবং উইন্ডোজ ব্যবহারকারী বান্ধব, মার্জিং সরঞ্জাম।
ক্যালড্রেক্সিক্স

দেখে মনে হচ্ছে আপনার কচ্ছপ দরকার?
সের্গেই

উত্তর:


304

চার্লস বেইলের উত্তর অনুসরণ করতে, এখানে আমার গিট সেটআপ যা পি 4 তম (ফ্রি ক্রস প্ল্যাটফর্ম 3 ওয়ে মার্জ সরঞ্জাম) ব্যবহার করছে; এমএসজি গিট (উইন্ডোজ) ইনস্টলে পরীক্ষিত:

git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"'

অথবা, একটি উইন্ডোজ সেমিডি.এক্সি শেল থেকে, দ্বিতীয় লাইনটি হয়ে যায়:

git config --global mergetool.p4merge.cmd "p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\""

পরিবর্তনগুলি (চার্লস বেলির সাথে সম্পর্কিত):

  • গ্লোবাল গিট কনফিগারেশনে যুক্ত হয়েছে, যা কেবলমাত্র বর্তমানের নয়, সমস্ত গিট প্রকল্পের জন্য বৈধ
  • কাস্টম টুল কনফিগার মানটি "মার্জার্টুল। [সরঞ্জাম]। সিএমডি" এ থাকে "মেশানো নয় [
  • সমস্ত ফাইলের নামের জন্য ডাবল উক্তি যুক্ত করা হয়েছে যাতে ফাঁকা জায়গাগুলি থাকা ফাইলগুলি এখনও মার্জ সরঞ্জাম দ্বারা সন্ধান করতে পারে (আমি এটি পাওয়ারশেল থেকে এমএসএস গিতে পরীক্ষা করেছি)
  • নোট করুন যে ডিফল্টরূপে পারফোর্স PATH এর সাথে তার ইনস্টলেশন dir যুক্ত করবে, সুতরাং কমান্ডের মধ্যে p4 विसয়নের জন্য পুরো পথ নির্দিষ্ট করার দরকার নেই

ডাউনলোড করুন: http://www.perforce.com / উত্পাদক / কম্পোনেন্টস / কম্পোরস-ভিজ্যুয়াল- ড্যামার- এবং ডিফ- টুলস


সম্পাদনা (ফেব্রুয়ারী 2014)

দ্বারা সরু আউট হিসাবে @Gregory Pakosz , সর্বশেষ msys Git এখন "নেটিভ" সমর্থন p4merge (উপর পরীক্ষা 1.8.5.2.msysgit.0 )।

আপনি চালিত দ্বারা সমর্থিত সরঞ্জামগুলির তালিকা প্রদর্শন করতে পারেন:

git mergetool --tool-help

আপনি দেখতে পাবেন p4merge পারেন মধ্যে প্রাপ্তিসাধ্য বা বৈধ তালিকা। যদি তা না হয় তবে দয়া করে আপনার গিটটি আপডেট করুন।

তাহলে p4merge হিসেবে তালিকাভুক্ত করা হয়েছিল প্রাপ্তিসাধ্য , এটি আপনার মধ্যে আছে পাথ এবং আপনি শুধুমাত্র সেট করতে merge.tool :

git config --global merge.tool p4merge

যদি যেমন তালিকাভুক্ত হয়েছিল বৈধ , আপনি সংজ্ঞায়িত করতে হবে mergetool.p4merge.path ছাড়াও merge.tool :

git config --global mergetool.p4merge.path c:/Users/my-login/AppData/Local/Perforce/p4merge.exe
  • উপরেরটি উদাহরণস্বরূপ পাথরগুলি যখন বর্তমান ব্যবহারকারীর জন্য পি 4 ম্যাসার ইনস্টল করা হয়েছিল, সিস্টেম-ব্যাপী নয় (প্রশাসকের অধিকার বা ইউএসি উন্নয়নের প্রয়োজন নেই)
  • যদিও ~বর্তমান ব্যবহারকারীর হোম ডিরেক্টরিতে প্রসারিত হওয়া উচিত (সুতরাং তাত্ত্বিকভাবে পথটি হওয়া উচিত ~/AppData/Local/Perforce/p4merge.exe), এটি আমার পক্ষে কার্যকর হয়নি
  • এমনকি পরিবেশের পরিবর্তনশীল (যেমন $LOCALAPPDATA/Perforce/p4merge.exe) এর সুবিধা গ্রহণ করা আরও ভাল হত , গিটটি পাথগুলির জন্য পরিবেশের ভেরিয়েবলগুলি প্রসারিত করে বলে মনে হচ্ছে না (যদি আপনি কীভাবে এই কাজটি করতে হয় তা জানেন তবে দয়া করে আমাকে এই উত্তরটি জানান বা আপডেট করুন)

হুম - এটি চেষ্টা করে দেখুন - প্রথম কনফিগারটি ঠিকঠাকভাবে কাজ করে, পরেরটি গিট কনফিগারেশনের জন্য সহায়তা পাঠ্য প্রদর্শন করে। নিশ্চিত কেন।
ড্যানি স্ট্যাপল

1
বুঝেছি - এই একক উক্তিগুলি আমার কাছে সন্দেহজনক দেখাচ্ছে। এই মাত্র দ্বিগুণ এবং তারা কাজ।
ড্যানি স্ট্যাপল

13
mergetool.p4merge.cmdগিট পি 4 ড্যামার সমর্থন করার চেষ্টা শুরু করার পরে সেটিংস আর কাজ করবে না, দেখুন libexec/git-core/git-mergetool--lib। পরিবর্তে এটি সরাসরি ব্যবহার করেmergetool.p4merge.path
গ্রেগরি পাকোস্জ

5
পুরো পথটি রেখে ডাবল cmd = \""c:/Program Files/TortoiseSVN/bin/TortoiseMerge.exe"\" -base:"$BASE" -theirs:"$REMOTE" -mine:"$LOCAL" -merged:"$MERGED"
উক্তিগুলি

21
এটি আমার জন্য এটি করেছে: git config --global mergetool.p4merge.cmd '"C:\\Program Files\\Perforce\\p4merge" $BASE $LOCAL $REMOTE $MERGED'উইন্ডোজ 7 মেশিনে
ড্যান পি

88

গিটারটি পি 4 তমকে সমর্থন করার চেষ্টা শুরু করার পরে, গিটারটি আর গিটারের জন্য মার্জারুলের পথ নির্দিষ্ট করতে হবে, উদাহরণস্বরূপ পি 4 নিম:

git config --global mergetool.p4merge.path 'C:\Program Files\Perforce\p4merge.exe'
git config --global merge.tool p4merge

তাহলে এটা কাজ করবে।


1
পাশাপাশি 3 টি তুলনা করেও কাজ করে। পরিবর্তে কেবল বিম্পম্প.এক্সইয়ের পথটি ব্যবহার করুন। ধন্যবাদ!
রিচার্ড অ্যান্টনি হেইন

4
আমি বুঝতে পারি এটি একটি পুরানো থ্রেড, তবে আমি সেই পথে কাজ করতে পারি না। সেন্টিমিডি / এমএসএসির ইন্টারপ্লে দিয়ে পথটি কীভাবে পালানো হবে সে সম্পর্কে আমি কিছুটা বিভ্রান্ত ... এডিআইটি ডাবল উদ্ধৃতিতে স্যুইচিং এটি ঠিক করে দিয়েছে!
রুস্তাভোর

ধন্যবাদ গিটনিঞ্জা! নোট করুন আপনি এটি গিট ব্যাশে টাইপ করতে পারেন, তবে আপনি যদি কমান্ড প্রম্পট ব্যবহার করেন তবে আপনাকে অবশ্যই একক উদ্ধৃতিটি ডাবল উদ্ধৃতিতে পরিবর্তন করতে হবে
হাই ফোং

61

আমি উইনএক্সপি-তে পোর্টেবল গিট ব্যবহার করছি (একটি ট্রিট কাজ করে!), এবং শাখা-প্রশাখায় আগত একটি দ্বন্দ্ব সমাধানের প্রয়োজন। আমি যে সমস্ত গুই পরীক্ষা করেছি, তার মধ্যে কেডিফ 3 ব্যবহারের ক্ষেত্রে সবচেয়ে স্বচ্ছ হিসাবে প্রমাণিত হয়েছে।

তবে আমি এই ব্লগ পোস্টে এটি উইন্ডোতে কাজ করার জন্য আমার যে নির্দেশাবলীর প্রয়োজন ছিল তা পেয়েছি , নির্দেশাবলী যা এখানে তালিকাভুক্ত অন্যান্য পদ্ধতির থেকে কিছুটা পৃথক। এটি মূলত আমার .gitconfigফাইলে এই লাইনগুলি যুক্ত করার পরিমাণ :

[merge]
    tool = kdiff3

[mergetool "kdiff3"]
    path = C:/YourPathToBinaryHere/KDiff3/kdiff3.exe
    keepBackup = false
    trustExitCode = false

এখন সুন্দর কাজ!


13
আমার উইন PC পিসিতে আমাকে ব্যবহার করতে হয়েছিল path = C:\\Program Files (x86)\\KDiff3\\kdiff3.exe(ডাবল ব্যাক স্ল্যাশগুলি লক্ষ্য করুন)
কেউ কোথাও

আমি এর মতো একটি ত্রুটি পেয়েছি "ডিফ ডিভাইস মেল্ড 'ডি: \ সফ্টওয়্যার \ মেল্ডডিফ \ মেল্ডিফেক্স" হিসাবে উপলব্ধ নয় "
অ্যালেন ভর্ক

আপনি কি জানেন যে যেখানে প্রতিটি বিভাগ যুক্ত করা আছে তার সাথে কোনও পার্থক্য রয়েছে কিনা। মানে, [মার্জুল] যদি [মার্জেটুল] এর পরে হত?
স্যামুয়েল 21

20

সাইগউইনের অধীনে, আমার পক্ষে কাজ করা একমাত্র কাজটি হ'ল:

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)"'

এছাড়াও, আমি ডিফ্টোলের জন্য প্রম্পট বার্তাটি বন্ধ করতে চাই:

git config --global difftool.prompt false

16

git mergetool সম্পূর্ণরূপে কনফিগারযোগ্য যাতে আপনি আপনার পছন্দসই সরঞ্জামটি বেশ পছন্দ করতে পারেন।

পুরো ডকুমেন্টেশনটি এখানে: http://www.kernel.org/pub/software/scm/git/docs/git-mergetool.html

সংক্ষেপে, আপনি ব্যবহারকারী কনফিগার ভেরিয়েবল সেট করে একটি ডিফল্ট মার্জটুল সেট করতে পারেন merge.tool

যদি একত্রীকরণের সরঞ্জামটি এর দ্বারা সমর্থিত একগুলির মধ্যে থাকে তবে আপনাকে কেবলমাত্র mergetool.<tool>.pathসরঞ্জামটির পুরো পথটি সেট করতে হবে (আপনি যেটি <tool>কনফিগার করেছেন তা প্রতিস্থাপন করুন merge.tool

অন্যথায়, mergetool.<tool>.cmdরানফলের সময় $BASE, $LOCAL, $REMOTE, $MERGEDযথাযথ ফাইলগুলিতে সেট করা শেল ভেরিয়েবলের সাহায্যে আপনি কিছুটা শেল সেট করতে পারেন। আপনি সরাসরি কোনও কনফিগার ফাইল সম্পাদনা করতে পারেন বা git configকমান্ডটি দিয়ে ভেরিয়েবল সেট করেছেন কিনা সে সম্পর্কে আপনাকে পালানোর ক্ষেত্রে কিছুটা সতর্কতা অবলম্বন করতে হবে ।

এর মতো কিছুতে আপনি কী করতে পারেন তার স্বাদ দেওয়া উচিত ('মাইমার' একটি কাল্পনিক সরঞ্জাম)।

git config merge.tool mymerge
git config merge.mymerge.cmd 'mymerge.exe --base "$BASE" "$LOCAL" "$REMOTE" -o "$MERGED"'

একবার আপনি নিজের পছন্দের সংযুক্তির সরঞ্জামটি সেটআপ করলে, git mergetoolযখনই আপনার সমাধানের জন্য বিরোধ রয়েছে তখন এটি কেবল চালানোর বিষয় ।

পেরফোর্স থেকে পি 4 মজাদার সরঞ্জামটি বেশ ভাল স্ট্যান্ডেলোন একীকরণ সরঞ্জাম।


8

উইন্ডোজ on এ তুলনার বাইরে

git config --global merge.tool bc3
git config --global mergetool.bc3.path "C:\Program Files (x86)\Beyond Compare 3\BCompare.exe"

2
আমি এই কমান্ডগুলি ব্যবহার করেছিলাম তবে আমি তুলনা ছাড়িয়ে উইনমার্গ ব্যবহার করছি।
ব্রেন্ট কেলার

6

দেখে মনে হয় যে নতুন গিট সংস্করণগুলি সরাসরি p4 विसর সমর্থন করে

git config --global merge.tool p4merge

আপনার প্রয়োজন অনুসারে, p4 विसর। সেন্টিমিডি বা পথ স্থাপনের দরকার নেই।


এটি কী। পি 4 মেমার ইনস্টল করার পরে এবং মার্জেটুল.৪৪ ডাবর.পথটি সঠিক স্থানে সেট করার পরেও এটি কার্যকর হয়নি। পাথের সাথে ইনস্টলেশন ফোল্ডার যুক্ত করা কাজ করে।
রিচার্ডএম


4

উইন্ডোজ on তে এমএসজিজিট ব্যবহার করে আমাকে অতিরিক্ত উদ্ধৃতি ফেলে দিতে হয়েছিল, কেন তা নিশ্চিত নয়।

git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED'

3

আপনি যদি সাইগউইনের মাধ্যমে এটি করেন তবে আপনার সাইকপথ ব্যবহারের প্রয়োজন হতে পারে:

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`'

3

বাহ, অবশেষে এটি আমার জন্য কাজ করেছে (উইন্ডোজ 7 + সাইগউইন + টর্টোইজ মর্জ):

.Git / কনফিগারেশনে:

cmd = TortoiseMerge.exe /base:$(cygpath -d \"$BASE\") /theirs:$(cygpath -d \"$REMOTE\") /mine:$(cygpath -d \"$LOCAL\") /merged:$(cygpath -d \"$MERGED\")

সাইগপথ ব্যবহারের টিপটির জন্য আগের পোস্টারগুলিকে ধন্যবাদ!


3

আমি তাদের ম্যানুয়াল থেকে তথ্য WinMerge (http://Winmitted.org/ ) নামক একটি অ্যাপ্লিকেশন ব্যবহার করি ( http://manual.win নিম.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"

মূলত বাশ অ্যাকাউন্ট খালি ফাইলের মধ্যে পৃথক হওয়ার ফলাফলের জন্য থাকে এবং সঠিক স্থানে একটি নতুন টেম্প ফাইল তৈরি করে।


3

গিথাব উইন্ডোজে ডিফ্টল এবং মার্জেটুল হিসাবে " সোর্সগিয়ার ডিফফর্মজ " কনফিগার করার দুটি উপায় খুঁজে পেয়েছি ।

কমান্ড প্রম্পট উইন্ডোতে নিম্নলিখিত কমান্ডগুলি জিআইটি ব্যবহার ডিফফর্ম ব্যবহার করতে কনফিগার করতে আপনার .gitconfig আপডেট করবে:

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 এ নিম্নলিখিত লাইনগুলি যুক্ত করুন। এই ফাইলটি আপনার সি ডিরেক্টরিতে হোম ডিরেক্টরিতে থাকা উচিত: \ ব্যবহারকারী \ ব্যবহারকারী নাম:

[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\"

1

আপনি এই বিকল্পগুলি যুক্ত করতেও পারেন:

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

এছাড়াও, কেন আমি জানি না মিলান গার্ডিয়ান এর উত্তর থেকে উদ্ধৃতি দেওয়া এবং স্ল্যাশ করা জিনিসগুলি আমার জন্য খারাপ করে দিয়েছে।


1

যদি কেউ টর্টোইজগিতে জিভিএমকে তাদের ডিফ সরঞ্জাম হিসাবে ব্যবহার করতে চায় তবে বাহ্যিক ডিফ সরঞ্জামটির পথের জন্য আপনাকে পাঠ্য ইনপুটটিতে প্রবেশ করতে হবে:

path\to\gvim.exe -f -d -c "wincmd R" -c "wincmd R" -c "wincmd h" -c "wincmd J"

1

ইন্টেলিজ আইডিইএ (সম্প্রদায় সংস্করণ) এর জন্য উইন্ডোজ পরিবেশে 3-উপায় গিট মার্জারটুল কনফিগারেশন ( ~/.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 হ'ল পাথগুলিকে এমএসএসে উইন্ডোজ রূপান্তর করতে হয় এবং স্ট্যাকওভারফ্লোতে এমএসএস পাথ রূপান্তর প্রশ্ন থেকে নেওয়া হয়

#! /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 "$@" 

0

উভয় মার্জ এবং ডিফের জন্য উইন্ডোজে চকোলেটির সাহায্যে ইনস্টল করা পি 4 মেমার সেটআপ করতে, এখানে একবার দেখুন: https://gist.github.com/CamW/88e95ea8d9f0786d746a


0

তোমার জন্য স্থানীয় কনফিগারেশন ফাইল নামে SourceTree বর্ণন থেকে p4merge খোলার সমস্যা হয় তাহলে কনফিগ MyRepo.git অধীনে এবং কোন একত্রীকরণ কনফিগারেশন মুছে দিন। আমার ক্ষেত্রে এটি মেল্ডটি খোলার চেষ্টা করছিল যা আমি কেবল আনইনস্টল করেছিলাম

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.