আমি কীভাবে গিট দিয়ে ধাক্কা দিতে চলেছি তা দেখতে পাবো?


587

আমি কোনও git pushআদেশ দিলে কী ধাক্কা দেওয়া হবে তা দেখার কোনও উপায় আছে ?

আমি যা চিত্রিত করছি তা গিথুবের "পুল অনুরোধ" বৈশিষ্ট্যটির "ফাইলগুলি পরিবর্তিত" ট্যাবের মতো। আমি যখন একটি টানার অনুরোধটি ইস্যু করি, তখন আমি তাদের দেখতে এবং দেখতে চাই তারা আমার টানার অনুরোধটি গ্রহণ করলে কী টানবে:সামগ্রিক পরিবর্তনের গিথুব উদাহরণ

কমান্ড লাইন ঠিক আছে তবে আমি কিছুটা জিইআইআই পছন্দ করব (উপরের স্ক্রিনশটের মতো)।


সংশ্লিষ্ট: stackoverflow.com/questions/3080509/...
টি

অনেক সম্পর্কিত প্রশ্ন / উত্তর; এখানে অন্যটি: স্ট্যাকওভারফ্লো
মাইকেল 21

উত্তর:


664

ধাক্কা দেওয়ার জন্য ফাইলগুলির একটি তালিকা চালানোর জন্য:

git diff --stat --cached [remote/branch]

উদাহরণ:

git diff --stat --cached origin/master

ফাইলগুলির কোডের ভিন্নতার জন্য ধাক্কা দেওয়ার জন্য, চালান:

git diff [remote repo/branch]

যে ফাইলগুলি পরিবর্তিত হবে তার পুরো ফাইল পাথ দেখতে, চালনা করুন:

git diff --numstat [remote repo/branch]

আপনি যদি কোনও জিইউআইতে এই ভিন্নতাগুলি দেখতে চান তবে আপনাকে তার জন্য গিটটি কনফিগার করতে হবে। দেখুন আমি কীভাবে ভিজ্যুয়াল ডিফ প্রোগ্রামের সাথে 'গিট ডিফ' আউটপুট দেখতে পারি?


8
গিট ডিফের উভয় প্রকারভেদ - প্রদত্ত প্রতিশ্রুতি ব্যতীত ক্যাশযুক্ত পার্থক্য কেবলমাত্র হেডের সাথে ডাব্লু / পার্থক্য প্রদর্শন করবে display আমি মনে করি আপনি গিট ডিফ বলতে চেয়েছিলেন [- স্ট্যাট] - মূল উত্স / মাস্টার ধরেছেন, ধরে নিচ্ছেন উত্সের মূল শাখা মাস্টার
এমফন্টানি

52
এটি আপনি যা চান ঠিক তা নয়। HEADউত্স ( git diff origin/master HEAD) এর বিপরীতে আপনার সূচি নয়, আলাদা হওয়া উচিত । সূচককে পৃথক করা একই ফলাফলগুলি দেবে যদি এবং কেবলমাত্র যদি আপনার প্রতিশ্রুতিবদ্ধ হওয়ার কোনও পরিবর্তন না ঘটে। আপনার যদি মঞ্চ পরিবর্তন হয় তবে এগুলি ডিফের মধ্যে অন্তর্ভুক্ত করা হবে তবে তারা এখনও প্রতিশ্রুতিবদ্ধ হয়নি বলে স্পষ্টভাবে ধাক্কা দেওয়া হবে না।
ক্যাসকেবেল

5
@ জেফ্রমি থেকে মন্তব্যটিতে তথ্য অন্তর্ভুক্ত করার জন্য এই উত্তরটি সম্পাদনা করা দরকার git diff --stat origin/master HEADসঠিক উত্তর।
টনি টপার

2
@ এমফন্টনির আমার কাছে সঠিক উত্তর রয়েছে। আমি যা যা ইতিমধ্যে প্রতিশ্রুতি দিয়েছি তা থেকে কী ঠেলাঠেলি হবে তা যাচাই করতে চাই, আমি যেটা বদলেছি তার সব কিছু সম্পাদন করলে প্রতিশ্রুতিবদ্ধ হবে না। git diff --cached [remote/branch]কৌতুকটি করেন :)
শুকরিয়া

2
উত্স / মাস্টার টাইপ করার পরিবর্তে, আপনি @ {u} যেমন গিট ডিফ @ f u {বা গিট ডিফ হেড @ {u use ব্যবহার করতে পারেন নোট করুন যে এটি কেবলমাত্র যদি আপনার প্রবাহের ট্র্যাকিং শাখা ইতিমধ্যে তৈরি এবং লিঙ্কযুক্ত থাকে তবে এটি কাজ করে। যখন আমি প্রচুর শাখা এবং প্রচুর রিমোট পেয়েছি তখন আমি এটি দরকারী বলে মনে করি যাতে কোনটি লিঙ্কযুক্ত তা নিয়ে আমাকে ভাবতে হবে না।
ড্যামিয়েন সাওয়ের

192

সর্বদা শুকনো রান:

git push --dry-run

এটি প্রকৃতপক্ষে ডেটা প্রেরণ বাদে সবকিছু করবে।

আপনি যদি আরও গ্রাফিকাল ভিউ চান তবে আপনার কাছে প্রচুর বিকল্প রয়েছে।

টিগ এবং গিট স্ক্রিপ্ট যা গিটের সাথে আসে তা আপনার স্থানীয় কপির বর্তমান শাখা এবং দূরবর্তী বা উত্সের শাখা প্রদর্শন করে।

বিকল্প পাঠ

সুতরাং যে কোনও প্রতিশ্রুতি আপনি যে উত্সের পরে করবেন তা হ'ল কমিটগুলি হ'ল ধাক্কা দেওয়া হবে।

আপনি যে শাখায় টাইপ করে ধাক্কা দিতে চান তাতে শেল থেকে গিট খুলুন gitk&, তারপরে রিমোটের মধ্যে কী রয়েছে এবং আপনি রিমোটে কী চাপতে চলেছেন তার মধ্যে পার্থক্য দেখতে আপনার স্থানীয় আনপিশড কমিট নির্বাচন করুন এবং রিমোটে ডান ক্লিক করুন এবং "এটি আলাদা করুন -> নির্বাচিত" নির্বাচন করুন: বিকল্প পাঠ


18
গিট পুশ - শুকনো রান আমাকে দেখার মতো প্রত্যাশার মতো কিছু দেখায় না। গিটক আরও কাছে, তবে এটি আমাকে ধাক্কা দেওয়া মোট পরিবর্তনগুলির মোট মোট দেখায় না। সুতরাং আমি যদি 6 টি কমিটকে দূরবর্তী স্থানে ঠেলে দিচ্ছি তবে আমি কী ধাক্কা দেওয়া হবে তার যোগফল দেখতে চাই। প্রতিটি প্রতিশ্রুতি স্বতন্ত্রভাবে কী আছে তা আমি বিবেচনা করি না কারণ একটি প্রতিশ্রুতি পরবর্তী দ্বারা সম্পূর্ণরূপে উপেক্ষিত হতে পারে।
সে.এম.সি.কুলোহো

1
কী ধাক্কা দেওয়া হবে তার একটি আলাদা প্রয়োজন হলে, করুন git diff --stat HEAD origin/masterবা করুন git diff HEAD origin/master। গুরুত্বপূর্ণ মস্তক , অন্যথায় আপনি আপনার পরিবর্তন মধ্যে uncommited পরিবর্তনগুলি অন্তর্ভুক্ত
ড্যানিয়েল এল্ডযার

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

1
সমস্যাটি git push --dry-runহ'ল এটির জন্য এখনও রিমোটে লেখার অনুমতি প্রয়োজন। সুতরাং আপনার কাছে যদি প্রবাহের দিকে ধাক্কা দেওয়ার অনুমতি ব্যতীত কোনও ক্লোন থাকে তবে আপনি দেখতে চান যে আপনার স্থানীয় আনপশড পরিবর্তনগুলি --dry-runকী তা তা করবে না।
এড আভিস

এটি একটি ভাল সমাধান, তবে এটি লক্ষ করা উচিত যে এটির জন্য দূরবর্তীটির সাথে সংযোগ স্থাপনের প্রয়োজন নেই (প্রযোজ্য ক্ষেত্রে এসএসএইচ কী প্রবেশ করানো সহ)। আপনি যদি কেবল branchএবং এর মধ্যে পার্থক্যটি দেখতে চান তবে origin/branchআমি আয়নু জি স্ট্যানের উত্তরটি নিয়ে যাব, কারণ এটির জন্য আসলে দূরবর্তী রেপোতে সংযোগের প্রয়োজন নেই। আপনার যা প্রয়োজন তা নির্ভর করে এটি ভাল বা খারাপ হতে পারে।
শিম শিন

169

কেবল ধাক্কা দেওয়ার জন্য অপেক্ষা করা কমিটগুলি তালিকাভুক্ত করার জন্য: ( এটিই আপনার মনে থাকবে )

git cherry -v

SHA1 এর পাশে প্রতিশ্রুতিবদ্ধ বিষয়গুলি দেখান।


5
একটি আকর্ষণীয় বিষয় হ'ল আপনি তুলনামূলকভাবে একটি রিমোট নির্দিষ্ট করতে পারেন: git cherry -v heroku/remoteআপনি যদি নিজের কোডটিকে একাধিক রিমোটে রাখেন তবে।
fagiani

সেরা পরিপূরক কমান্ড কোনটি যা আমাদের এই কমিটগুলি অন্তর্ভুক্ত পার্থক্যগুলি বাস্তবে সংযুক্ত করতে দেয়?
হাসান বৈগ

এই কমান্ডটি দুর্দান্ত, তবে আমি ধরণের সময় ফাইলগুলির নাম পরিবর্তন করার মতো আরও বিশদ চাই।
এলএস

21

আপনি সম্ভবত চালাতে চান git difftool origin/master...। এটি আপনার বর্তমান শাখায় যা এখনও উত্স / মাস্টার শাখায় নেই তার একীভূত পার্থক্য প্রদর্শন করবে এবং এটি আপনার পছন্দের গ্রাফিকাল ডিফ সরঞ্জামে প্রদর্শন করবে। সর্বাধিক আপ টু ডেট হতে, git fetchপ্রথমে চালান ।


2
git difftool -d origin/master, আমি আমার ডিফ্টল মেলে সেট করে রেখেছি তাই এটি দুর্দান্ত কাজ করে, ধন্যবাদ!
অ্যাকোরিয়াস পাওয়ার

git difftool -dভাল উপায়, কুম্ভ শক্তি ধন্যবাদ। একমাত্র সমস্যা হ'ল এটি সরানো ফাইলগুলি সনাক্ত করে না এবং সেগুলি এটিকে পরিবর্তে মুছে ফেলা এবং যুক্ত হিসাবে দেখায়।
EM0

8

দূরবর্তী রেপোতে চাপ দেওয়ার আগে আপনার স্থানীয় সংস্করণটির তুলনা করার একটি উপায় (শুকনো দৌড়ের ধাক্কা):

টরটোইজিট ব্যবহার করুন:
রুট ফোল্ডার প্রকল্পে ডান ক্লিক করুন> টরটোইজিট> পূর্ববর্তী সংস্করণ সহ আলাদা করুন>
সংস্করণ 2 এর জন্য চয়ন করুনrefs/remotes/origin/master


8

চেষ্টা করুন git diff origin/master..master(ধরে নিলেন এটি origin/masterআপনার প্রবাহ)। বিপরীতে git push --dry-run, আপনার প্রবাহে লেখার অনুমতি না থাকলেও এটি এখনও কাজ করে।


5

ব্যবহার করুন git gui, সেখানে আপনি আপনার আসল প্রতিশ্রুতিতে কী পরিবর্তন হয়েছে তার একটি তালিকা দেখতে পাবেন। আপনি gitkউইচ ব্যবহার করতে পারেন রিফ্লাগগুলির জন্য একটি সহজ ইন্টারফেস সরবরাহ করে। শুধু remotes/...এবং masterকি মধ্যে ধাক্কা দেওয়া হবে তা মধ্যে তুলনা করুন । এটি আপনার স্ক্রিনশটের অনুরূপ একটি ইন্টারফেস সরবরাহ করে।

উভয় প্রোগ্রাম গিট অন্তর্ভুক্ত করা হয়।


1
গিট গুইতে আমি এমন কোনও জায়গা দেখছি না যা প্রতিশ্রুতিবদ্ধ তবে ধাক্কা না দিয়ে সমস্ত কিছু দেখায়।
সে.এম.সি.কুলোহো

গিট গুইতে আপনি দেখতে পাচ্ছেন, কী পরিবর্তন হয়েছে তবে কমিট হয়নি। Gik ইন (ভিয়া gitk --allআপনি সকল মন্তব্য একটি সম্পূর্ণ তালিকা পেতে এখন আপনি ধাক্কা আপনার রিমোটের সঙ্গে আপনার দেব-শাখা প্রকৃত অবস্থা তুলনা করতে
fuz

4

কোন ফাইলগুলি পরিবর্তন করা হয়েছে তা দেখতে এবং আপনি যে masterশাখার ব্যবহার করতে পারেন তার তুলনায় প্রকৃত কোড পরিবর্তনগুলি দেখুন :

git diff --stat --patch origin master

উল্লেখ্য : তারপর আপনি আপনার টপ লেভেল প্রকল্পের ডান-ক্লিক করুন আপনি Intellij IDEs ব্যবহারের ঘটতে যদি করতে পারে তবে নির্বাচন গীত > শাখা সাথে তুলনা করুন > এবং উৎপত্তি যদি আপনি চান যেমন বাছাই origin/master। ফাইল ট্রিতে প্রদর্শিত হবে আপনি ভিজ্যুয়াল পার্থক্য দেখতে ফাইলগুলিতে ডাবল-ক্লিক করতে পারেন। উপরের কমান্ড-লাইন বিকল্পের বিপরীতে আপনি পৃথক উইন্ডো থেকে আপনার স্থানীয় সংস্করণগুলি সম্পাদনা করতে পারেন।


3

আপনি কমিটগুলি এর মাধ্যমে তালিকাভুক্ত করতে পারেন:

git cherry -v

এবং তারপরে নিম্নলিখিত কমান্ডের সাথে তুলনা করুন যেখানে its এর সংখ্যা কমিটের সংখ্যার সমান (উদাহরণস্বরূপ এটি 2 টি কমিট):

git diff HEAD^^

সর্বশেষ কমিটের তালিকাটি দেখতে এটি কেবল ভাল। এটি ফাইল (গুলি) এর নাম দেবে না। তাই কেউ কেউ শুকনো রান অপশন এবং প্যাচ অপশন ব্যবহার করে উত্তর দেওয়া ভাল। গিট ডিফ - স্ট্যাট - প্যাচ অরিজিনাল মাস্টার গিট পুশ
শ্রী রামা

2

আপনি যদি ম্যাক ওএস এক্স ব্যবহার করে থাকেন তবে আমি আপনাকে টাওয়ার পাওয়ার পরামর্শ দিচ্ছি, এটি একটি দুর্দান্ত প্রোগ্রাম যা গিটকে আমার জন্য আনন্দিত করে। আমাকে এখন টার্মিনাল কমান্ডগুলি মনে রাখতে হবে এবং এটি ফাইলগুলির মধ্যে পার্থক্যগুলি দেখতে, ট্র্যাক করতে এবং সমাধান করার জন্য একটি দুর্দান্ত জিইউআই সরবরাহ করে।

এবং না, আমি তাদের সাথে অনুমোদিত নই, আমি কেবল তাদের সফ্টওয়্যার ব্যবহার করি এবং এটি সত্যই পছন্দ করে।

http://www.git-tower.com/


2
আমি টাওয়ার ব্যবহার করি তবে আপনি কীভাবে যে ফাইলগুলি প্রতিশ্রুতিবদ্ধ হয়েছিলেন কিন্তু ধাক্কা না দিয়ে দেখতে পাচ্ছেন?
মাইকেল আইরি

এটি প্রশ্নের উত্তর দেয় না।
রিইনারপোস্ট

1

কেবল আমার দুটি সেন্ট যুক্ত করার জন্য ... গিটল্যাব রানার গিটল্যাব পাইপলাইনে চাকরী চালানোর সময় আমি এটি প্রয়োগ করতে চেয়েছিলাম। এটি করার সর্বোত্তম উপায় হ'ল এই স্ক্রিপ্টটি ব্যবহার করা:

git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA

এছাড়াও আমার ক্ষেত্রে আমি এক্সটেনশনের মাধ্যমে ফাইলগুলি ফিল্টার করতে চেয়েছিলাম, এটি ব্যবহার করার জন্য:

git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA '*.py'

এর পরে আপনি উদাহরণস্বরূপ এই তালিকাটি অন্য কোথাও ফরোয়ার্ড করতে পারেন, সম্ভবত একটি লিটার;)

আশা করি এটি কারও সাহায্য করবে।


1
  1. আপনার যদি রিমোটে লেখার অনুমতি থাকে
git push --dry-run
  1. আপনার যদি রিমোটে লেখার অনুমতি না থাকে
git diff --stat HEAD remote/branch

0

পরে git commit -m "{your commit message}", আপনি ধাক্কা দেওয়ার আগে একটি কমিট হ্যাশ পাবেন । সুতরাং আপনি gitনিম্নলিখিত কমান্ডটি চালিয়ে যা দেখতে পাচ্ছেন তা দেখতে পাবেন :

git diff origin/{your_branch_name} commit hash

উদাহরণ: git diff origin/master c0e06d2


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