গিট ডিফ থেকে আউটপুট কীভাবে পড়বেন?


270

ম্যান পেজটি git-diffবরং দীর্ঘ, এবং এমন অনেকগুলি ক্ষেত্রে ব্যাখ্যা করে যা কোনও নবজাতকের পক্ষে প্রয়োজনীয় বলে মনে হয় না। উদাহরণ স্বরূপ:

git diff origin/master

1
ভিন্ন পাঠ্য সম্পাদক ব্যবহার করে লাইন সংখ্যার জন্য @ ... @ পরিসরের স্বাক্ষরগুলি সুস্পষ্ট হয়ে উঠল।
পোজিড

কোন পাঠ্য সম্পাদক?
Jus12

উত্তর:


488

উদাহরণস্বরূপ গিট ইতিহাসের চেয়ে পৃথক পৃথক উদাহরণ দেখুন ( git.git সংগ্রহস্থলে 1088261f প্রতিশ্রুতিবদ্ধ ):

diff --git a/builtin-http-fetch.c b/http-fetch.c
similarity index 95%
rename from builtin-http-fetch.c
rename to http-fetch.c
index f3e63d7..e8f44ba 100644
--- a/builtin-http-fetch.c
+++ b/http-fetch.c
@@ -1,8 +1,9 @@
 #include "cache.h"
 #include "walker.h"

-int cmd_http_fetch(int argc, const char **argv, const char *prefix)
+int main(int argc, const char **argv)
 {
+       const char *prefix;
        struct walker *walker;
        int commits_on_stdin = 0;
        int commits;
@@ -18,6 +19,8 @@ int cmd_http_fetch(int argc, const char **argv, const char *prefix)
        int get_verbosely = 0;
        int get_recover = 0;

+       prefix = setup_git_directory();
+
        git_config(git_default_config, NULL);

        while (arg < argc && argv[arg][0] == '-') {

এই প্যাচ লাইন একের পর এক বিশ্লেষণ করতে দিন।

  • প্রথম লাইন

    diff --git a / buildin-http-fetch.cb / http-fetch.c
    ফর্মের একটি "গিট ডিফ" শিরোনাম diff --git a/file1 b/file2a/এবং b/ফাইলের নামের একই যদি না পুনঃনামকরণ / অনুলিপি (আমাদের ক্ষেত্রে মত) জড়িত আছে। এর --gitঅর্থ হ'ল ডিফ "গিট" ডিফ ফরমেটে রয়েছে।

  • এরপরে এক বা একাধিক প্রসারিত শিরোনাম লাইন রয়েছে। প্রথম তিনটি

    সাদৃশ্য সূচক 95%
    বিল্টিন-http-fetch.c থেকে নতুন নামকরণ করুন
    http-fetch.c এ নতুন নামকরণ করুন
    আমাদের বলুন যে ফাইলটির নাম পরিবর্তন করা builtin-http-fetch.cহয়েছিল http-fetch.cএবং সেই দুটি ফাইল 95% অভিন্ন (যা এই নামটি সনাক্ত করতে ব্যবহৃত হয়েছিল)।

    বর্ধিত ডিফার শিরোনামের শেষ লাইন, যা
    সূচি f3e63d7..e8f44ba 100644
    প্রদত্ত ফাইলের মোড সম্পর্কে বলুন (এর 100644অর্থ এটি সাধারণ ফাইল এবং উদাহরণস্বরূপ সিমলিংক নয়, এবং এটিতে এক্সিকিউটেবল অনুমতি বিট নেই), এবং প্রিমেজের সংক্ষিপ্ত হ্যাশ সম্পর্কে (প্রদত্ত পরিবর্তনের আগে ফাইলের সংস্করণ) এবং পজিটিমেজ (দ্য পরিবর্তনের পরে ফাইলের সংস্করণ)। এই পংক্তিটি git am --3wayযদি প্যাচটি নিজে প্রয়োগ না করা যায় তবে 3-ত্রি মার্জ করার চেষ্টা করার জন্য এটি ব্যবহার করা হয়।

  • এরপরে দ্বি-লাইনের ইউনিফাইড ডিফার শিরোনাম

    --- একটি / বিল্টিন-http-fetch.c
    +++ খ / http-fetch.c
    diff -Uফলাফলের সাথে তুলনায় এতে উত্স (পূর্বরূপ) এবং গন্তব্য (প্রতিকৃতি) ফাইলের নাম-পরে ফাইল-পরিবর্তন-সময় বা ফাইল-ফাইল-সংশোধন-সময় নেই have যদি ফাইলটি তৈরি করা হয় তবে উত্সটি হ'ল /dev/null; যদি ফাইলটি মুছে ফেলা হয়েছে, লক্ষ্য /dev/null
    আপনি সেট করেন তাহলে diff.mnemonicPrefixস্থানে সত্যতে কনফিগারেশন পরিবর্তনশীল, a/এবং b/এই দুই লাইন হেডারের মধ্যে উপসর্গ আপনি যদি এর পরিবর্তে থাকতে পারে c/, i/, w/এবং o/উপসর্গ যথাক্রমে কি আপনি তুলনা করতে হিসেবে; দেখতে Git-কনফিগ (1)

  • এরপরে আসে পার্থক্যগুলির এক বা একাধিক কুকুর; প্রতিটি কুঁচি ফাইলগুলি পৃথক করে এমন একটি অঞ্চল দেখায়। ইউনিফাইড বিন্যাস কৃপণ শুরু লাইনের সাথে শুরু

    @@ -1,8 +1,9 @@
    অথবা
    @@ -18,6 +19,8 @@ ইন্টিমিটার সেন্টিমিডি_এইচটিপি_ফেট্চ (ইন্ট আরজিসি, কনস্ট চর ** আরজিভি, ...
    এটি ফরম্যাটে রয়েছে @@ from-file-range to-file-range @@ [header]। থেকে ফাইল-সীমাটি ফর্মটিতে রয়েছে -<start line>,<number of lines>, এবং ফাইল-সীমা রয়েছে +<start line>,<number of lines>। উভয় সূচনা-লাইন এবং সংখ্যা-লাইনগুলি যথাক্রমে প্রাক এবং মূর্তিবিশেষে কান্ডের অবস্থান এবং দৈর্ঘ্য উল্লেখ করে। লাইন সংখ্যাটি যদি না দেখানো হয় তবে এর অর্থ এটি 0 হয়।

    Alচ্ছিক শিরোনামটি সি ফাংশনটি দেখায় যেখানে প্রতিটি পরিবর্তন ঘটে থাকে, যদি এটি কোনও সি ফাইল হয় (যেমন -pGNU ডিফের মতো বিকল্প), বা সমতুল্য, যদি থাকে তবে অন্যান্য ধরণের ফাইলের জন্য।

  • এরপরে ফাইলের পার্থক্য কোথায় রয়েছে তার বিবরণ আসে। উভয় ফাইলে সাধারণ লাইনগুলি একটি স্থানের অক্ষর দিয়ে শুরু হয়। লাইনগুলি যে দুটি ফাইলের মধ্যে প্রকৃতপক্ষে পৃথক হয় বাম মুদ্রণ কলামে নীচের একটি সূচক অক্ষর থাকে:

    • '+' - এখানে প্রথম ফাইলটিতে একটি লাইন যুক্ত হয়েছিল।
    • '-' - প্রথম ফাইল থেকে এখানে একটি লাইন সরানো হয়েছিল।


    সুতরাং, উদাহরণস্বরূপ, প্রথম খণ্ড

     #include "cache.h"
     #include "walker.h"
    
    -int cmd_http_fetch(int argc, const char **argv, const char *prefix)
    +int main(int argc, const char **argv)
     {
    +       const char *prefix;
            struct walker *walker;
            int commits_on_stdin = 0;
            int commits;
    

    এর অর্থ এটি cmd_http_fetchপ্রতিস্থাপন করা হয়েছিল main, এবং সেই const char *prefix;লাইনটি যুক্ত করা হয়েছিল।

    অন্য কথায়, পরিবর্তনের আগে, তত্ক্ষণাত্ 'বিল্টিন-http-fetch.c' ফাইলের উপযুক্ত খণ্ডটি এর মতো দেখায়:

    #include "cache.h"
    #include "walker.h"
    
    int cmd_http_fetch(int argc, const char **argv, const char *prefix)
    {
           struct walker *walker;
           int commits_on_stdin = 0;
           int commits;
    

    পরিবর্তনের পরে এখন 'http-fetch.c' ফাইলটির এই টুকরোটি এর পরিবর্তে দেখাচ্ছে:

    #include "cache.h"
    #include "walker.h"
    
    int main(int argc, const char **argv)
    {
           const char *prefix;
           struct walker *walker;
           int commits_on_stdin = 0;
           int commits;
    
  • হতে পারে

    Of ফাইলের শেষে কোনও নিউলাইন নেই
    লাইন উপস্থিত (এটি উদাহরণে পৃথক নয়)।

হিসাবে Donal ফেলোগণ বলেন এটা বাস্তব জীবনের উদাহরণ, যেখানে আপনি জানেন আপনি কি পরিবর্তিত হয়েছে উপর পড়া diffs অনুশীলন করতে ভাল।

তথ্যসূত্র:


1
@ জেরেমিয়া: গিট নাম পরিবর্তন সনাক্তকরণ এবং একই সাথে কোড মুভ এবং অনুলিপি সনাক্তকরণের জন্য অনুরূপতা ভিত্তিক হিউরিস্টিক্স ব্যবহার git blame -C -Cকরে; এটি গিট ডিজাইনের সিদ্ধান্ত। গিট ডিফের ফর্ম্যাটটি কেবল ব্যবহারকারীর সাথে মিল (বা ভিন্নতা) সূচকটি দেখায়।
জাকুব নারেবস্কি

1
@ জেরেমিয়া: আরও সঠিকভাবে বলতে [header]গেলে, ফাংশন শুরুর সাথে নিকটবর্তী পূর্ববর্তীটি হুংকারের আগে। বেশিরভাগ ক্ষেত্রে এই রেখায় ফাংশনটির নাম অন্তর্ভুক্ত থাকে যেখানে অংশের বিভিন্নতা থাকে। এটি diffগিফট্রিবিউট ডিফ ড্রাইভারের সাথে সেট, এবং xfuncnameকনফিগারেশন ভেরিয়েবল সহ ডিফ ড্রাইভার সহ কনফিগারযোগ্য।
জাকুব নরবস্কি

1
@ অ্যান্থনি জিওগিগান: লাইনগুলি মুছে ফেলা হতে পারে (তারপরে প্যাটিজমেজে লাইন সংখ্যা 0), বা যুক্ত করা (তারপরে প্রিমাইজে লাইনের সংখ্যা 0 হয়)।
জাকুব নরবস্কি

1
@ কাসুনসিয়াম্বলপিতিয়া: গিত ব্যবহার করে এমন ইউনিফাইড ডিফ ফরমেট (প্রসঙ্গের ভিন্নতার ফর্ম্যাটের বিপরীতে ^ [1]) পরিবর্তিত রেখার মধ্যে পার্থক্য করে না, এবং সরানো এবং যুক্ত লাইন। [১]: gnu.org/software/diffutils/manual/html_node/Context- Format.html
Jakub

1
@ জাকুবনারাইবস্কি: লাইনগুলির সংখ্যা ডিফল্ট 1 এর চেয়ে 0 তে নয় It এটি এতটা সহজ। অনুশীলনে, এটি কেবলমাত্র একক-লাইন ফাইলগুলির জন্য "-1" এবং / অথবা "+1" হিসাবে প্রদর্শিত হয় কারণ প্রদর্শনের কোনও প্রসঙ্গ নেই।
গুইডো ফ্লাহার

68

@@ -1,2 +3,4 @@ ডিফের অংশ

এই অংশটি বুঝতে আমাকে কিছুটা সময় নিয়েছে, তাই আমি একটি ন্যূনতম উদাহরণ তৈরি করেছি।

ফরম্যাটটি মূলত একই রকম diff -u ইউনিফাইড ডিফারেট।

এই ক্ষেত্রে:

diff -u <(seq 16) <(seq 16 | grep -Ev '^(2|3|14|15)$')

এখানে আমরা 2, 3, 14 এবং 15 লাইনগুলি সরিয়েছি Out আউটপুট:

@@ -1,6 +1,4 @@
 1
-2
-3
 4
 5
 6
@@ -11,6 +9,4 @@
 11
 12
 13
-14
-15
 16

@@ -1,6 +1,4 @@ মাধ্যম:

  • -1,6এর অর্থ হ'ল প্রথম ফাইলটির এই অংশটি 1 লাইন থেকে শুরু হয় এবং মোট 6 টি লাইন দেখায়। সুতরাং এটি লাইন 1 থেকে 6 দেখায়।

    1
    2
    3
    4
    5
    6
    

    -"পুরানো" অর্থ, আমরা সাধারণত এটি হিসাবে প্রার্থনা করি diff -u old new

  • +1,4এর অর্থ এই যে দ্বিতীয় ফাইলটির এই অংশটি 1 লাইন থেকে শুরু হয় এবং মোট 4 টি লাইন দেখায়। সুতরাং এটি লাইন 1 থেকে 4 দেখায়।

    + "নতুন" এর অর্থ।

    আমাদের 6 টির পরিবর্তে 4 টি লাইন রয়েছে কারণ 2 টি লাইন সরানো হয়েছিল! নতুন হাঙ্কটি ঠিক:

    1
    4
    5
    6
    

@@ -11,6 +9,4 @@ দ্বিতীয় কুনি জন্য অনুরূপ:

  • পুরানো ফাইলে, আমাদের 6 টি লাইন রয়েছে, পুরানো ফাইলের 11 লাইন থেকে শুরু:

    11
    12
    13
    14
    15
    16
    
  • নতুন ফাইলে, আমাদের 4 টি লাইন রয়েছে, নতুন ফাইলের 9 লাইন থেকে শুরু করে:

    11
    12
    13
    16
    

    নোটটি 11নতুন ফাইলের 9 তম লাইন হিসাবে উল্লেখ করুন কারণ আমরা ইতিমধ্যে পূর্ববর্তী হুন: 2 এবং 3 তে 2 টি লাইন সরিয়ে ফেলেছি।

হুঙ্ক শিরোনাম

আপনার গিট সংস্করণ এবং কনফিগারেশনের উপর নির্ভর করে আপনি লাইনের পাশে একটি কোড লাইন পেতে পারেন @@, যেমন func1() {:

@@ -4,7 +4,6 @@ func1() {

এটি -pসমতল পতাকা দিয়েও পাওয়া যায় diff

উদাহরণ: পুরানো ফাইল:

func1() {
    1;
    2;
    3;
    4;
    5;
    6;
    7;
    8;
    9;
}

আমরা যদি লাইনটি সরিয়ে 6ফেলি তবে ভিন্নতা দেখায়:

@@ -4,7 +4,6 @@ func1() {
     3;
     4;
     5;
-    6;
     7;
     8;
     9;

মনে রাখবেন যে func1এটির জন্য সঠিক লাইন নয় : এটি লাইনগুলি এড়িয়ে গেছে 1এবং 2

এই দুর্দান্ত বৈশিষ্টটি প্রায়শই বলে দেয় যে প্রতিটি কুনি কোন ফাংশন বা শ্রেণীর অন্তর্ভুক্ত, যা ভিন্নতার ব্যাখ্যা দেওয়ার জন্য খুব দরকারী।

শিরোনামটি ঠিক কীভাবে বেছে নেবে তা বেছে নেওয়ার জন্য অ্যালগরিদমটি এখানে আলোচনা করা হয়েছে: গিট ডিফ হঙ্ক শিরোলেখার অংশটি কোথা থেকে এসেছে?


11
এটি এমন কারও জন্য যারা এখনও যথেষ্ট বুঝতে পারেন নি। ইন @@ -1,6 +1,4 @@, অনুগ্রহ পড়া না -1যেমন minus oneবা +1যেমন plus oneপরিবর্তে এই পড়া line 1 to 6পুরনো (প্রথম) ফাইল। এখানে দ্রষ্টব্য - implies "old"বিয়োগ নয়। বিটিডাব্লু, স্পষ্টতার জন্য ধন্যবাদ ... হ্যাশ
dkjain

এই @@ -1,8 +1,9 @@ থেকে আসলে কী ঘটেছে তা ব্যাখ্যা করা সম্ভব। উদাহরণস্বরূপ 1) একটি লাইন যুক্ত করা হয়েছে 2) একটি লাইন সংশোধন করা হচ্ছে এবং একটি লাইন যুক্ত করা হচ্ছে ইত্যাদি। বা এটি অন্য কোনও উপায়ে থেকে, যেমন তাদেরকে গিট ডিফ হিসাবে সংশোধন করার উপায় থাকা উচিত, কোডটিতে কোন লাইনগুলি সংশোধিত হয়েছে তা চিহ্নিত করে cl আমাকে সত্যিই এটিকে সাজানোর দরকার হিসাবে আমাকে সহায়তা করুন
কাসুন সায়াম্বলাপিতিয়া

দয়া করে নোট করুন যে এটি ভুল এবং খুব বিভ্রান্তিকর, উপরের উত্তরে এই বিবৃতি: " +1,4এই পিসটি দ্বিতীয় ফাইলের 1 থেকে 4 লাইনের সাথে মিলে যায় "। এর কারণ হ'ল +1,4অ-সংস্থার প্রসঙ্গ লাইনগুলি উল্লেখ করা যেতে পারে। বরং, কি হবে " +1,4" আসলে এর মানে হল যে হয় " আছে 4ফাইল 'সংস্করণ' থেকে লাইন (অর্থাত প্রসঙ্গ লাইন) "। এটা তোলে মানে বুঝতে গুরুত্বপূর্ণ +, -এবং <whitespace>সেই লাইনের শুরুতে যেমন কৃপণ ব্যক্তি ব্যাখ্যার ক্ষেত্রে প্রযোজ্য। আরও চাক্ষুষ উদাহরণ: youtube.com/watch?v=1tqMjJeyKpw
দামিলোলা ওলুওকেরে

23

এখানে সহজ উদাহরণ।

diff --git a/file b/file 
index 10ff2df..84d4fa2 100644
--- a/file
+++ b/file
@@ -1,5 +1,5 @@
 line1
 line2
-this line will be deleted
 line4
 line5
+this line is added

এখানে একটি ব্যাখ্যা (বিশদ এখানে দেখুন )।

  • --git কোনও আদেশ নয়, এর অর্থ এটি ডিফের একটি গিট সংস্করণ (ইউনিক্স নয়)
  • a/ b/ডিরেক্টরি হয়, তারা বাস্তব নয়। যখন আমরা একই ফাইলটি মোকাবেলা করি তখন এটি কেবল একটি সুবিধা (আমার ক্ষেত্রে a / সূচকে থাকে এবং খ / কার্য ডিরেক্টরিতে থাকে)
  • 10ff2df..84d4fa2 এই 2 টি ফাইলের ব্লক আইডি
  • 100644 এটি হ'ল "মোড বিটস", এটি নির্দেশ করে যে এটি একটি নিয়মিত ফাইল (কার্যকর নয় এবং প্রতীকী লিঙ্ক নয়)
  • --- a/file +++ b/fileবিয়োগ চিহ্নগুলি একটি / সংস্করণে লাইন দেখায় তবে খ / সংস্করণ থেকে অনুপস্থিত; এবং আরও লক্ষণগুলি / এ বি / এ উপস্থিত লাইনগুলি দেখায় (আমার ক্ষেত্রে --- এর অর্থ মুছে ফেলা লাইন এবং +++ মানে বি / এ যুক্ত লাইন এবং এটি কার্যকারী ডিরেক্টরিতে ফাইল)
  • @@ -1,5 +1,5 @@এটি বোঝার জন্য একটি বড় ফাইলের সাথে কাজ করা ভাল; যদি আপনার বিভিন্ন জায়গায় দুটি পরিবর্তন হয় তবে আপনি দুটি এন্ট্রি পাবেন @@ -1,5 +1,5 @@; ধরুন আপনার কাছে লাইন 1 ... লাইন 100 এবং মোছা লাইন 10 রয়েছে এবং নতুন লাইন 100 যোগ করুন - আপনি পাবেন:
@@ -7,7 +7,6 @@ line6
 line7
 line8
 line9
-this line10 to be deleted
 line11
 line12
 line13
@@ -98,3 +97,4 @@ line97
 line98
 line99
 line100
+this is new line100

ধন্যবাদ। "100644 হল মোড বিটস, এটি নির্দেশ করে যে এটি একটি নিয়মিত ফাইল (কার্যকর নয় এবং প্রতীকী লিঙ্ক নয়)"। "মোড বিটস" কি লিনাক্সের ধারণা, বা কেবল গিটে?
টিম

@ টিম গিটের জন্য নির্দিষ্ট নয়। ডান 3 টি সংখ্যা ( 644) অষ্টালে পড়তে হবে (মান: 1, 2, 4 যথাক্রমে এক্স এক্সিউট, লিখুন, এবং পড়ুন অনুমতি) এবং সেই আদেশের সাথে মালিক (ব্যবহারকারী), তারপরে গ্রুপ, তারপরে অন্যান্য অনুমতিগুলির সাথে সম্পর্কিত s সংক্ষেপে 644লিখিত প্রতীকী যদি বোঝা যায় তবে u=rw,og=rতা প্রত্যেকের কাছেই পঠনযোগ্য তবে কেবল মালিকের দ্বারা লিখিত। বাম এনকোডের অন্যান্য অঙ্কগুলি অন্যান্য তথ্য যেমন এটি কোনও সিমলিংক ইত্যাদি etc. যেমন মানগুলি github.com/git/git/blob/… দেখা যায় , এই অবস্থানে প্রথম 1 হ'ল "নিয়মিত ফাইল"।
প্যাট্রিক মেভিজেক

15

ডিফল্ট আউটপুট ফর্ম্যাট (যা মূলত এমন প্রোগ্রাম থেকে আসে যা diffআপনি আরও তথ্যের সন্ধান করতে চান এমন হিসাবে পরিচিত) "ইউনিফাইড ডিফ" হিসাবে পরিচিত। এটিতে মূলত 4 টি বিভিন্ন ধরণের লাইন রয়েছে:

  • প্রসঙ্গ রেখাগুলি, যা একটি একক স্থান দিয়ে শুরু হয়,
  • সন্নিবেশ লাইনগুলি সন্নিবেশ করা হয়েছে এমন একটি লাইন দেখায় যা একটি দিয়ে শুরু হয় +,
  • মুছে ফেলা লাইন, যা একটি দিয়ে শুরু হয় -এবং
  • মেটাডেটা লাইনগুলি যা উচ্চ স্তরের জিনিসগুলি বর্ণনা করে যেমন কোন ফাইলটি এই বিষয়ে কথা বলছে, কী কী বিকল্পগুলি উত্থাপন করতে ব্যবহৃত হয়েছিল, ফাইলটির অনুমতি পরিবর্তন করেছে কিনা ইত্যাদি describe

আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি এমন কোনও ফাইলের দুটি সংস্করণের মধ্যে পড়ার অনুশীলন করুন যেখানে আপনি ঠিক কী পরিবর্তন করেছেন তা জানেন। এর মতো আপনি যখন যা দেখবেন ঠিক তখনই তা বুঝতে পারবেন।


5
+1: অনুশীলন সম্পর্কে পরামর্শটি খুব ভাল একটি - সম্ভবত অবৈধভাবে ডকুমেন্টেশন পড়ার চেষ্টা করার চেয়ে অনেক দ্রুত।
ক্যাসাবেল

6

আমার ম্যাকে:

info diffতারপরে নির্বাচন করুন: Output formats-> Context-> Unified format-> Detailed Unified:

বা অনলাইন মানুষ একই বিভাগে একই পথে অনুসরণ করা gnu- তে পৃথক:

ফাইল: diff.info, নোড: বিস্তারিত ইউনিফাইড, পরবর্তী: উদাহরণ ইউনিফাইড, আপ: ইউনিফাইড বিন্যাস

ইউনিফাইড বিন্যাসের বিশদ বিবরণ ......................................

ইউনিফাইড আউটপুট ফর্ম্যাটটি একটি দুই-লাইনের শিরোনাম দিয়ে শুরু হয়, যা দেখতে এরকম দেখাচ্ছে:

 --- FROM-FILE FROM-FILE-MODIFICATION-TIME
 +++ TO-FILE TO-FILE-MODIFICATION-TIME

সময় স্ট্যাম্পটি with 2002-02-21 23: 30: 39.942229878 -0800 'দেখতে তারিখ, ভগ্নাংশের সেকেন্ড সহ সময় এবং সময় অঞ্চলটি নির্দেশ করে।

আপনি `--label = LABEL 'বিকল্পের সাহায্যে শিরোনামের সামগ্রী পরিবর্তন করতে পারেন; বিকল্প নোট দেখুন:।

এরপরে আসে পার্থক্যগুলির এক বা একাধিক কুকুর; প্রতিটি কুঁচি ফাইলগুলি পৃথক করে এমন একটি অঞ্চল দেখায়। ইউনিফাইড বিন্যাস কৃপণ দেখতে দেখতে:

 @@ FROM-FILE-RANGE TO-FILE-RANGE @@
  LINE-FROM-EITHER-FILE
  LINE-FROM-EITHER-FILE...

উভয় ফাইলে সাধারণ লাইনগুলি একটি স্থানের অক্ষর দিয়ে শুরু হয়। লাইনগুলি যে দুটি ফাইলের মধ্যে প্রকৃতপক্ষে পৃথক হয় বাম মুদ্রণ কলামে নীচের একটি সূচক অক্ষর থাকে:

এখানে প্রথম ফাইলটিতে একটি লাইন যুক্ত হয়েছিল।

`- 'প্রথম ফাইলটি থেকে এখানে একটি লাইন সরানো হয়েছিল।


1
নোট করুন যে গিটটি 'এক্সএক্সএক্সএক্স-ফাইল-মোডিফিকেশন-টাইম' অংশটি মুদ্রণ করে না, কারণ এটি সংস্করণ নিয়ন্ত্রণ ব্যবস্থার জন্য অর্থবোধ করে না। ফাইল সিস্টেমের সাথে ফাইলগুলির তুলনার জন্য টাইমস্ট্যামগুলি "দরিদ্র মানুষ" সংস্করণ নিয়ন্ত্রণ হিসাবে কাজ করতে পারে।
জাকুব নারেবস্কি

3

আপনার প্রশ্নগুলি থেকে এটি স্পষ্ট নয় যে আপনি কোন মতভেদগুলি বিভ্রান্তিকর দেখতে পান: বাস্তবে ভিন্নতা বা অতিরিক্ত শিরোনামের তথ্য গিট প্রিন্ট। কেবলমাত্র ক্ষেত্রে, এখানে শিরোনামের একটি দ্রুত ওভারভিউ।

প্রথম লাইনটি হ'ল কিছু diff --git a/path/to/file b/path/to/file- এটি স্পষ্টতই আপনাকে বলছে যে পার্থক্যের এই বিভাগটি কোন ফাইলের জন্য। আপনি যদি বুলিয়ান কনফিগার ভেরিয়েবল সেট করে থাকেন diff.mnemonic prefixতবে aএবং এর bপরিবর্তে আরও বর্ণনামূলক অক্ষরে পরিবর্তিত হবে cএবং w(কমিট এবং ওয়ার্ক ট্রি)।

এরপরে, "মোড লাইনগুলি" রয়েছে - লাইনগুলি আপনাকে এমন কোনও পরিবর্তনের বিবরণ দেয় যা ফাইলের বিষয়বস্তু পরিবর্তন করতে জড়িত না। এর মধ্যে নতুন / মুছে ফেলা ফাইল, নতুন নামকরণ / অনুলিপি করা ফাইল এবং অনুমতিগুলির পরিবর্তন অন্তর্ভুক্ত রয়েছে।

অবশেষে, একটি লাইনের মত আছে index 789bd4..0afb621 100644। আপনি সম্ভবত এটি সম্পর্কে কখনই চিন্তা করবেন না তবে এই 6-সংখ্যার হেক্স নম্বরগুলি এই ফাইলটির জন্য পুরানো এবং নতুন ব্লবের সংক্ষেপিত SHA1 হ্যাশগুলি (একটি ব্লাব একটি ফাইলের বিষয়বস্তুর মতো কাঁচা ডেটা সংরক্ষণ করে গিট অবজেক্ট)। এবং অবশ্যই, 100644ফাইলটির মোড - শেষ তিনটি সংখ্যা অবশ্যই স্পষ্টভাবে অনুমতি; প্রথম তিনটি অতিরিক্ত ফাইলের মেটাডেটা তথ্য দেয় ( এটি বর্ণনা করে এমন এসও পোস্ট )।

এর পরে, আপনি স্ট্যান্ডার্ড ইউনিফাইড ডিফার আউটপুটটিতে চলেছেন (ক্লাসিকের মতো diff -U)। এটি কুকুরের মধ্যে বিভক্ত - একটি কুনি হ'ল ফাইলের একটি বিভাগ যা পরিবর্তন এবং তাদের প্রসঙ্গে রয়েছে। প্রতিটি হুঙ্কের আগে জোড়া ---এবং +++লাইনগুলি প্রশ্নযুক্ত ফাইলটিকে বোঝায়, তারপরে প্রকৃত পার্থক্যটি (ডিফল্টরূপে) উভয় প্রান্তের প্রান্তের তিনটি লাইন -এবং +সরানো / যুক্ত রেখাগুলি দেখানো লাইন।


indexলাইনের জন্য ++ । এর সাথে নিশ্চিতgit hash-object ./file
সিরো সান্তিলি 25 冠状 病 六四 事件 法轮功
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.