ইতিমধ্যে লক্ষ্য শাখায় রয়েছে এমন কমিটগুলি দেখায় গিটহাব টানার অনুরোধ


136

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

আমি স্থানীয়ভাবে পুল অনুরোধটিও পরীক্ষা করে দেখেছি এবং এটি কেবল আন-মার্জ করা কমিটগুলি দেখায়।


এটি PR টি মার্জ করার আচরণকে প্রভাবিত করে?
নাথান হিঙ্কে

নাহ, গিথুবের ঠিক পার্থক্য।
লোবাতি

কেউ কি জানেন যে স্ব-হোস্ট করা গিতলাব একই আচরণ ভোগ করে?
জেফ ওয়েলিং

2
আমি পরামর্শ দিচ্ছি যে আমরা সকলেই এই আচরণটি পরিবর্তিত করার ক্ষেত্রে আমাদের আগ্রহ প্রকাশ করার জন্য গিটহাবের সাথে যোগাযোগ করব ( সমর্থন . github.com/contact )। যদি তারা আমাদের কাছ থেকে কান না দেয় তবে তারা জানবে না এটি কতটা গুরুত্বপূর্ণ এবং এটি চিরকাল এভাবেই থাকবে।
স্টিনিবোট

উত্তর:


107

দেখে মনে হচ্ছে পুলটির অনুরোধটি লক্ষ্য শাখায় পরিবর্তনের খবর রাখে না (আমি গিটহাব সমর্থনের সাথে যোগাযোগ করেছি এবং 18 নভেম্বর 2014-এ একটি নকশা দ্বারা উল্লেখ করে একটি প্রতিক্রিয়া পেয়েছি)।

তবে, আপনি নিম্নলিখিতটি করে আপডেটের পরিবর্তনগুলি দেখানোর জন্য এটি পেতে পারেন:

http://githuburl/org/repo/compare/targetbranch...currentbranch

প্রতিস্থাপন githuburl, org, repo, targetbranch, এবং currentbranchহিসাবে প্রয়োজন।

অথবা যেমন হেক্সস্প্রাইট তার উত্তরে নির্দেশ করেছে, আপনি Editএটি PR তে ক্লিক করে এবং অস্থায়ীভাবে বেসটিকে অন্য একটি শাখায় পরিবর্তন করে এবং আবার ফিরে আপডেট করতে বাধ্য করতে পারেন । এটি সতর্কতা উত্পন্ন করে:

আপনি কি নিশ্চিত যে আপনি বেসটি পরিবর্তন করতে চান?

পুরানো বেস শাখা থেকে কিছু প্রতিশ্রুতি সময়সীমা থেকে অপসারণ করা যেতে পারে, এবং পুরানো পর্যালোচনা মন্তব্য পুরানো হতে পারে।

এবং PR তে দুটি লগ এন্ট্রি রেখে দেবে :

এখানে চিত্র বর্ণনা লিখুন


4
হ্যাঁ, আমি কিছুক্ষণ আগে সমর্থনে যোগাযোগ করেছি এবং একই প্রতিক্রিয়া পেয়েছি। তারা এই পরিস্থিতির জন্য অনুকূলিত হন না। এটি কিছুটা হতাশার বিষয়। আমাদের কাছাকাছি আসার উপায়টি হ'ল কেবল পুনরায় চাপ দেওয়া এবং জোর করে চাপ দেওয়া, বা টান বন্ধ করে একটি নতুন তৈরি করা।
লোবাতি

4
এই উত্তরটি সমস্যার সমাধান করে না, তবে কেবলমাত্র ব্যবহারকারীকে সত্য ভিন্নতা দেখতে দেয়।
নির্ভীক ভবিষ্যত

4
প্রশ্নটি ছিল "তারা এখনও টানার অনুরোধে হাজির হচ্ছেন কেন?" এটি সেই প্রশ্নের উত্তর দেয়।
অ্যাডাম মিলারচিপ

3
একটি ভাল কাজের জন্য আমার মন্তব্য দেখুন। আপনি অন্য একটি শাখায় স্যুইচ করতে পিআর সম্পাদনা বোতামটি ব্যবহার করতে পারেন এবং তারপরে মূল বেস শাখায় ফিরে যেতে পারেন এবং এটির পুনরায় সংশোধন করবে।
হেক্সস্প্রিট

11
এটি পরিবর্তন করার জন্য কি প্রিয়-গিথুব অনুরোধ আছে?
vossad01

87

এখানে একটি ভাল কাজ। Editবেস শাখাকে ব্যতীত অন্য কিছুতে পরিবর্তন করতে গিটহাবের PR টি দেখার সময় বোতামটি ব্যবহার করুন master। তারপরে এটিকে আবার স্যুইচ করুন masterএবং এটি এখন সঠিকভাবে কেবল সাম্প্রতিক কমিটগুলি থেকে পরিবর্তনগুলি প্রদর্শন করবে।


4
আমি অবাক হয়েছি আরও লোকেরা এই সমাধানটি স্বীকার করে না। আমি সন্দেহ করি যে তারিখের পুরানো পুরানো অনুরোধটি ঠিক আছে, তবে আমার পছন্দ হয়নি গিটহাবের সমস্ত পুরানো তারিখের ফাইল দেখানো হয়েছে, তাই আমি এটি ব্যবহার করেছি এবং এটি উভয়ই মন্তব্যটি রাখে এবং একীভূত হওয়ার বিষয়ে প্রকৃত পরিবর্তনগুলি কেবল দেখায় । ধন্যবাদ!
তারানাকি

2
আমার পক্ষে কাজ করেনি।
শশাঙ্ক


তিন বছর পরে এবং এটি এখনও একটি দুর্দান্ত সমাধান। এবং দেখুন কেউ কেবল কয়েক ঘন্টা আগে খুব মন্তব্য করেছে ^^^
রিকার্ডো সাপোর্টা

32

সংক্ষিপ্তসার হিসাবে, গিটহাব টানুন অনুরোধগুলিতে কমিটের ইতিহাসটি স্বয়ংক্রিয়ভাবে পুনর্বহাল করে না। সহজ সমাধানগুলি হ'ল:

সমাধান 1: রিবেস

ধরুন, আপনি মধ্যে একত্রীকরণ করতে চান masterথেকে feature-01:

git fetch origin
git checkout feature-01
git rebase origin/master
git push --force

আপনি যদি কাঁটাচামচ নিয়ে কাজ করছেন তবে আপনার originউপরের সাথে প্রতিস্থাপনের প্রয়োজন হতে পারে upstream। দেখুন আমি কীভাবে একটি গিটহাবের কাঁটাযুক্ত সংগ্রহস্থল আপডেট করব? মূল সংগ্রহস্থলের দূরবর্তী শাখাগুলি ট্র্যাকিং সম্পর্কে আরও জানতে।

সমাধান 2: একটি নতুন টানার অনুরোধ তৈরি করুন

মনে করুন আপনি এর masterথেকে ইন্ট্রো মার্জ করতে চান feature-01:

git checkout feature-01
git checkout -b feature-01-rebased
git push -u origin feature-01-rebased

এখন এর জন্য একটি টানার অনুরোধটি খুলুন feature-01-rebasedএবং এর জন্য একটিটি বন্ধ করুন feature-01


4
একটি রিবাজ কমিট হ্যাশগুলিকে পরিবর্তন করে, তাই এটি কি বিদ্যমান পর্যালোচনা মন্তব্যগুলিকে ট্র্যাশ করে শেষ করবে?
হরিদসভ

@haridsv সম্ভবত হ্যাঁ।
ম্যাটিউজ পাইওটরোস্কি

ধাক্কা - বল করার সময় কিছু দেখার জন্য?
পল বেনডেভিস

1
@haridsv এটি আমার অভিজ্ঞতা নয়। আমি প্রায়শই মাঝারি পর্যালোচনাগুলি রিবাজ করি এবং মন্তব্যগুলি হারিয়ে যায় না। যদিও আমি পিআর-র পরিবর্তনের ইতিহাস হারিয়ে ফেলি
জোয়েল

@ জোয়েল বার্কলে আমি ইতিমধ্যে বেশ কয়েকটি পর্যালোচনা অনুভব করেছি যার মধ্যে লেখক প্রত্যাবর্তন করেছেন এবং দেখেছেন যে মন্তব্যগুলি কৌশল অনুসারে রয়েছে। যাইহোক, আমরা ক্রমবর্ধমান পর্যালোচনা করার ক্ষমতা হারাচ্ছি এবং বড় পর্যালোচনার জন্য এটি পর্যালোচকদের জন্য একটি বিশাল জরিমানা। আমাদের কাছে এখন আমাদের পিআর জন্য কয়েকটি গাইডলাইন রয়েছে এবং সেগুলির মধ্যে একটি পুনর্বিবেচনা খোলার পরে কখনও পুনরায় চালু করা উচিত নয় (যদি না কেউ নিশ্চিত হন যে কেউ এখনও পর্যালোচনা শুরু করেন না)। মার্জ করা ঠিক আছে তবে আমাদের গাইডলাইনটি সংঘাতের সমাধানগুলি ব্যতীত অন্য কোনও পরিবর্তনের সাথে একীভূতকরণের পরিবর্তনকে মেশানো নয়।
হরিদসভ

17

আপনার ~/.gitconfigফাইলটিতে আপনাকে নিম্নলিখিতগুলি যুক্ত করতে হবে:

[rebase]
    autosquash = true

এই উত্তরটি যা দেখায় এটি স্বয়ংক্রিয়ভাবে একই অর্জন করবে ।

আমি থেকে এই পেয়েছিলাম এখানে


2
আহত, আমি দুর্ঘটনাক্রমে ভোটে ক্লিক করেছি। এই উত্তরটি আমাকে সাহায্য করেছিল। আমাকে এটি পরিবর্তন করতে দিন।
হেক্টর

@ হোসেইন এর জন্য যান আপনার এখনই এটি করতে সক্ষম হওয়া উচিত।
ম্যাটিউজ পিয়োট্রোস্কি

1
আমি মনে করি এটি হয় গ্রহণযোগ্য উত্তর হওয়া উচিত, বা গৃহীত উত্তরের অন্তর্ভুক্ত। এটি যে ফলাফলটি আমি সন্ধান করছিলাম তা অর্জন করে!
রোনাল্ড রে

1
@ রোনাল্ডের গিট রিবেসিং কোনও সার্বজনীন সমাধান নয়, কারণ এটি ইতিহাস সম্পাদনার সাথে জড়িত। যদি প্রত্যেকে ব্যক্তিগত কাঁটাচামচগুলিতে কাজ করে যা অন্যেরা কখনও ক্লোন করেন না, তবে এটি ঠিক আছে, তবে কেউ আপনার ভাণ্ডারটিকে ক্লোন করে এবং আপনি ইতিহাস সম্পাদনা করার সাথে সাথে আপনি বিভিন্ন ইতিহাসের সাথে সমাপ্ত হন।
অ্যাডাম মিলারচিপ

14

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

এখানে আরও তথ্য উপলব্ধ: https://developer.atlassian.com/blog/2015/01/a-better-pull-request/

সাধারণ পূর্বপুরুষ ভিত্তিক বিভক্তিগুলি বিপজ্জনক বলে মনে হয়। আমি চাই গিটহাবের আরও বেশি স্ট্যান্ডার্ড 3-ওয়ে মার্জ-ভিত্তিক PR তৈরির বিকল্প ছিল।


1
আপনি যে কারণটি উল্লেখ করেছেন তা সঠিক বলে মনে হচ্ছে তবে আমি বিভ্রান্ত হয়ে পড়েছি কারণ সাধারণত যখনই মাস্টার আপডেট হয়ে যায় তখন আমি আমার শাখায় পরিবর্তনগুলি আবার সংশ্লেষ করি ... গিট চেকআউট আমার শাখা -> গিট মার্জ মাস্টার । টান অনুরোধ সঙ্গে সঙ্গে রিফ্রেশ হয়। সাধারণ পূর্বপুরুষও কি আপডেট হয়?
জি.ওন

2
মার্জ করার পরিবর্তে রিবেস করার সময় এই আচরণটি ঘটেছিল বলে মনে হয়
G.One

1
@ জি.ওন, সত্যিই দেরিতে জবাব, তবে হ্যাঁ - আপনি যদি সেই মাস্টার শাখা থেকে আপনার উত্স শাখায় মার্জ করেন তবে আপনি সংজ্ঞা অনুসারে সাধারণ পূর্বপুরুষকে আপডেট করেছেন। আপনি যে মাস্টার থেকে মার্জ হয়ে গেছেন তা প্রতিশ্রুতিবদ্ধ।
ডেভিড কে। হেস

13

এটির সমাধানের একটি উপায় git rebase targetbranchসেই পিআর এ। তারপরে git push --force targetbranch, গিথুব সঠিক কমিট এবং ভিন্নতা প্রদর্শন করবে। আপনি কী করছেন তা যদি না জানেন তবে এটির সাথে সাবধান হন। আপনার রিবেসটি git diff targetbranchকরার জন্য প্রথমে একটি পরীক্ষা শাখার চেকআউট করুন তারপরে এটি নিশ্চিত করে নিন যে এটি আপনি চান তা এখনও রয়েছে।


10

আপনি যখন স্কোয়াশ লক্ষ্যবস্তু থেকে মার্জ করে কমিট করেন তখন গিটহাবের সাথে এটি ঘটে।

আমি স্কোয়াশ ব্যবহার করেছি এবং লক্ষ্য শাখা থেকে মার্জ সহ ডিফল্ট মার্জ কৌশল হিসাবে গিথুবের সাথে একত্রীকরণ করেছি। এটি একটি নতুন প্রতিশ্রুতি প্রবর্তন করে এবং গিথহাব স্বীকৃতি দেয় না যে এই স্কোয়াশেড কমিট ইতিমধ্যে মাস্টার হিসাবে থাকা (তবে বিভিন্ন হ্যাশ সহ) সমান। গিট এটিকে সঠিকভাবে পরিচালনা করে তবে আপনি গিটহাবে আবার সমস্ত পরিবর্তন দেখতে পান, এটি পর্যালোচনা করতে বিরক্তিকর করে তোলে। সমাধানটি হল স্কোয়াশের পরিবর্তে এই টানা আপ স্ট্রিমের নিয়মিত মার্জ করা এবং মার্জ করা। যখন আপনি নির্ভরশীলতা হিসাবে আপনার অন্য কোনও শাখায় একীভূত করতে চান এবং অন্য শাখাটি git merge --squashমাস্টার হয়ে যাওয়ার পরে একবার থেকে মাস্টার থেকে টানা যাওয়ার আগে সেই একক প্রতিশ্রুতিটি প্রত্যাহার করে।

সম্পাদনা: অন্য সমাধান হ'ল রিবেস এবং জোর চাপ দেওয়া। পরিষ্কার তবে পুনর্লিখনের ইতিহাস


1
ধন্যবাদ @achille, এটি আমার পক্ষে সত্যিই সমস্যা ছিল। স্কোয়াশের মার্জটি অক্ষম করার পরে এটি সমাধান হয়ে যায়।
আশ্বিন 777

0

এর পেছনের তত্ত্ব সম্পর্কে আমি ঠিক নিশ্চিত নই। তবে আমি এটি বেশ কয়েকবার পেয়েছি এবং নিম্নলিখিতটি করে এটি ঠিক করতে সক্ষম হয়েছি।

git pull --rebase

এটি আপনার মূল রেপো মাস্টার শাখা থেকে পরিবর্তনগুলি আনতে এবং একত্রীকরণ করবে (যদি আপনার কাছে এটি নির্দেশ করা হয়)

তারপরে আপনি আপনার পরিবর্তনগুলি আপনার গিথুব ক্লোন করা সংগ্রহস্থল (লক্ষ্য) এ জোর করে চাপুন

git push -f origin master

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



-1

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

git add .  && git commit -a --allow-empty-message -m '' && git reset --soft HEAD~2 &&
git commit --edit -m"$(git log --format=%B --reverse HEAD..HEAD@{1})"

আমি কোন বিরোধ নেই, আপনি যেতে ভাল!

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