গিটে দ্বন্দ্বযুক্ত ফাইল তালিকাভুক্ত করার সহজ উপায় কী?


692

আমার কেবল বিরোধী ফাইলগুলির একটি সরল তালিকা দরকার need

এর চেয়ে সহজ কিছু আছে কি:

git ls-files -u  | cut -f 2 | sort -u

বা:

git ls-files -u  | awk '{print $4}' | sort | uniq

আমি অনুমান করি যে আমি aliasএটির জন্য একটি সহজ সেট আপ করতে পারি , তবে ভাবছিলাম যে কীভাবে এটি করা যায়। আমি এটি শেল লুপগুলি লেখার জন্য ব্যবহার করতাম যেমন স্ব-সমাধান বিরোধের জন্য ইত্যাদি ইত্যাদি Maybe লুপটি প্লাগ ইন করে প্রতিস্থাপন করতে পারে mergetool.cmd?


2
git rebase --continueসংঘাতের সাথে ফাইলগুলির তালিকা তৈরি করবে (যদি থাকে তবে)
জ্যাকব

গিট স্ট্যাটাসই যথেষ্ট
অমৃত

1
সংঘাতযুক্ত মার্জ সেশন-গিট মার্জ - কনটিনিউ'তে বিরোধের সাথে তালিকার ফাইলগুলি প্রদর্শিত হবে `
জয়ন

git rebase --continueদ্বন্দ্বগুলি তালিকাভুক্ত করেনি, কেবল সেগুলি ঠিক করতে আমাকে বলেছিলেন (গিট সংস্করণ 2.21.0)
গ্যারি

উত্তর:


1211
git diff --name-only --diff-filter=U

131
আমি এর জন্য একটি উপনাম তৈরি করেছি:git config --global alias.conflicts "diff --name-only --diff-filter=U"
জিমোথি

1
@ চার্লসবাইলি, আমি কি কিছু মিস করছি? কি ভুল সঙ্গে git status?
পেসারিয়ার

8
@ পেসারিয়র, এটি কেবল মেসির। যদি আপনার মিলিয়ন মিলনবিহীন মার্জ এবং একটি বিবাদমূলক মার্জ থাকে তবে আপনি আউটপুটটির জন্য কিছুটা সংযুক্তি চাইবেন।
এক্সস্টার

8
@ এস অগুইনাগা: সহজভাবে চালানgit conflicts
জিমোথি

1
এটি দ্বন্দ্ব সমাধানের পরেও ফাইলটি প্রদর্শন করে চলেছে। git diff --checkআরও ভাল কাজ করে
ব্যবহারকারী 3812377

64

git diff --check

লাইন নম্বরগুলি সহ বিরোধী মার্কারযুক্ত ফাইলগুলির তালিকা প্রদর্শিত হবে ।

উদাহরণ স্বরূপ:

> git diff --check
index-localhost.html:85: leftover conflict marker
index-localhost.html:87: leftover conflict marker
index-localhost.html:89: leftover conflict marker
index.html:85: leftover conflict marker
index.html:87: leftover conflict marker
index.html:89: leftover conflict marker

উত্স: https://ardalis.com/detect-git-conflict-markers


1
আমি git diff --checkআমাকে অন্যান্য (কম গুরুতর) সমস্যার কথাও বলতে পেয়েছি যেমন শ্বেত স্পেস অনুসরণ করার মতো, যাতে git diff --check | grep -i conflictওপি-র ক্ষেত্রে সমাধান হতে পারে
সিসিজে

37

আমার প্রশ্নের উত্তর দেওয়ার চেষ্টা করছি:

না, বাক্সের বাইরে প্রশ্নের বাইরে যে কোনও সহজ উপায় নেই বলে মনে হয়।

অনেকবার টাইপ করার পরে, 'গিট-কোন্দলস' নামে একটি এক্সিকিউটেবল ফাইলের মধ্যে সংক্ষিপ্তটিকে কেবল আটকানো হয়েছে, গিটটিতে অ্যাক্সেসযোগ্য হয়েছে, এখন আমি কেবল এটি করতে পারি: git conflicts আমি যে তালিকাটি চেয়েছিলাম তা পেতে।

আপডেট: রিচার্ডের পরামর্শ অনুসারে, এক্সিকিউটেবলের বিকল্প হিসাবে আপনি গিট ওরফে সেট আপ করতে পারেন

git config --global alias.conflicts '!git ls-files -u | cut -f 2 | sort -u'

উলের উপর এক্সিকিউটেবল ব্যবহার করার একটি সুবিধা হ'ল আপনি সেই স্ক্রিপ্টটি দলের সদস্যদের সাথে ভাগ করতে পারেন (রেপোর একটি বিন অংশে)।


1
আমি সেই মুহুর্তেও একইরকম অনুভূত হয়েছিলাম - ভেবেছিলাম কীভাবে লোকেরা কীভাবে এটির প্রয়োজন হয় না, এবং দেখার বিষয়টি কতটা তুচ্ছ। যাইহোক, আমি এখন 2 বছর ধরে গিট ব্যবহার করছি এবং সততার সাথে আরও একবার "সীমাবদ্ধতা" তে প্রবেশ করি নি। সুতরাং সম্ভবত যে এত পরে সাধারণ ব্যবহারের খুব বেশি না?
inger

4
এটি যথেষ্ট সহজ যে আপনি এটির জন্য একটি উপনাম স্থাপন করতে পারেন git config --global alias.conflicts "!git ls-files -u | cut -f 2 | sort -u"(এর অর্থ এই শেল কমান্ডটি কেবল গিট কমান্ডের চেয়ে চালানো নয়)।
রিচার্ড

1
আপনি "ডাবল-কোটস" এর পরিবর্তে 'একক-কোটস' চান তা উল্লেখযোগ্য। অন্যথায়, !আপনার শেল দ্বারা এটি ব্যাখ্যা করা হবে:git config --global alias.conflicts '!git ls-files -u | cut -f 2 | sort -u'
মিনিটে উপভোগ করুন

26

এখানে একটি বোকা-প্রমাণ উপায়:

grep -H -r "<<<<<<< HEAD" /path/to/project/dir

9
না। গিটের সূচকগুলি ফাইলগুলিতে পাঠ্য চিহ্নগুলি অপসারণের পরেও নির্দিষ্ট ফাইলগুলিকে অভ্যন্তরীণভাবে বিরোধ হিসাবে চিহ্নিত করবে।
আলেকজান্ডার বার্ড

7
আলেকজান্ডারের মন্তব্যের পাশাপাশি এটি বিকল্প হিসাবে দেখার জন্য এটি এখনও কার্যকর :) :) দয়া করে মুছবেন না।
উডেনকিট্টি

3
বা বর্তমান ওয়ার্কিং ডিয়ারের মধ্যে দৌড়াতে পথের জন্য একটি বিন্দু ব্যবহার করুন -grep -H -r "<<<<<<< HEAD" .
ডেভিড ডগলাস

হেই, এটাও আমার এই পদ্ধতি। একটি cসুন্দর যোগ করার ফলে বিবাদগুলির সংখ্যাও খুব ভাল ফলাফল! একটি নোট হ'ল আমি পতাকা ব্যবহার -Hrnকরব এটি লাইন নম্বর তথ্য সরবরাহ করবে।
শেলফিশ

3
আপনি যদি রেজেক্স ব্যবহার করছেন তবে আমি এর [<=>]{7}পরিবর্তে প্রস্তাব দেব । (গ্রেপের ক্ষেত্রে -Eএটির জন্য পতাকাটির দরকার হতে পারে )) অথবা <{7}আপনি যদি মার্জ মার্কারকে ঝুঁকির বিষয়ে উদ্বিগ্ন না হন বা বিরোধগুলি গণনা করতে চান না। (আপনি এটিও ব্যবহার করতে পারেন git grep- তারপরে আপনার -rপতাকা লাগবে না ))
সেল্টিকমিস্ট্রেট

22

git status "পরিবর্তিত" বা "নতুন ফাইল" ইত্যাদির পরিবর্তে দ্বন্দ্ব রয়েছে এমন ফাইলগুলির পাশে "উভয় সংশোধিত" প্রদর্শন করে


3
সেটা সত্য. তবে এই বিশেষ প্রশ্নটি দ্বন্দ্বযুক্ত ফাইলগুলির একটি সরল তালিকা সম্পর্কে ছিল .. এটি একটি এক্সওয়াই সমস্যা হতে পারে (কেন আমি আসলে এই সংঘাতের তালিকার দরকার ছিল তা আমি মনে করতে পারি না, তবে যেহেতু আমার এটির প্রয়োজন হয়নি সেহেতু সম্ভবত আমার পরামর্শ দেওয়া উচিত তত্ক্ষণাত্ ভিন্ন ভিন্ন পদ্ধতির অনুসরণ করেছিলাম এখনই নিশ্চিত নয় .. আমি জাভা-আমদানি দ্বন্দ্বগুলি স্বতঃসারণের জন্য স্ক্রিপ্টগুলিও লিখছিলাম যার জন্য এই তালিকার প্রয়োজন ছিল, যেমন, অ-আন্তঃসংযোগমূলক ব্যবহার) ..
inger

ওহ, আমি এটা বুঝতে পারি নি আমি ভেবেছিলাম আপনি "সাধারণ" ব্যবহারের জন্য একটি "সাধারণ" তালিকা চান। এই কারণেই আমি আপনার নিজস্ব কোড এবং আপনার স্ব-জবাব দিয়েছি ... তবে আমি বুঝতে পেরেছিলাম "উভয় সংশোধিত" জিনিসটি আমার পক্ষে কাজ করেছে (এবং আমি ধরে নিয়েছি যে আপনি আমার মতোই চান, কেন আপনার উচিত হবে না?; - পি) উত্সর্গের জন্য ধন্যবাদ যদিও :)
রাফা

17
git status --short | grep "^UU "

4
দ্রষ্টব্য: আপনাকে ^ ইউএ এবং ^ ইউডিও অনুসন্ধান করতে হবে, সুতরাং নিম্নলিখিত ধরণটি আরও সম্পূর্ণ: "^ ইউ [ইউএডি]"
এমডিএ

বা শুধু ^Uইউ দিয়ে সবকিছু শুরু করার জন্য
Ascherer

7
এটি যথেষ্ট নয়। বিরোধী ফাইলগুলির মধ্যে নিম্নলিখিত সংমিশ্রণগুলি থাকতে পারে:DD, AU, UD, UA, DU, AA, UU
অ্যান্টনি সটাইল

1
@ অ্যান্টনিসটাইল: আপনি কি পরিস্থিতি বর্ণনা করতে পারেন? আমি আমার মামলায় যা কাজ করেছি তা পোস্ট করেছিলাম।
এমডিএ

@ এমডিএ একটি উদাহরণ: দ্বন্দ্ব যেখানে উজানে পরিবর্তন হয়েছে, আমি মুছে ফেলা হয়েছে তার স্থিতি থাকবেDU
অ্যান্থনি সটাইল

13

এটি আমার পক্ষে কাজ করে:

git grep '<<<<<<< HEAD'

অথবা

git grep '<<<<<<< HEAD' | less -N


2
দ্বন্দ্বগুলি পরিবর্তিত বনাম মোছা ফাইলগুলি অন্তর্ভুক্ত করতে পারে যা এই সমাধানটি কভার করবে না।
মের


3

যদি আপনি প্রতিশ্রুতিবদ্ধ হওয়ার চেষ্টা করেন এবং যদি কোন্দল হয় তবে গিট আপনাকে বর্তমানে অমীমাংসিত বিরোধের তালিকা দিবে ... তবে সরল তালিকা হিসাবে নয়। ইন্টারেক্টিভভাবে কাজ করার সময় আপনি সাধারণত এটি চান কারণ বিরোধগুলি ঠিক করার সাথে সাথে তালিকাটি সংক্ষিপ্ত হয়ে যায়।


2
"মিথস্ক্রিয়ভাবে কারণ আপনি দ্বন্দ্বগুলি ঠিক করার সাথে সাথে তালিকাটি আরও খাটো হয়ে যায়।" মজাদার. আমি সর্বদা সে উদ্দেশ্যে মার্জারুল ব্যবহার করেছি।
ইনজার

3

সম্ভবত এটি গিটে যুক্ত করা হয়েছে, তবে যে ফাইলগুলি এখনও সমাধান করা যায়নি সেগুলি স্থিতি বার্তায় (গিট স্ট্যাটাস) তালিকাভুক্ত হয়েছে:

#
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      syssw/target/libs/makefile
#

দ্রষ্টব্য যে এটি সজ্জিত পাথ বিভাগ।



0

আমি সবসময় শুধু ব্যবহার করেছি git status

যোগ করতে পারেন awkশেষে শুধু ফাইলের নাম পেতে

git status -s | grep ^U | awk '{print $2}'


0

আমার 2 সেন্ট এখানে (অনেক শীতল / কাজের প্রতিক্রিয়া থাকলেও)

আমি এই উপন্যাসটি আমার মধ্যে তৈরি করেছি .gitconfig

[alias]
 ...
 conflicts = !git diff --name-only --diff-filter=U | grep -oE '[^/ ]+$'

যা আমাকে দ্বন্দ্বের সাথে ফাইলগুলির নাম দেখাতে চলেছে ... তাদের পুরো পথ নয় :)


0

ব্যাশের কমান্ড লাইন প্রতিস্থাপনের জন্য উপযুক্ত তালিকাভুক্ত ফাইলগুলির জন্য আমি যা ব্যবহার করি তা এখানে

git diff --numstat -b -w | grep ^[1-9] | cut -f 3

তালিকাটি সম্পাদনা করতে $(cmd)বিকল্প ব্যবহার করুন ।

vi $(git diff --numstat -b -w | grep ^[1-9] | cut -f 3)

ফাইলের নামের ফাঁকা স্থান থাকলে কাজ করে না। আমি sedফাঁকা স্থানগুলি অবলম্বন করতে বা উদ্ধৃত করার জন্য ব্যবহার করার চেষ্টা করেছি এবং আউটপুট তালিকাটি ঠিক দেখাচ্ছে, তবে $()বিকল্পটি এখনও পছন্দসই হিসাবে আচরণ করে নি।


0

ইউটিলিটি গিট উইজার্ড https://github.com/makelinux/git-wizard পৃথকভাবে অমীমাংসিত বিরোধিত পরিবর্তন (সংঘর্ষ) এবং আনমার্জ করা ফাইল গণনা করে। দ্বন্দ্বগুলি ম্যানুয়ালি বা মার্জেটুল দিয়ে সমাধান করতে হবে। সমাধান না করা পরিবর্তনগুলি আমাকে গিট রিবেস - কন্টিনিউয়ের সাথে সাধারণত যুক্ত এবং প্রতিশ্রুতিবদ্ধ করতে পারে।


-1

চার্লস বেলির উত্তরের সামান্য প্রকরণ যা আরও তথ্য দেয়:

git diff --name-only --diff-filter=U | xargs git status

-2

অন্যান্য উত্তরে (যেমন) হাইলাইট হিসাবে আমরা কেবল কমান্ড গিট স্থিতি ব্যবহার করতে পারি এবং তারপরে নিমজ্জিত পাথের নীচে তালিকাভুক্ত ফাইলগুলি সন্ধান করতে পারি:

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