এই প্রশ্নটি "লাইন নম্বর" জন্য কল করে, যদি আপনি আউটপুটে লাইন সংখ্যাগুলির যত্ন না করেন তবে এই প্রশ্নটি এবং উত্তরটি দেখুন ।
মূলত, আমি পরিবর্তিত সামগ্রী দেখতে চাই না, কেবল ফাইলের নাম এবং লাইন নম্বর।
এই প্রশ্নটি "লাইন নম্বর" জন্য কল করে, যদি আপনি আউটপুটে লাইন সংখ্যাগুলির যত্ন না করেন তবে এই প্রশ্নটি এবং উত্তরটি দেখুন ।
মূলত, আমি পরিবর্তিত সামগ্রী দেখতে চাই না, কেবল ফাইলের নাম এবং লাইন নম্বর।
উত্তর:
নোট: আপনি করছেন মাত্র নাম খুঁজছেন (পরিবর্তিত ফাইল ছাড়া লাইন সংখ্যা লাইন জন্য যে পরিবর্তন করা হয়েছে), সহজে, অন্য উত্তর এখানে করতে এই লিঙ্কে ক্লিক ।
কোন বিল্ট-ইন এর এই জন্য বিকল্প (এবং আমি মনে করি না এটা সব পারেন দরকারী যে), কিন্তু এটা হয় একটি "বহিরাগত পরিবর্তন 'স্ক্রিপ্ট সাহায্যে Git মধ্যে এই কাজ করতে, সম্ভব।
এখানে একটি সুন্দর কৃপণ এক; আপনি যেভাবে আউটপুটটি পছন্দ করতে চান তা ঠিক করা আপনার উপর নির্ভর করবে।
#! /bin/sh
#
# run this with:
# GIT_EXTERNAL_DIFF=<name of script> git diff ...
#
case $# in
1) "unmerged file $@, can't show you line numbers"; exit 1;;
7) ;;
*) echo "I don't know what to do, help!"; exit 1;;
esac
path=$1
old_file=$2
old_hex=$3
old_mode=$4
new_file=$5
new_hex=$6
new_mode=$7
printf '%s: ' $path
diff $old_file $new_file | grep -v '^[<>-]'
"বহিরাগত ডিফ" সম্পর্কিত বিবরণগুলির বিবরণ দেখুন GIT_EXTERNAL_DIFF
মধ্যে Git ম্যানুয়েল পৃষ্ঠা (লাইন 700 চারপাশে, চমত্কার শেষ পাসে)।
| grep -o '^[0-9]*'
ডান হাতের দিকের যত্ন নেই বলে ধরে নিয়েই কেবল সংখ্যাগুলি দেয় gives
--diff-filter=...
যেখানে ...
দেখতে চান সেই ধরণের পরিবর্তন করুন: M
সংশোধিত, A
যোগ করার D
জন্য, মোছার জন্য এবং git diff
ডকুমেন্টেশন অনুসারে অন্যদের জন্য the
খুব সহজ:
git diff --name-only
এগিয়ে যান এবং ভিন্ন!
git diff --name-only master..HEAD
পরিবর্তিত রেখার সংখ্যার মতো লাইন সংখ্যা বা পরিবর্তনগুলি সহ প্রকৃত লাইন নম্বরগুলি? আপনি যদি পরিবর্তিত লাইনের সংখ্যা চান তবে ব্যবহার করুন git diff --stat
। এটি আপনাকে এর মতো একটি প্রদর্শন দেয়:
[me@somehost:~/newsite:master]> git diff --stat
whatever/views/gallery.py | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
নিজেরাই পরিবর্তনের লাইন নম্বর পাওয়ার কোনও বিকল্প নেই।
git diff master --compact-summary
আউটপুট হল:
src/app/components/common/sidebar/toolbar/toolbar.component.html | 2 +-
src/app/components/common/sidebar/toolbar/toolbar.component.scss | 2 --
এটি আপনার প্রয়োজন ঠিক এটি। আপনি যখন প্রতিশ্রুতিবদ্ধ বা রিমোট থেকে নতুন কমিটগুলি টানছেন তখন একই বিন্যাস।
PS: এটি তারযুক্ত যে কেউ এইভাবে উত্তর দেয় না।
1) আমার প্রিয়:
git diff --name-status
ফাইলের স্থিতি প্রস্তুত করে, যেমন:
A new_file.txt
M modified_file.txt
D deleted_file.txt
2) আপনি যদি পরিসংখ্যান চান, তবে:
git diff --stat
এর মতো কিছু দেখাবে:
new_file.txt | 50 +
modified_file.txt | 100 +-
deleted_file | 40 -
3) অবশেষে, আপনি যদি কেবলমাত্র ফাইলের নাম চান:
git diff --name-only
কেবল প্রদর্শন করবে:
new_file.txt
modified_file.txt
deleted_file
এখন এবং নির্দিষ্ট কমিটের মধ্যে প্রতিটি ফাইলের পরিবর্তিত লাইনগুলির ফাইলের নাম এবং পরিমাণ / নুবার দেখায়:
git diff --stat <commit-hash>
আমি জানি এটি একটি পুরানো প্রশ্ন তবে উইন্ডোজে, এই গিট আউটপুটগুলিকে ফাইলগুলিতে ফিল্টার করে এবং রেখা সংখ্যার পরিবর্তিত করে:
(git diff -p --stat) | findstr "@@ --git"
diff --git a/dir1/dir2/file.cpp b/dir1/dir2/file.cpp
@@ -47,6 +47,7 @@ <some function name>
@@ -97,7 +98,7 @@ <another functon name>
সেগুলি থেকে ফাইলগুলি এবং পরিবর্তিত লাইনগুলি বের করার জন্য আরও কিছু কাজ করা হয়:
for /f "tokens=3,4* delims=-+ " %f in ('^(git diff -p --stat .^) ^| findstr ^"@@ --git^"') do @echo %f
a/dir1/dir2/file.cpp
47,7
98,7
চালু git version 2.17.1
, এই উদ্দেশ্য অর্জনের জন্য একটি অন্তর্নির্মিত পতাকা নেই ।
ইউনিফাইড ডিফ থেকে ফাইলের নাম এবং লাইন নম্বরগুলি ফিল্টার করার জন্য এখানে একটি উদাহরণ কমান্ড:
git diff --unified=0 | grep -Po '^diff --cc \K.*|^@@@( -[0-9]+,[0-9]+){2} \+\K[0-9]+(?=(,[0-9]+)? @@@)' | paste -s -d':'
উদাহরণস্বরূপ, ইউনিফাইড ডিফ:
$ git diff --unified=0
diff --cc foobar
index b436f31,df63c58..0000000
--- a/foobar
+++ b/foobar
@@@ -1,2 -1,2 +1,6 @@@ Line abov
++<<<<<<< HEAD
+bar
++=======
+ foo
++>>>>>>> Commit message
ফলাফল হবে:
❯ git diff --unified=0 | grep -Po '^diff --cc \K.*|^@@@( -[0-9]+,[0-9]+){2} \+\K[0-9]+(?=(,[0-9]+)? @@@)' | paste -s -d':'
foobar:1
কমন গ্রেপ ম্যাচের ফলাফলগুলিতে কমান্ডের আউটপুটটি মেলে:
$ git diff --unified=0 | grep -Po '^diff --cc \K.*|^@@@( -[0-9]+,[0-9]+){2} \+\K[0-9]+(?=(,[0-9]+)? )| @@@.*' | sed -e '0~3{s/ @@@[ ]\?//}' | sed '2~3 s/$/\n1/g' | sed "N;N;N;s/\n/:/g"
foobar:1:1:Line abov
grep -Po '^diff --cc \K.*|^@@@( -[0-9]+,[0-9]+){2} \+\K[0-9]+(?=(,[0-9]+)? )
: diff --cc <filename>
OR ফাইলের সাথে OR নাম্বার নম্বর @@@ <from-file-range> <from-file-range> <to-file-range>
মিল করুন বা বাকি পাঠ্যটির সাথে ম্যাচ করুন @@@
।sed -e '0~3{s/ @@@[ ]\?//}'
: এর @@@[ ]\?
আগে .চ্ছিক 1 লাইন প্রসঙ্গটি পেতে প্রতিটি তৃতীয় লাইন থেকে সরান ++<<<<<<< HEAD
।sed '2~3 s/$/\n1/g'
: \n1
কলাম সংখ্যার জন্য 2 য় এবং 3 য় লাইনের মধ্যে প্রতি 3 টি লাইন যুক্ত করুন ।sed "N;N;N;s/\n/:/g"
: প্রতি সাথে 3 লাইন যোগ দিন :
।আমি grep
একটি নিষ্পাপ সমাধান হিসাবে ব্যবহার করি ।
$ git diff | grep -A2 -- '---'
একটি আউটপুট উদাহরণ:
--- a/fileA.txt
+++ b/fileA.txt
@@ -0,0 +1,132 @@
--
--- a/B/fileC.txt
+++ b/B/fileC.txt
@@ -33663,3 +33663,68800 @@ word_38077.png,Latin
--
--- a/D/fileE.txt
+++ b/D/fileE.txt
@@ -17998,3 +17998,84465 @@ word_23979.png,Latin
--
--- a/F
+++ b/F
@@ -1 +1 @@
হতে পারে আপনি একটি রঙিন আউটপুট দেখতে পারেন। এটি আপনাকে আউটপুটগুলি সহজেই পড়তে সহায়তা করে।