.Gitconfig দিয়ে ডিফ ডিভাইস কনফিগার করছে


159

.Gitconfig ফাইলের সাথে পৃথক করার জন্য আমি কীভাবে গিটকে কনফিগার করব?

আমার .gitconfig এ এটি আছে:

[diff]
    tool = git-chdiff #also tried /bin/git-chdiff

এটা কাজ করে না; এটি কেবল নিয়মিত কমান্ড লাইনটি পৃথক করে। যখন আমি করি

export GIT_EXTERNAL_DIFF=git-chdiff

তারপরে git diffবাহ্যিক ডিফিং সরঞ্জামটি খুলবে (সুতরাং আমি জানি বাহ্যিক ডিফ সরঞ্জাম সরঞ্জামটি স্ক্রিপ্টটি ভাল কাজ করে)। ডিফ সরঞ্জামটির জন্য আমার .gitconfig কনফিগারেশনটিতে আমার কিছু ভুল আছে?


1
দেখুন stackoverflow.com/questions/255202/... (সম্ভবত ঘনিষ্ঠ এই ডুপ্লিকেট হিসাবে)
স্টেইন জি Strindhaug

উত্তর:


140

গিট বিভিন্ন ধরণের ডিফ্টলগুলি প্রাক-কনফিগার করা "আউট-অফ-বাক্স" (কেডিফ 3, কোম্পার, টেকডিফ, মেল্ড, এক্সএক্সডিফ, উত্থাপন, ভিমডিফ, জিভিমডিফ, ইমার্জ, ডিফিউজ, ওপেনিডেফ, পি 4 ডিমে এবং আরাক্সিস) সরবরাহ করে এবং আপনাকে অনুমতি দেয় আপনার নিজের নির্দিষ্ট করতে। প্রাক-কনফিগার করা ডিফ্টলগুলির একটি ব্যবহার করতে (উদাহরণস্বরূপ, "ভিমডিফ"), আপনি নীচের লাইনগুলি এতে যুক্ত করুন ~/.gitconfig:

[diff]
    tool = vimdiff

এখন, আপনি "গিট ডিফ্টল" চালাতে সক্ষম হবেন এবং আপনার পছন্দসই সরঞ্জামটি ব্যবহার করতে পারবেন।

অন্যদিকে আপনার নিজস্ব ডিফ্টলটি নির্দিষ্ট করে, আরও কিছুটা বেশি সময় নেয়, দেখুন আমি কীভাবে আমার পছন্দসই ডিফ ডিভাইস / দর্শকের সাহায্যে 'গিট ডিফ' আউটপুট দেখতে পারি?


প্রথম লিঙ্কটি নষ্ট হয়ে গেছে। মনে হচ্ছে ডোমেন থেকে পরিবর্তিত হয়েছে .comথেকে .org। আমি jeetworks.org/software
RBT

1
একটি প্রাক কনফিগার করা "অফ-অফ-বক্স" ডিফ্টল বলতে কী বোঝ? আপনার তালিকায় নেই এমন একটি বাহ্যিক ডিফ সরঞ্জাম "উইনমার্জ" সেট আপ করতে আমাকে আপনার পোস্টে উল্লিখিত খুব একই সেটিংসটি করতে হয়েছিল এবং কোনও অতিরিক্ত কনফিগারেশন ছাড়াই সবকিছুই কাজ শুরু করেছিল। সুতরাং এর অর্থ কি এই যে গিটটি "উইনমার্জ" কে বক্সের বাইরেও সমর্থন করে কারণ আপনার পোস্ট থেকে আমি যতটা বুঝতে পারি যে একটি ডিফ সরঞ্জামের সেটআপ করতে কিছু অতিরিক্ত কাজ / সেটিংস / কনফিগারেশন প্রয়োজন যা আউট অফ অফ সমর্থিত নয় গিট দ্বারা বক্স
আরবিটি

169

এটি করার একটি অতিরিক্ত উপায় (কমান্ড লাইন থেকে):

git config --global diff.tool tkdiff
git config --global merge.tool tkdiff
git config --global --add difftool.prompt false

প্রথম দুটি লাইন ডিফ্টল এবং মার্জেটুলকে সেট করবে tkdiff- আপনার পছন্দ অনুযায়ী পরিবর্তন করুন। তৃতীয় লাইন বিরক্তিকর প্রম্পটটি অক্ষম করে তাই আপনি যখনই git difftoolএটি আঘাত করবেন তখন স্বয়ংক্রিয়ভাবে ডিফ্টলটি চালু করবে।


11
আমি করেছি git config --global diff.tool diffmergeকিন্তু যখন আমি git diff myfile.txtএটি করেছি তখনও আমাকে ডিফল্ট ইউনিক্সের পার্থক্যটি দিয়েছে
উভচরক্ষীরা

সম্ভবত আপনার একটি স্থানীয় কনফিগারেশন রয়েছে যা অন্য একটি পৃথক সরঞ্জাম সংজ্ঞায়িত করে?
ওমর দাগান

1
সম্ভবত আপনাকে আলাদা করতে সঠিক প্যারামিটারগুলি পাস করতে হবে: এই লিঙ্কটি কীভাবে এটি মেল্ডের
to-

5
@ সাম্প্রতিক: টুলটি ব্যবহার করতে গিট ডিফ ডিভাইস মাইফিল.টিএসটিএক্স চেষ্টা করুন ।
জেবিআরউইলকিনসন

72

অন্যরা এটির বিষয়ে 99% উত্তর দিয়েছেন, তবে একটি পদক্ষেপ বাকি আছে। (আমার উত্তর ওএস এক্স থেকে আসবে তাই আপনাকে সেই অনুযায়ী ফাইলের পথ পরিবর্তন করতে হবে))

আপনি এই পরিবর্তনগুলি আপনার ~/.gitconfig:

[diff]
    tool = diffmerge
[difftool "diffmerge"]
    cmd = /Applications/Diffmerge.app/Contents/MacOS/diffmerge $LOCAL $REMOTE

এটি ডিফ সরঞ্জামটি ঠিক করবে। আপনি ~/.gitconfigটার্মিনাল থেকে এই আদেশগুলি প্রবেশ করে সরাসরি সম্পাদনা না করে এটিও ঠিক করতে পারেন :

git config --global diff.tool diffmerge
git config --global difftool.diffmerge.cmd "/Applications/DiffMerge.appContents/MacOS/diffmerge \$LOCAL \$REMOTE"

1% যা উল্লেখ করার ক্ষেত্রে অন্য সবাই ব্যর্থ হয়েছিল তা হ'ল এটি ব্যবহার করার সময় আপনি কেবল চালাতে পারবেন না git diff myfile.txt; আপনি চালাতে প্রয়োজন git difftool myfile.txt


23
সর্বশেষ 1% এর জন্য উত্সাহিত। সম্পূর্ণভাবে আঘাত করা পেরেকের মতো সন্তোষজনক কিছুই নেই;)
টাইটো

1
এটিকে ডিফল্ট সরঞ্জাম করার কোনও উপায় আছে কি?
math0ne

6
দুর্দান্ত, আপনি git config --global --add difftool.prompt falseযদিও পদক্ষেপটি মিস করছেন । ;)
সুমা

36

এখানে আমার ~ / .gitconfig এর সেই অংশটি যেখানে আমি ডিফ এবং মেশিন সরঞ্জামগুলি কনফিগার করি। আমি সোর্সগিয়ার দ্বারা বিচ্ছুরিত পছন্দ করি। (আমি সত্যই এটি খুব পছন্দ করি)।

[merge]
        tool = diffmerge
[mergetool "diffmerge"]
        cmd = "diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$REMOTE\""
        trustExitCode = false
[diff]
        tool = diffmerge
[difftool "diffmerge"]
        cmd = diffmerge \"$LOCAL\" \"$REMOTE\"

সুতরাং, আপনি দেখুন, আপনি [difftool "diffmerge"]লাইনে "বিস্মরণ" নামে একটি সরঞ্জাম নির্ধারণ করছেন । তারপরে আমি বিভাগটিতে ডিফল্ট হিসাবে "ডিফরমার" সরঞ্জামটি সেট করছি [diff] tool =

স্পষ্টতই এখানে আমার পথে "বিচ্ছুরণ" কমান্ড রয়েছে। অন্যথায় আমাকে এক্সিকিউটেবলের জন্য একটি পুরো পথ দেওয়ার দরকার ছিল।


সমস্ত ব্যাকস্ল্যাশ এড়ানো ছাড়াই:diffmerge --merge --result="$MERGED" "$LOCAL" "$(if test -f "$BASE"; then echo "$BASE"; else echo "$LOCAL"; fi)" "$REMOTE"
টিম লাভল-স্মিথ

1
আমি সরল সাথে যাচ্ছিdiffmerge --merge --result="$MERGED" "$LOCAL" "$BASE" "$REMOTE"
টিম লাভল-স্মিথ

এবং সাইগউইন থেকে উইন্ডোজ সংস্করণটি সহজেই ব্যবহারযোগ্য করার জন্য এটি একটি সহজ 'এসজিডিএম_সাইগুইন.শ' স্ক্রিপ্ট পেয়েছে।
thoni56

সুতরাং আপনি ঠিক করতে পারেন ln-s <pathtodiffmerge>/sgdm_cygwin.sh /usr/local/bin/diffmergeএবং আপনি উপরের কনফিগারেশনটি ব্যবহারের জন্য প্রস্তুত। পাশাপাশি diffmergeসরাসরি সাইগউইন পাথ সহ সাইগউইন কমান্ড লাইন থেকে।
thoni56

sgdm.exeআজকাল এটি হবে
kzu

22

এই থ্রেড থেকে আমার উত্তর পুনরুত্পাদন যা গিটের জন্য ডিফ সরঞ্জাম হিসাবে তুলনা ছাড়িয়ে সেট করার ক্ষেত্রে আরও নির্দিষ্ট। আমি যে সমস্ত বিবরণ ভাগ করে নিয়েছি তা সাধারণভাবে যে কোনও ডিফ সরঞ্জামের জন্য সমানভাবে কার্যকর তাই এটি এখানে ভাগ করে নিন:

আমরা চালিত প্রথম কমান্ডটি নীচের মত:

git config --global diff.tool bc3

উপরের কমান্ডটি ডিরেক্টরিতে .gitconfigপাওয়া নীচে এন্ট্রি তৈরি করে %userprofile%:

[diff]
    tool = bc3

তারপরে আপনি কমান্ডের নীচে রান করুন ( এই বিশেষ কমান্ডটি চালানো এই কমান্ডটি অপ্রয়োজনীয় এবং কিছু বিশেষ ক্ষেত্রে কেবল এটি প্রয়োজনীয় You আপনি এটি অল্প সময়ের মধ্যেই জানতে পারবেন ):

git config --global difftool.bc3.path "c:/program files/beyond compare 3/bcomp.exe"

উপরের কমান্ডটি .gitconfigফাইলটিতে প্রবেশের নীচে তৈরি করে :

[difftool "bc3"]
    path = c:/program files/Beyond Compare 3/bcomp.exe

এখানে জানার বিষয়টির মূল কথাটি bc3। এটি বাজারে উপলব্ধ সুপরিচিত তুলনা সরঞ্জামের নির্দিষ্ট সংস্করণের সাথে সম্পর্কিত গিটের একটি সুপরিচিত কী (তুলনা সরঞ্জামের bc3বাইরে 3 য় সংস্করণের সাথে সঙ্গতিপূর্ণ)। আপনি যদি সমস্ত পূর্বনির্ধারিত কী দেখতে চান তবে git difftool --tool-helpগিট ব্যাশের উপর কেবল কমান্ড চালান । এটি তালিকার নীচে ফিরে আসে:

vimdiff
vimdiff2
vimdiff3
araxis
bc
bc3
codecompare
deltawalker
diffmerge
diffuse
ecmerge
emerge
examdiff
gvimdiff
gvimdiff2
gvimdiff3
kdiff3
kompare
meld
opendiff
p4merge
tkdiff
winmerge
xxdiff

আপনি উপরের যে কোনওটি কী ব্যবহার করতে পারেন বা নিজস্ব কাস্টম কী সংজ্ঞায়িত করতে পারেন। আপনি যদি একটি নতুন সরঞ্জাম পুরোপুরি সেটআপ করতে চান (বা সুপরিচিত সরঞ্জামটির সদ্য প্রকাশিত সংস্করণ) যা উপরের তালিকাভুক্ত যে কোনও কীতে মানচিত্র তৈরি করে না তবে আপনি উপরের তালিকাভুক্ত যে কোনও কীতে এটি ম্যাপ করতে পারবেন বা নতুনকে আপনার নিজস্ব কাস্টম কী।

যদি আপনাকে কোনও তুলনা সরঞ্জাম সেটআপ করতে হয় যা এটি

  • একেবারে নতুন বাজারে

অথবা

  • বিদ্যমান সুপরিচিত সরঞ্জামটির একটি নতুন সংস্করণ প্রকাশিত হয়েছে যা গিটের কোনও পূর্বনির্ধারিত কীগুলিতে ম্যাপ করা হয়নি ?

আমার ক্ষেত্রে, আমি তুলনা 4 ছাড়িয়েও ইনস্টল করেছি compare তুলনা ছাড়াই গিট করার একটি সুপরিচিত সরঞ্জাম তবে এর সংস্করণ 4 রিলিজটি ডিফল্টরূপে বিদ্যমান কীগুলির কোনওতে ম্যাপ করা হয়নি। সুতরাং আপনি নীচের যে কোনও পদ্ধতির অনুসরণ করতে পারেন:

  1. আমি ইতিমধ্যে বিদ্যমান কীতে তুলনা 4 সরঞ্জামের বাইরে ম্যাপ করতে পারি bc3যা 3 সংস্করণের তুলনা ছাড়িয়ে যায়। আমার কম্পিউটারে তুলনা সংস্করণ 3 এর বাইরে নেই তাই আমি যত্ন নিই না। যদি আমি চেয়েছিলাম আমি উপরের তালিকায় এছাড়াও যেমন প্রাক-সংজ্ঞায়িত কী কোন এটিকে ম্যাপ পারতেন examdiff

    আপনি যদি ইতিমধ্যে বিদ্যমান / সুপরিচিত কীগুলিতে সরঞ্জামগুলির সুপরিচিত সংস্করণটি মানচিত্র করেন তবে আপনার দ্বিতীয় কমান্ডটি চালানোর দরকার নেই কারণ তাদের ইনস্টল করার পথটি ইতিমধ্যে গিট হিসাবে পরিচিত

    উদাহরণস্বরূপ, যদি আমি আমার বাক্সে তুলনা সংস্করণ 3 ছাড়িয়ে ইনস্টল করে থাকি তবে আমার .gitconfigফাইলে কনফিগারেশনের নীচে থাকা যথেষ্ট হবে:

    [diff]
    tool = bc3
    

    তবে আপনি যদি ডিফল্ট সংযুক্ত সরঞ্জামটি পরিবর্তন করতে চান তবে আপনি pathপৃথকভাবে আলাদা আলাদা করে উল্লেখ করতে হবে যাতে গিটটি সেই পথটি জানতে পারে যেখান থেকে আপনার নতুন সরঞ্জামের এক্সপি চালু করতে হবে। এখানে এন্ট্রিটি দেওয়া হয়েছে যা পরিবর্তে 4 টি তুলনা ছাড়িয়ে লঞ্চ করতে শিয়াল। এক্সের পথটি দ্রষ্টব্য:

    [difftool "bc3"]
    path = c:/program files/Beyond Compare 4/bcomp.exe
    
  2. সর্বাধিক পরিচ্ছন্ন পদ্ধতির মধ্যে রয়েছে নতুন তুলনা সরঞ্জাম বা সুপরিচিত সরঞ্জামটির একটি নতুন সংস্করণ সম্পূর্ণরূপে একটি নতুন কী সংজ্ঞায়িত করা। আমার ক্ষেত্রে যেমন আমি একটি নতুন কী সংজ্ঞায়িত করেছি bc4যাতে এটি মনে রাখা সহজ হয়। এই ক্ষেত্রে আপনাকে দুটি কমান্ড চালাতে হবে তবে আপনার দ্বিতীয় কমান্ডটি আপনার নতুন সরঞ্জামের এক্সিকিউটেবলের পথ নির্ধারণ করবে না। পরিবর্তে আপনাকে cmdনীচের মতো দেখানো হয়েছে আপনার নতুন সরঞ্জামটির জন্য অ্যাট্রিবিউট সেট করতে হবে :

    git config --global diff.tool bc4
    
    git config --global difftool.bc4.cmd "\"C:\\Program Files\\Beyond Compare 4\\bcomp.exe\" -s \"\$LOCAL\" -d \"\$REMOTE\""
    

    উপরের কমান্ডগুলি চালানো আপনার .gitconfigফাইলে নীচে প্রবেশগুলি তৈরি করে :

    [diff]
    tool = bc4
    [difftool "bc4"]
    cmd = \"C:\\Program Files\\Beyond Compare 4\\bcomp.exe\" -s \"$LOCAL\" -d \"$REMOTE\"
    

ভবিষ্যতে নিজের জন্য কোনও বিভ্রান্তি এড়াতে আমি দৃ strongly়ভাবে আপনাকে # 2 পদ্ধতির অনুসরণ করার পরামর্শ দিচ্ছি।


16

নীচের ব্লকগুলির মধ্যে একটি যুক্ত করা আমার উইন্ডোজ এবং লিনাক্স বিকাশের পরিবেশের জন্য কেডিফ 3 ব্যবহার করার জন্য কাজ করে। এটি একটি দুর্দান্ত ধারাবাহিক ক্রস-প্ল্যাটফর্মের পৃথক এবং মার্জ সরঞ্জামের জন্য তৈরি করে।

লিনাক্স

[difftool "kdiff3"]
    path = /usr/bin/kdiff3
    trustExitCode = false
[difftool]
    prompt = false
[diff]
    tool = kdiff3
[mergetool "kdiff3"]
    path = /usr/bin/kdiff3
    trustExitCode = false
[mergetool]
    keepBackup = false
[merge]
    tool = kdiff3

উইন্ডোজ

[difftool "kdiff3"]
    path = C:/Progra~1/KDiff3/kdiff3.exe
    trustExitCode = false
[difftool]
    prompt = false
[diff]
    tool = kdiff3
[mergetool "kdiff3"]
    path = C:/Progra~1/KDiff3/kdiff3.exe
    trustExitCode = false
[mergetool]
    keepBackup = false
[merge]
    tool = kdiff3

আপনি কি একটি একক ক্রস প্ল্যাটফর্ম .gitconfig ফাইল তৈরি করার কোনও উপায় খুঁজে পেয়েছেন যা লিনাক্স এবং উইন্ডো উভয়ের জন্য শর্তাধীন সঠিক পথ নির্দিষ্ট করে?
জেরি আশের

1
সত্যিই, আমি সর্বত্র ছড়িয়ে পড়েছি, এবং এটি কেবল কার্যকর হবে বলে মনে হচ্ছে।
মুডবুম

ট্র্যাক্সেটকোড = মিথ্যা সেট করার কোনও কারণ আছে কি? আমার বোধগম্য থেকে যদি মিথ্যা সেট করা থাকে তবে গিটটি আপনার সরঞ্জাম থেকে শূন্য নয় প্রস্থান কোডটিকে উপেক্ষা করবে। সুতরাং যদি আপনার সরঞ্জাম ক্রাশ গিটটি ভুল করে ভেবে ফেলেন যে মার্জটি সফল। তবে এটি মিথ্যা সেট করার কোনও কারণ থাকতে পারে, দয়া করে ব্যাখ্যা করুন।
অ্যাপোলো

আমি বিশ্বাস করি যে trustExitCode = falseসত্যটি সত্য বা মিথ্যা স্থিতির সাহায্যে এই সরঞ্জামটি প্রস্থান করতে পেরেছে কিনা তা নির্ভর করার পরিবর্তে গিটটি আপনাকে মার্জটি সফল হয়েছিল কিনা তা জিজ্ঞাসা করার কারণ ঘটায়।
মুডবুম

4

আপনি যদি একাধিক ডিফ সরঞ্জাম ব্যবহার করতে চান তবে একটি গিফট .gitconfig এ যুক্ত করুন

[alias]
    kdiff = difftool --tool kdiff3

--toolবিকল্প উল্লেখ করার জন্য আপ । ধন্যবাদ
ItMaxence


0

উইন্ডোজে আমাদের $git difftool --tool-helpবিভিন্ন কমান্ড চালাতে প্রয়োজন যেমন:

    'git difftool --tool=<tool>' may be set to one of the following:
                    vimdiff
                    vimdiff2
                    vimdiff3

    The following tools are valid, but not currently available:
                    araxis
                    bc
                    bc3
                    codecompare
                    deltawalker
                    diffmerge
                    diffuse
                    ecmerge
                    emerge
                    examdiff
                    gvimdiff
                    gvimdiff2
                    gvimdiff3
                    kdiff3
                    kompare
                    meld
                    opendiff
                    p4merge
                    tkdiff
                    winmerge
                    xxdiff
Some of the tools listed above only work in a windowed
environment. If run in a terminal-only session, they will fail.

এবং আমরা তাদের যেকোনটি (উদাহরণস্বরূপ উইমরমার) যুক্ত করতে পারি

$  git difftool --tool=winmerge

প্রতিশ্রুতি দেওয়ার আগে ফাইলগুলি দেখতে নোটপ্যাড ++ কনফিগার করার জন্য:

 git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

এবং ব্যবহার $ git commitনোটপ্যাড ++ এ প্রতিশ্রুতিবদ্ধ তথ্য খুলবে

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