গিথুব: বিদ্যমান পুল অনুরোধে কমিট যোগ করা হচ্ছে


89

আমি কাঁটাচামচ ব্যবহার করে এই ফাইল ফাইল বোতামটি ব্যবহার করে গিথুবে রেল রেপোতে একটি টান অনুরোধ খুলেছি ।

এখন, আমার পিআর সম্পর্কে প্রতিক্রিয়া পাওয়ার পরে, আমি আরও কিছু কমিট যোগ করতে চেয়েছিলাম। সুতরাং এখানেই আমি যা করে শেষ করেছি

$ git clone git@github.com:gaurish/rails.git #my forked repo
$ git rebase -i 785a2e5 #commit hash of my commit using which PR was opened
$ git checkout patch-3 #branch name I had to send my commits under to be shown in that PR
$ git commit -am "Changes done as per feedback"
$ git push origin patch-3

এটি দুর্দান্ত কাজ করেছে তবে বেশ জটিল কাজ প্রবাহ বলে মনে হচ্ছে। আমি এখানে কিছু ভুল হতে পারে?

আমার প্রশ্ন: আমি কি এটি সঠিক উপায়ে করছি? যদি না হয়, তবে এটি করার উপযুক্ত উপায় কী?


4
কিছু এখানে আসার এই তাদের দৃশ্যকল্প ভাল ফিট খুঁজে পেতে পারেন: stackoverflow.com/questions/9790448/...
AaronLS

4
আমি প্রশ্ন / উত্তর পরিষ্কারের এই সংস্করণটিও পেয়েছি: স্ট্যাকওভারফ্লো.com
বেন হুইলার

উত্তর:


64

যেহেতু আপনি গিটহাবের সরঞ্জামগুলি ব্যবহার করছেন এবং একটি ফাইল পরিবর্তন করছেন, আপনি গিটহাবের ফাইলটিতেও ব্রাউজ করতে পারবেন, "ট্রি:" ড্রপডাউন ( patch-3আপনার ক্ষেত্রে) এর নীচে উপরের বাম কোণ থেকে সঠিক শাখাটি নির্বাচন করুন এবং এখন "সম্পাদনা নির্বাচন করুন" এই নথি". এখন আপনার পরিবর্তনগুলি এই শাখায় প্রতিশ্রুতিবদ্ধ হবে এবং আপনার টানার অনুরোধে প্রদর্শিত হবে


নোটটি শাখাটি সুরক্ষিত থাকলে এটি সম্পাদন করবে না, সম্পাদনা বোতামটি ধূসর হবে
লুই ম্যাডডক্স

10

আমি সম্প্রতি এই বিষয়ে ব্লগ করেছি :

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

এজন্য আমাদের মার্জ করার পরিবর্তে রিবেস করা দরকার:

git co devel #devel is ansible's HEAD aka "master" branch
git pull --rebase upstream devel
git co user-non-unique
git rebase devel

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

এখন, আপনার ব্যক্তিগত গিটহাব বৈশিষ্ট্য শাখায় সেগুলি আপডেট করে দেওয়া এখানে ব্যর্থ হবে, কারণ উভয় শাখাই পৃথক: স্থানীয় শাখা গাছ এবং দূরবর্তী শাখার গাছটি "সমন্বয়হীন", কারণ এই বিভিন্ন কমিট হ্যাশ রয়েছে। গিট প্রথমে আপনাকে বলবে git pull --rebase, তারপরে আবার চাপ দিন, তবে এটি আপনার ইতিহাস পুনরায় লেখার সাথে সাথে এটি একটি দ্রুত অগ্রসর করার ধাক্কা হবে না। যে না!

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

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

গিট-পুশ অনুযায়ী (1):

Update the origin repository’s remote branch with local branch, allowing non-fast-forward updates. This can leave unreferenced commits dangling in the origin repository.

সুতরাং টানবেন না, জোর করে এভাবে চাপ দিন:

git push svg +user-non-unique

বা:

git push svg user-non-unique --force

এটি আপনার স্পষ্টতই আপনার স্থানীয় শাখার সমস্ত কিছু সহ স্পষ্টভাবে আপনার দূরবর্তী শাখাটি ওভাররাইট করবে। দূরবর্তী স্ট্রিমে থাকা কমিটগুলি (এবং ব্যর্থতার কারণ হয়েছিল) সেখানেই থাকবে, তবে ঝুঁকির কমিট হবে, যা শেষ পর্যন্ত গিট-জিসি (1) দ্বারা মুছে ফেলা হবে। কোন ব্যাপারই না.

যেমনটি আমি বলেছি, এটি এএএএফআইএস সবচেয়ে পরিষ্কার সমাধান। এর নেতিবাচক দিকটি হ'ল আপনার PR সেই নতুন কমিটের সাথে আপডেট হবে যা পরবর্তী তারিখটি পাবে এবং PR এর মন্তব্য ইতিহাসে সিঙ্কের বাইরে উপস্থিত হতে পারে। কোনও বড় সমস্যা নয়, তবে এটি সম্ভবত বিভ্রান্তিকর হতে পারে।


5

আপনি একটি নতুন টান অনুরোধ তৈরি করতে পারেন যা masterনির্দিষ্টটির পরিবর্তে আবদ্ধabc1234 সংশোধনের ।

এইভাবে, আপনার ভাণ্ডারে কোনও নতুন প্রতিশ্রুতি / পুশ টান অনুরোধে যুক্ত করা হবে।


3

হ্যাঁ - আপনি প্রয়োজনের তুলনায় অনেক বেশি কাজ করছেন। কেবল একটি অতিরিক্ত প্রতিশ্রুতিবদ্ধ করুন এবং তারপরে চাপ দিন। আপনি যখন নিজের ব্রাউজারে গিথুব রিফ্রেশ করবেন তখন আপনি মূল প্রতিশ্রুতিটি পাশাপাশি নতুন ধাক্কা দেখবেন।

$ git commit -m "These changes are in response to PR comments"
$ git push -f origin HEAD

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