পুনর্লিখনের ইতিহাস রুখতে গিটের কি "নিরাপদ মোড" আছে?


11

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

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

  • commit --amend যখন হেড ইতিমধ্যে ঠেলাঠেলি করা হয়েছে
  • rebase একটি অ স্থানীয় স্থানীয় শাখা
  • reset একটি শাখা যা ধাক্কা দিয়েছে

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

আমি বিশ্বাস করি যে এই ধরণের পরিবর্তনগুলি সনাক্ত করা সম্ভব এবং প্রয়োজনে ব্যবহারকারীকে তাদের তৈরি থেকে বিরত রাখুন। তার জন্য সম্ভবত কোনও বিকল্প আছে?

যদি তা না থাকে, আপনি কি মনে করেন এটি তৈরির চেষ্টা করা সার্থক? আপনি কীভাবে এই জাতীয় "বিপজ্জনক পরিবর্তন" চিহ্নিত করতে পারেন তা সুনির্দিষ্টভাবে সংজ্ঞায়িত করার চেষ্টা করবেন?


এমন কাজের পরিবেশে যেখানে খারাপ পরিবর্তন করা অন্য প্রোগ্রামারগুলিকে প্রভাবিত করে, সম্ভবত আপনি এই কাজটি করা উচিত তা নিশ্চিত না হলে আপনি সম্ভবত এই ক্রিয়াগুলি করতে আরও বেশি অনীহা প্রকাশ করবেন। তারপরেও আপনার যাচাই করা উচিত যে পরে কোনও সমস্যা অব্যাহত নেই। কল্পনা করুন যে, কয়েক বছর আগে, আমি অনেক প্রোগ্রামারদের একটি দল ছিল যা এক কোন সংশয় সংগঠনের উৎস যে হবে কম্পাইল করা হয়নি ! আমি তার 3 মাস পরে তাকে গুলি করতে চেয়েছিলাম।
নীল

এটি যুক্তিসঙ্গত বলে মনে হচ্ছে আপনি এটি দূরবর্তী মেশিনের একটি হুকের মধ্যে সনাক্ত করতে পারেন এবং তারপরে পরিবর্তনগুলি প্রত্যাখ্যান করতে পারেন।
অ্যান্ড্রু টি ফিনেল


আমি আপনার প্রশ্ন পাই না। ডিফল্ট মোড নিরাপদ। এটি নির্দিষ্ট করে না দিলে এটি আপনাকে ধাক্কা দিতে দেবে না --force
onিমোন

আমিও এরকম কিছু দেখতে চাই। মূলত আমি তাদের শেখার গিটকে একটি নিরাপদ সংস্করণ সরবরাহ করতে চাই, সম্ভবত কেবল কমান্ড লাইনটি মোড়ানো এবং কেবলমাত্র বেসিকগুলি প্রকাশ করে: প্রতিশ্রুতিবদ্ধতা, টান, ধাক্কা, সহজ জিনিস। এই পৃষ্ঠায় যেকোন কিছুর জন্য তাদের পুরো গিট এড়াতে বাধ্য করুন : git-scm.com/book/en/Git-Tools- রাইটিং - ইতিহাস এবং গিটারের স্থানীয় এবং রিমোট রেপো সম্পর্কে ভাবার জন্য অন্যান্য সরঞ্জামগুলির চেয়ে ইতিমধ্যে শিখতে আরও কঠিন - আপনি রোলব্যাকের পরিবর্তে রিবায়েস করতে পারেন তা ভীতিজনক ary
ক্রিস মোসচিনি

উত্তর:


5

এটিকে খুব কাছাকাছি মনে হচ্ছে, যদি গিট ইতিহাস পুনর্লিখন প্রতিরোধ বা ক্যাচিংয়ের কৌশল হিসাবে একই প্রশ্ন না হয়

এটির সংক্ষেপে আপনি সক্ষম করতে পারবেন

git config --system receive.denyNonFastforwards true

এবং

git config --system receive.denyDeletes true

অথবা কোনও পোস্ট পুনর্লিখন হ'ল আপনি নির্ধারিত কিছু প্রত্যাখ্যান করার জন্য একটি পোস্ট প্রাপ্ত হুক লিখুন।


1
আমি বিশ্বাস করি denyNonFastforwardsএটি ডিফল্ট (?), যদিও denyDeletesনেই। এই দুটি দরকারী, তবে আমি একটি ক্লায়েন্ট-সাইড সমাধানের কল্পনা করছি যা আমাকে থামাতে পারবে অর্থাত্ commit --amendযদি আমি এটির ধাক্কা দিতে না পারতাম (কারণ হেড ইতিমধ্যে ঠেলা ছিল)।
কোস

অন্য কথায়: মেকানিজমগুলি যেগুলি দূরবর্তী ধারাবাহিকভাবে চালিয়ে যাওয়ার অনুমতি দেয় সেগুলি ছাড়াও, আমি এমন কোনও কিছু চাই যা একটি ক্লোনটিকে দূরবর্তী সাথে "ধারাবাহিক" রাখতে দেয়।
কোস

@ কোস আপনি স্থানীয় হুকগুলিও তৈরি করতে পারেন
অ্যান্ড্রু টি ফিনেল

কেবল মাস্টার শাখায় সেট denyNonFastfowardsকরার কোনও উপায় আছে কি true? আমি চাই আমার বিষয় শাখাগুলি পুনর্বাসনের জন্য এবং জোর-ধাক্কা দেওয়ার অনুমতি দেওয়া হোক।
nnyby

2

না কারণ এটি আপনাকে সম্পূর্ণ ক্ষমতা দেবে এবং আপনাকে সেই শক্তিটি আপনি যেভাবে চান পরিচালনা করতে দেওয়া গিটের দর্শনের অংশ।

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


2
আমি ভুল করেছি. যখনই আমি বিপজ্জনক কিছু করি তখন আমার স্পষ্টরূপে নিশ্চিত হওয়া দরকার এমন একটি প্রক্রিয়া এমন একটি জিনিস যা "আমার শক্তিটি আমার নিজের মতো করে পরিচালনা করতে" ফিট করে। :-) (এছাড়াও গিট ইতিমধ্যে অনুষ্ঠানে এটি করে on)
কোস

2

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

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