গিট টানার পরে বিশদ পরিবর্তন


130

গিট টানার পরে, এর আউটপুট পরিবর্তনের পরিমাণের একটি সংক্ষিপ্তসার দেয়।

আমি প্রতিটি ফাইলের বা বিশদ পরিবর্তনগুলি কীভাবে দেখতে পারি?

ঠিক আছে, এখানে জেফ্রমি আমার প্রশ্ন:

  1. আমি কীভাবে জানব যে আমি মাস্টারকে টানছিলাম? আমি যা করেছি তা হ'ল "গিট টান"।

  2. গিটারের দুটি ডিফল্ট প্রধান মাষ্টার কীসের দিকে ইঙ্গিত করেছেন এবং মাস্টার এবং হেডের মধ্যে পার্থক্য কী?

  3. আমি কীভাবে একটি নির্দিষ্ট ফাইলের বিশদ পরিবর্তন দেখতে পাচ্ছি?

  4. আমি শেষের দিকে সারাংশ আউটপুটে পরিবর্তনটি কীভাবে দেখছি git pull?

  5. মধ্যে পার্থক্য কি git diffএবং git whatchanged?


4
ঠিক আছে, সম্পাদনাগুলির মাধ্যমে নতুন প্রশ্নগুলির পুনরাবৃত্তিটি সিস্টেমটি ব্যবহারের উদ্দেশ্যে ঠিক সেইভাবে নয়। ম্যান পেজগুলি দেখে বা কেবল কিছু চেষ্টা করে আপনি খুব সহজেই আপনার অনেক প্রশ্নের উত্তর দিতে পারেন। উদাহরণস্বরূপ, git diffস্পষ্টভাবে একটি পৃথক ফলাফলকে আউটপুট দেয়, যখন git whatchangedপ্রতিশ্রুতিবদ্ধ তথ্যের একটি তালিকা পরিষ্কারভাবে আউটপুট দেয়, প্রতিটি ফাইলের মধ্যে কী কী পরিবর্তন হয়েছিল তার একটি তালিকা রয়েছে।
ক্যাসকেবেল

সম্ভবত আপনার কম প্রতিনিধি কারণে।
টেড

@ টেড এটি মন্তব্য করতে কেবল 50 জন প্রতিনিধি এবং 15 টি আপগ্রেটে লাগে।
ক্যাসাবেল

উবুন্টু সহ আমার ল্যাপটপে এটি কখনও কখনও কাজ করে না sometimes আমি সাময়িকভাবে সেন্টোসের সাথে অন্য একটি কম্পিউটার খুঁজে পেয়েছি এবং এই মন্তব্যটি করছি। উভয় কম্পিউটারে আমি ফায়ারফক্স ব্যবহার করছি।
টিম

খুব অদ্ভুত. আপনি মেটাতে যেতে চাইতে পারেন এবং এটি কোনও পরিচিত সমস্যা কিনা / তা রিপোর্ট করতে পারেন।
ক্যাসকেবেল

উত্তর:


204

ধরুন আপনি মাস্টারকে টানছেন। আপনি পূর্ববর্তী অবস্থানে পাঠাতে পারেন masterদ্বারা master@{1}(এমনকি বা master@{10.minutes.ago}; এর গ্রাফিক্যাল পুনর্বিবেচনা অধ্যায় দেখুন Git-প্রকা-পার্স man পৃষ্ঠা ), তাই আপনি মত কাজগুলি করতে পারে

  • সমস্ত পরিবর্তন দেখুন: git diff master@{1} master

  • প্রদত্ত ফাইলে পরিবর্তনগুলি দেখুন: git diff master@{1} master <file>

  • প্রদত্ত ডিরেক্টরিতে সমস্ত পরিবর্তন দেখুন: git diff master@{1} master <dir>

  • আবার পরিবর্তনের সংক্ষিপ্তসার দেখুন: git diff --stat master@{1} master

আপনার প্রশ্ন হিসাবে "আমি কীভাবে মাস্টার আছি তা আমি কীভাবে জানি" ... ভাল, শাখা ব্যবহার করা গিট ওয়ার্কফ্লোয়ের একটি গুরুত্বপূর্ণ অঙ্গ। আপনি কোন শাখায় আছেন সে সম্পর্কে আপনার সর্বদা সচেতন হওয়া উচিত - আপনি যদি পরিবর্তনগুলি টানেন তবে আপনি সেগুলি ডান শাখায় টানতে চান! কমান্ডের সাহায্যে বর্তমানে সন্ধান করা একটি দ্বারা একটি তারকাচিহ্ন সহ আপনি সমস্ত শাখার একটি তালিকা দেখতে পারেন git branch। বর্তমান শাখার নামটিও আউটপুট সহ মুদ্রিত হয় git status। আমি কমান্ডের ম্যান পৃষ্ঠাগুলি ব্যবহার করার জন্য সিম্মিংয়ের জন্য অত্যন্ত পরামর্শ দিচ্ছি - ধীরে ধীরে কিছু জ্ঞান তোলার এটি দুর্দান্ত উপায়।

এবং আপনার শেষ প্রশ্ন: HEADবর্তমানে যাচাই করা শাখার নাম। আপনি প্রকৃতপক্ষে ব্যবহার করতে পারেন HEADএবং HEAD@{1}এই প্রসঙ্গেও, তবে শাখাগুলি ব্যবহার করা কিছুটা বেশি দৃ .়, যেহেতু আপনি গিয়ে অন্য কোনও শাখা পরীক্ষা করে দেখেন। HEADএখন এটি দ্বিতীয় শাখা, এবং HEAD@{1}এখন master- আপনি যা চান তা নয়!

এরকম অনেক ছোট প্রশ্ন জিজ্ঞাসা করার জন্য, আপনার সম্ভবত একটি গিট টিউটোরিয়ালটি দেখা উচিত। ওয়েবে এক মিলিয়ন রয়েছে, উদাহরণস্বরূপ:


5
এটি আমার সমাধানের চেয়ে ভাল :)
ক্রিশ্চিয়ান ওডার্ড

2
আমি জানি এই পুরানো, কিন্তু ... এটা অন্য উপায় কাছাকাছি হওয়া উচিত: git diff master@{1} master, অন্যথায় পরিবর্তন দেখানো হয় "পিছন" অর্থাৎ সন্নিবেশ মুছে ইত্যাদি হয়ে
ultracrepidarian

2
git diff master@{1} masterপরিবর্তে আমার জন্য কাজ হয়নি আমার জন্য কাজ git diff master~1 master
unrealsoul007

5
@ unrealsoul007 তারপরে আপনার পরিস্থিতি অন্যরকম ছিল। মাস্টার ~ 1 হ'ল এক মাস্টারের বর্তমানে পয়েন্ট করা পিতামাতার প্রতিশ্রুতি; আপনি ঠিক যে প্রতিশ্রুতি জন্য পৃথক দেখতে যাচ্ছেন। মাস্টার @ {1} হ'ল পূর্ববর্তী প্রতিশ্রুতিবদ্ধ মাস্টার নির্দেশ করেছেন; উদাহরণস্বরূপ যদি আপনি কেবল টানেন তবে এখানে বর্ণিত হিসাবে টানার আগে মাস্টারের অবস্থান হ'ল। যদি এটি এটি না করে থাকে, তবে আপনি টান দেওয়ার পরে আপনি সম্ভবত মাস্টারকে অন্য কিছু করেছেন। git reflog masterকি বোঝার চেষ্টা করুন ।
ক্যাসাবেল

@ জাফ্রমি fatal: ambiguous argument 'firstDesign@': unknown revision or path not in the working tree.আমি এই ত্রুটিটি পেতে থাকি। যদিও গিট রেফলগ ফার্স্ট ডিজাইনের এই আউটপুট রয়েছে
unrealsoul007

52

বলুন আপনি এইরকম গিট টান করেন:

$ git pull
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 4), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From git@dev.example.com:reponame
   a407564..9f52bed  branchname   -> origin/branchname
Updating a407564..9f52bed
Fast forward
 .../folder/filename          |  209 ++++++++-----
 .../folder2/filename2        |  120 +++++++++++---------
 2 files changed, 210 insertions(+), 119 deletions(-)

আপনি সংশোধন নম্বর ব্যবহার করে কী পরিবর্তিত হয়েছে তার পার্থক্য দেখতে পাবেন:

$ git diff a407564..9f52bed

5
আর আপনি ব্যবহার "সারসংক্ষেপ পেতে পারেন git diff --stat a407564..9f52bed" বা শুধু একটি সারসংক্ষেপের জন্য " git diff --summary a407564..9f52bed"
Jakub Narębski

14
গীটের নতুন সংস্করণগুলির জন্য, গিট টান পরিবর্তন করা হয়নি এমন ফাইলগুলির তালিকার আর আউটপুট দেয় না। এটি পেতে, আপনাকে it গিট পুল
স্ট্যাট

6

1. আমি কীভাবে জানবো যদি আমি মাস্টার কাছে করা হয়েছিল? আমি যা করেছি তা হ'ল "গিট টান"।

কমান্ড নিজেই এর মতো কাজ করে:

git pull [options] [<repository> [<refspec>…]]

এবং প্রতি ডিফল্ট বর্তমান শাখা বোঝায়। আপনি ব্যবহার করে আপনার শাখা পরীক্ষা করতে পারেন

git branch -a

এটি আপনার স্থানীয় এবং দূরবর্তী শাখাগুলির তালিকা তৈরি করবে যেমন উদাহরণস্বরূপ ( --- এটিকে আরও স্পষ্ট করার জন্য স্থানীয় এবং দূরবর্তী মধ্যে বিভাজক হিসাবে যুক্ত করা হয়েছে )

*master
foo
bar
baz
---
origin/HEAD -> origin/master
origin/deploy
origin/foo
origin/master
origin/bar
remote2/foo
remote2/baz

এরপরে আপনি যখন একটি দূরবর্তী রেপো একবার দেখুন, আপনি কী উল্লেখ করছেন তা দেখতে পাবেন:

git remote show origin

নিম্নলিখিতগুলির মতো তালিকা তৈরি করবে:

* remote origin
  Fetch URL: ssh://git@git.example.com:12345/username/somerepo.git
  Push  URL: ssh://git@git.example.com:12345/username/somerepo.git
  HEAD branch: master
  Remote branches:
    foo    tracked
    master tracked
  Local refs configured for 'git push':
    foo    pushes to foo    (up to date)
    master pushes to master (fast-forwardable)

সুতরাং কোথা থেকে টানতে হবে এবং কোথায় নামাবেন তা নিশ্চিত হওয়া সহজ।

৩. নির্দিষ্ট ফাইলের বিশদ পরিবর্তনটি কীভাবে দেখবেন?

৪. শেষ গিটটি আবার কীভাবে সারাংশ আউটপুট পরিবর্তন হবে?

সবচেয়ে সহজ এবং সর্বাধিক মার্জিত উপায় (ইমো) হ'ল:

git diff --stat master@{1}..master --dirstat=cumulative,files

এটি আপনাকে আপনার শেষ কাজের বর্তমান অবস্থার তুলনায় পরিবর্তন সম্পর্কে দুটি ব্লক তথ্য দেবে। আউটপুট উদাহরণ (আমি আরও স্পষ্ট করতে আউটপুট এবং এর --- মধ্যে একটি বিভাজক হিসাবে যুক্ত করেছি ):--stat--dirstat

 mu-plugins/media_att_count.php                     |  0
 mu-plugins/phpinfo.php                             |  0
 mu-plugins/template_debug.php                      |  0
 themes/dev/archive.php                             |  0
 themes/dev/category.php                            | 42 ++++++++++++++++++
 .../page_templates/foo_template.php                |  0
 themes/dev/style.css                               |  0
 themes/dev/tag.php                                 | 44 +++++++++++++++++++
 themes/dev/taxonomy-post_format.php                | 41 +++++++++++++++++
 themes/dev/template_parts/bar_template.php         |  0
 themes/someproject/template_wrappers/loop_foo.php  | 51 ++++++++++++++++++++++
---
 11 files changed, 178 insertions(+)
  71.3% themes/dev/
  28.6% themes/someproject/template_wrappers/
 100.0% themes/
  27.2% mu-plugins/
   9.0% themes/dev/page_templates/
   9.0% themes/dev/template_parts/
  63.6% themes/dev/
   9.0% themes/someproject/template_wrappers/
  72.7% themes/

2

এই পদ্ধতি হল hacky ধরনের, কিন্তু এটি আপনার মত গ্রাফিকাল সরঞ্জামগুলি ব্যবহার করার অনুমতি দেয় করব gitkবা gitgবা git-gui:

git pull
git reset HEAD@{1}
gitg (or gitk or whatever tool you like)

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

আমি তখন একটি করে অতিরিক্ত পদক্ষেপ নেব git checkout .এবং তারপরে git pullআবার এমন করবো যাতে আমি সঠিকভাবে টানতে এবং একত্রীকরণ করতে পারি তবে আমি অতিরিক্ত দুটি ধাপ মোকাবেলায় যথেষ্ট পরিমাণে জিইউআইয়ের পার্থক্য যাচাই করার ক্ষমতাকে মূল্যবান বলে মনে করি।

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