"পরিবর্তনের জন্য প্রতিশ্রুতিবদ্ধ না" এর অর্থ কী


239

আমি ভেবেছিলাম আপনার যদি ফাইলগুলি ট্র্যাক করতে চান তবে git add [files you want to track]

আমি জানিনা কেন আমি বার্তা পেয়েছি Changes not staged for commit

যদি এই ফাইলগুলি মঞ্চস্থ না করা হত তবে gitআমাকে সেই ফাইলগুলি সেই Untrackedজাতীয় হওয়া উচিত নয়

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

আমি কাজ করেছি সবাই থেকে একটি নতুন বৈশিষ্ট্য তৈরি ছিল developশাখা ও কাজ feature/change_excel_formatশাখা

আমি ভেবেছিলাম এই ফাইলগুলি stagedস্ট্যাটাসে থাকা উচিত ,

তবে git statusআমাকে বলেছেChanges not staged for commit

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

সংক্ষিপ্ত করার জন্য, আমি শুধুমাত্র Git 3 পর্যায়ে আছে জানি untracked, staged, committed যে কোনো একটি কি বলতে পারবেন, কি জন্য মঞ্চ ছিলChanges not staged for commit এখানে চিত্র বর্ণনা লিখুন

সুতরাং আমি যদি ফাইলটি সংশোধন করে a (ইতিমধ্যে রেপোতে)

এবং টাইপ করুন git st, গিটটি আমাকে বলবেChanges not staged for commit

আমি যদি git aতখন ফাইলটি aহবেstaged status

যদি আমি পরিবর্তিত file aএখন, দুই অবস্থা হতে হবে file aমধ্যে git, ডান?

সুতরাং আমাকে সিদ্ধান্ত নিতে staged aহবে যে প্রতিশ্রুতিবদ্ধতা তৈরি করুন বা not stage aমঞ্চস্থ করতে হবে, এবং তারপরে পূর্ববর্তী পর্যায়েরটি file aবাতিল হয়ে যাবে?

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


3
যদি এই বার্তাটি পাওয়া যায় এবং আপনি কি এই ফাইলটি (ক) প্রতিশ্রুতিবদ্ধ করতে চান তবে আপনি গিটার যুক্ত করার সময় সঠিক ডিরেক্টরি পথে (সমস্ত
সংযুক্তির

উত্তর:


325

আপনি যখন ইতিমধ্যে ভাণ্ডারটিতে থাকা কোনও ফাইল পরিবর্তন করেন, আপনি git addএটি পুনরায় স্টেজ করতে চাইলে আপনাকে তা করতে হবে।

এটি আপনাকে গত প্রতিশ্রুতি দেওয়ার পরে কেবলমাত্র পরিবর্তনগুলির একটি উপসেট প্রতিশ্রুতিবদ্ধ করতে দেয়। উদাহরণস্বরূপ, ধরা যাক আপনার কাছে ফাইল a, ফাইল bএবং ফাইল রয়েছে c। আপনি ফাইল aএবং ফাইল bপরিবর্তন করেন তবে পরিবর্তনগুলি প্রকৃতির ক্ষেত্রে খুব আলাদা এবং আপনি চান না যে সেগুলি সমস্তই একটি একক প্রতিশ্রুতিতে থাকে। আপনি ইস্যু

git add a
git commit a -m "bugfix, in a"
git add b
git commit b -m "new feature, in b"

পার্শ্ব নোট হিসাবে, আপনি যদি প্রতিশ্রুতিবদ্ধ করতে চান তবে আপনি কেবল টাইপ করতে পারেন

git commit -a

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


1
সুতরাং, যদি সেই ফাইলগুলি রেপিতে আলরেড হয়। এবং আমি তাদের পরিবর্তন করেছি, আমিও git commit THEMসরাসরি তাদের যুক্ত না করেই পারি, তাই না?
নিউবাইক

1
অবশ্যই. এবং সেই ক্ষেত্রে কেবলমাত্র তালিকাভুক্ত ফাইলগুলি প্রতিশ্রুতিবদ্ধ হবে, বিভিন্ন ফাইলে পর্যায়ক্রমিক পরিবর্তনের উপস্থিতি নির্বিশেষে।
স্টেফানো ফ্যালাসা

1
আমি একই সমস্যা পেয়েছি কিন্তু আমার সমস্যাটিও তালিকার চিহ্নবিহীন ফাইলগুলির উপ-মডুল কারণ সম্পর্কে ছিল। সুতরাং আমার সাব ডিরেক্টরিতে আমি গিটের সাথে সমস্ত পরিবর্তন যুক্ত করেছি এবং সমস্যাটি চলে গেছে।
এলিয়া

1
আমি ইতিমধ্যে সম্পন্ন করেছি git clean -fdএবং আমি এখনও এটি পাচ্ছি। আমি সমস্ত পরিবর্তন থেকে মুক্তি পেতে চাই। আমার আর কী করা উচিত?
মধু

3
git commit -aসবকিছুই প্রতিশ্রুতিবদ্ধ না, কেবলমাত্র আপডেট করা ফাইলগুলি, নতুনগুলি নয় ...
মার্টিন

62

তাদের মঞ্চায়িত করতে আপনাকে গিট অ্যাড ব্যবহার করতে হবে, বা তারা প্রতিশ্রুতি দেবে না। এটি গ্রহণ করুন যে এটি গিটকে জানিয়ে দেয় যা আপনার করা পরিবর্তনগুলি are

git add -u :/পর্যায়ে সমস্ত পরিবর্তিত ফাইল পরিবর্তন যুক্ত করে মঞ্চে git add * :/সংশোধিত এবং কোনও নতুন ফাইল (যা gitignore'ed নয়) যুক্ত করে


2
এই উত্তরটি উপরেরটির তুলনায় সুস্পষ্ট এবং সংক্ষিপ্ত, এজন্যই আমি এটি পছন্দ করি। ;)
oaxacamatt

13

এটি গিটকে বলার অন্য একটি উপায়:

আরে, আমি আপনাকে কিছু পরিবর্তন করতে দেখেছি, তবে মনে রাখবেন যে আপনি যখন আমার ইতিহাসে পৃষ্ঠা লিখবেন তখন সেই পরিবর্তনগুলি এই পৃষ্ঠাগুলিতে থাকবে না।

আপনি যদি স্পষ্টভাবে git addসেগুলি না করেন তবে ফাইলগুলিতে পরিবর্তনগুলি মঞ্চস্থ করা হয় না (এবং এটি বোঝা যায়)।

সুতরাং আপনি যখন git commit, এই পরিবর্তনগুলি মঞ্চ না হওয়ার পরে যুক্ত করা হবে না। আপনি যদি তাদের প্রতিশ্রুতিবদ্ধ করতে চান তবে আপনাকে প্রথমে তাদের মঞ্চস্থ করতে হবে (অর্থাত্‍ git add)।


2
তবে আমি যে ফাইলটি উল্লেখ করছি তার ফাইলটি আমি পরিবর্তন করিনি
ইওন

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

1
@ হাশিম আমি সম্মত, আমি আসলে যুক্তি বুঝতে পারি না।
হারমান টুথ্রোট

6

নীচের পদক্ষেপগুলি অনুসরণ করুন:

1- গিট স্ট্যাশ
2- গিট অ্যাড।
3- গিট কমিট - এম "আপনার প্রতিশ্রুতি বার্তা"


5
গিট স্ট্যাশ আমার সমস্ত পরিবর্তন সরিয়ে
ফেলল

13
আপনি যদি "গিট স্ট্যাশ" ব্যবহার করেন তবে এই পরিবর্তনগুলি তাদের ফিরে পেতে "অস্থায়ী জায়গায়" রেখে দেয় কেবল "গেম স্ট্যাশ পপ" টাইপ করুন "টেপ স্থান" থেকে আপনার পরিবর্তনটি পেতে
সাইরাস জেই

12
না ব্যবহার Git লুকোবার জায়গা যতক্ষণ না আপনি @viniciussvl এবং সাইরাস মন্তব্য পড়তে
হীন

1
আমি কেন এই ক্ষেত্রে গিট স্ট্যাশ ব্যবহার করব?
টোবিয়াস কাউফম্যান

4

আপনি নতুন ফাইলের পরিবর্তনগুলি সংরক্ষণ করেছেন বলে মনে করেছেন। (উদাহরণস্বরূপ navbar.component.html)

চালান:

ng status
modified:   src/app/components/shared/navbar/navbar.component.html

যদি আপনি এই ফাইলটির জন্য এই পরিবর্তনগুলি আপলোড করতে চান তবে আপনাকে অবশ্যই চালনা করতে হবে:

git add src/app/components/shared/navbar/navbar.component.html

এবং তারপর:

git commit src/app/components/shared/navbar/navbar.component.html -m "new navbar changes and fixes"

এবং তারপর:

git push origin [your branch name, usually "master"]

-------------------------------------------------- -------------

অথবা আপনি যদি আপনার সমস্ত পরিবর্তন (বেশ কয়েকটি / সমস্ত ফাইল) আপলোড করতে চান:

git commit -a

এবং এগুলি প্রদর্শিত হবে "দয়া করে আপনার পরিবর্তনের জন্য প্রতিশ্রুতি বার্তা দিন।"

  • আপনি এই বার্তাটি দেখতে পাবেন যদি আপনি কোনও বার্তা ছাড়াই কমিট করে (-ম)
  • আপনি দুটি পদক্ষেপ নিয়ে এ থেকে বেরিয়ে আসতে পারেন:
  • 1.a. প্রতিশ্রুতি সহ ফোরওয়ার্ড সরাতে একটি বহু-লাইন বার্তা টাইপ করুন।
  • 1.b. অঙ্গীকার বাতিল করতে ফাঁকা ছেড়ে যান।
    1. "এসকে" চাপুন তারপরে ": wq" টাইপ করুন এবং আপনার পছন্দটি সংরক্ষণ করতে এন্টার টিপুন। ভিওলা!

এবং তারপর:

git push

ও ভায়োলা!


2
আমি উপরে যা বলেছি একইভাবে: git commit -aসমস্ত পরিবর্তন আপলোড করে না, এতে নতুন ফাইল অন্তর্ভুক্ত হয় না। এটি কেবল বিদ্যমান ফাইলগুলিতে আপডেটগুলি প্রতিশ্রুতিবদ্ধ।
মার্টিন

3

ইন গিট বাশ অনুসরণ করার চেষ্টা করুন

1।git add -u :/

2।git commit -m "your commit message"

  1. git push -u origin master

দ্রষ্টব্য: আপনি যদি আপনার রেপো চালু না করেন।

সবার আগে

git init 

এবং ক্রমে উপরে উল্লিখিত পদক্ষেপগুলি অনুসরণ করুন। এটি আমার পক্ষে কাজ করেছে


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

1

এর অর্থ তারা প্রতিশ্রুতিবদ্ধ হওয়ার জন্য যুক্ত হয় নি আপনাকে গিট অ্যাড স্ক্রিপ্টস / এক্সেল_পার্সার.পি করতে হবে এবং তাদের মঞ্চ করতে পছন্দ করবে .. আপনি যখন গিট স্ট্যাটাস করবেন তখন তারা মঞ্চস্থ হবে এবং গিট কমিট তাদের প্রতিশ্রুতিবদ্ধ হবে

আপনার মধ্যে কমিট -a-মি "সমস্ত চেকইন" গিট করতে পারেন যা গাছের সমস্ত ফাইল স্বয়ংক্রিয়ভাবে মঞ্চায়ন করে এবং প্রতিশ্রুতিবদ্ধ


1

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

এটি কাটিয়ে উঠতে, আপনি প্রথমে গিট অ্যাড ( git add your_file_name.py) ব্যবহার করে এবং তারপরে পরিবর্তনগুলি সংশোধন করে ফাইল যুক্ত করতে পারেন ( git commit -m "Rename Files" -m "Sample script to rename files as you like")


1

আমি উপরের সমস্ত উত্তরগুলি পড়েছি এবং টার্মিনালটিতে নিম্নলিখিত পদক্ষেপগুলির সাথে চেষ্টা করেছি যা নতুন আপডেট করার জন্য কাজ করে এবং মাস্টারে ফাইল পরিবর্তন করে changes

1) গিট অ্যাড। 2) গিট কমিট - এম "আপনার বার্তা" 3) গিট পুশ অরিজিন মাস্টার

আমি আশা করি এটা আপনাকে সাহায্য করবে।


1

গিট অ্যাড করার সময় আপনি ভুল ডিরেক্টরিতে থাকতে পারেন। :-)


-7

অপসারণ dir/.../.git

আমার জন্য কাজ কর.


আপনার উত্তরের পটভূমি সম্পর্কিত তথ্য বা কেন বা কীভাবে এটি আপনার জন্য কাজ করেছে তা অন্তর্দৃষ্টি দরকার।
জোশুয়া কে

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