'গিট কমিট' কেন আমার পরিবর্তনগুলি সংরক্ষণ করে না?


251

আমি এটির git commit -m "message"মতো করেছিলাম :

> git commit -m "save arezzo files"
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

তবে পরে, যখন আমি git statusএটি করি তখন একই সংশোধিত ফাইলগুলি দেখায়:

> git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

আমি কি ভুল করছি?


16
git commit -am "save arezzo files"সমস্ত পরিবর্তন স্বয়ংক্রিয়ভাবে যুক্ত করতে ব্যবহার করুন (tgitignore)। আপনি কেবলমাত্র নির্দিষ্ট ফাইল / ডায়ার যুক্ত করতে চাইতে পারেন:git add file.src
এমবিএক্স

উত্তর:


400

যেমন বার্তাটি বলে:

প্রতিশ্রুতিতে কোনও পরিবর্তন যুক্ত করা হয়নি ("গিট অ্যাড" এবং / অথবা "গিট কমিট -a" ব্যবহার করুন)

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


আপনার নির্দিষ্ট উদাহরণের জন্য, আপনি ব্যবহার করতে পারেন:

git commit -am "save arezzo files"

( aপতাকাগুলিতে অতিরিক্ত নোট করুন , এটি হিসাবেও লেখা যেতে পারে git commit -a -m "message"- উভয়ই একই কাজ করে)

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

গিট ডকুমেন্টেশন পৃষ্ঠাতে গিট কীভাবে ব্যবহার করতে হয় তার জন্য সাধারণ ডকুমেন্টেশন এবং টিউটোরিয়ালগুলিও পেতে পারেন যা ফাইলগুলি স্টেজিং / অ্যাড করার ধারণা সম্পর্কে আরও বিশদ দেবে।


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


@ পিটারবুটন আপনার কি "ইন্টারেক্টিভ অ্যাডিং" পরিবর্তে "ইন্টারেক্টিভ অ্যাডিং" বলতে চান?
ডিজেবি

3
না, আমি ইন্টারেক্টুয়াল অ্যাডিং বলতে চাইছি।
পিটার বুটন

2
স্থানীয় সংগ্রহস্থল হ'ল দূরবর্তী সংগ্রহস্থলে কোড চাপানোর আগে নিজেই এক ধরণের স্টেজিং অঞ্চল। পরিবর্তনগুলি পরিবর্তনের আগে কেন অন্য একটি "স্তর" যুক্ত করবেন, এটি কিছুটা অতিরিক্ত জটিল নয়? আমি গিটে নতুন তবে আমি কল্পনা করি যে 99,99% বিকাশকারীরা সর্বদা কমিট-ম্যাম ব্যবহার করেন কারণ পরিবর্তনগুলি যাইহোক তাদের স্থানীয় পরিবেশের বাইরে যায় না।
পাভেলরমন

2
আমি মনে করি আমি কেবল এটিতে ছুটে এসেছি কারণ আমার আইডিই আমার যত্ন নিচ্ছে to নিশ্চিত হতে পারছি না কেন এটা একটি প্রয়োজনীয় পদক্ষেপ পারেন, কিন্তু তারপর আবার, সেখানে Git আমি পাবেন না ... মানে Git সম্পর্কে অনেক আছে ...
trpt4him

49

আপনি পরিবর্তনগুলি যোগ করেন নি। হয় তাদের মাধ্যমে বিশেষভাবে যুক্ত করুন

git add filename1 filename2

বা সমস্ত পরিবর্তন যুক্ত করুন (প্রকল্পের মূল পথ থেকে)

git add .

বা -aকমর্ট করার সময় শর্টহ্যান্ড ব্যবহার করুন :

git commit -a -m "message".

তদতিরিক্ত, আমি দৃ strongly়ভাবে ইন্টারেক্টিভ অ্যাডিং ব্যবহার করার জন্য ব্যবহারকারীদের প্রতি অনুরোধ করছি। বিশেষত যখন আপনি দুর্দান্ত ছোট্ট কমিটগুলি করার চেষ্টা করছেন যা সহজেই ফেরানো যায়।
jer

40

আপনাকে যা করতে হবে:

git commit . -m "save arezzo files"

4
এটি ওপি-র প্রশ্নের সঠিক উত্তর বলে মনে হচ্ছে। তিনি "যুক্ত" করতে চান নি, তিনি যা পরিবর্তন করেছিলেন তা প্রতিশ্রুত করতে চেয়েছিলেন।
ভেক্টরভোরটেক

8

আমি গিটার উত্স নিয়ন্ত্রণে থাকা একটি ছোট সাব প্রকল্পটি অন্য একটি প্রকল্পে অনুলিপি করেছি এবং .git ফোল্ডারটি মুছতে ভুলে গিয়েছি। আমি যখন প্রতিশ্রুতিবদ্ধ করতে গিয়েছিলাম উপরের মতো একই বার্তাটি পেয়েছি এবং আমি .gitফোল্ডারটি মোছার আগ পর্যন্ত এটিকে সাফ করতে পারছি না ।

এটি কিছুটা মূর্খ, তবে এটি আপনার কাছে ফোল্ডারের অধীনে কোন .git ফোল্ডার নেই যা পরীক্ষা করে না checking


7

আপনি এটি করতে পারতেন:

git add -u -n

আপনি কোন ফাইলগুলি সংশোধন করেছেন এবং যুক্ত করতে চলেছেন তা পরীক্ষা করতে (ড্রাই ড্রাই: -এন বিকল্প) এবং তারপরে

git add -u

স্রেফ পরিবর্তিত ফাইল যুক্ত করতে


4

আমার এই ফাইলটি যেখানে নীচেgit add . একটি সাব-ডিরেক্টরিতে কাজ করেছি যেখানে আমার ফাইলটি (আমার ভাণ্ডারের হোম ডিরেক্টরি, তাই কথা বলার জন্য) কাজ করার সময় আমি এই সমস্যাটি উপস্থিত হতে দেখছি । আপনার উপরের ডিরেক্টরিতে ডিরেক্টরিগুলি পরিবর্তন করার চেষ্টা করুন এবং এরপরে চলমান ।.gitignoregit add .git commit -m "my commit message"


4

সম্ভবত একটি সুস্পষ্ট জিনিস, কিন্তু ...

আপনার যদি সূচকে সমস্যা হয় তবে গিট-গুই ব্যবহার করুন । আপনি সূচক (স্টেজিং এরিয়া) আসলে কীভাবে কাজ করে তা খুব ভাল দেখেন।

সূচীটি আমাকে বুঝতে সাহায্য করার তথ্যের আরও একটি উত্স হ'ল স্কট চ্যাকনস "গিটিং গিটিং" পৃষ্ঠা 259 এবং এগিয়ে।

আমি কমান্ড লাইনটি ব্যবহার শুরু করেছি কারণ বেশিরভাগ ডকুমেন্টেশন কেবল এটিই দেখিয়েছিল ...

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


3

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

rm -rf .git

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


1

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

git add .
git commit -am "image uploading"
git push origin master

গিট পুশ অরিজিনাল মাস্টার গণনার অবজেক্টস: 6574, সম্পন্ন। গণনা অবজেক্টস: 100% (6574/6574) হয়ে গেছে। 4 টি পর্যন্ত থ্রেড ব্যবহার করে ডেল্টা সংকোচনের জিনিসগুলি সংক্ষেপণ: 100% (6347/6347), সম্পন্ন। লেখার বিষয়গুলি: 28% (1850/6569), 142.17 মাইবি | 414.00 কিবি / এস


0

একটি ইস্যু করার commit --amendপরেও আমি যেখানে করছিলাম তা নিয়ে আমার একটি সমস্যা ছিল git add .এবং এটি এখনও কাজ করছে না। দেখা যাচ্ছে আমি কিছু .vimrcকাস্টমাইজেশন করেছি এবং আমার সম্পাদক সঠিকভাবে কাজ করছে না। এই ত্রুটিগুলি ঠিক করা যাতে vimসঠিক কোডটি দেয় সমস্যার সমাধান করে।


0

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

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

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

এই মুহুর্তে আপনি আপনার স্থানীয় কম্পিউটারে একটি টানতে সক্ষম হবেন এবং বিরোধগুলি আর দেখতে পাবে না। এইভাবে আবার প্রতিশ্রুতিবদ্ধ হতে সক্ষম। :)


0

আপনার যদি একটি সাবফোল্ডার থাকে যা অন্যান্য গিট-রেপোজিটরি থেকে ক্লোন করা হয়েছিল, প্রথমে আপনাকে চাইল্ড-রেপোজিটরি থেকে os .git $ ফাইলটি সরিয়ে ফেলতে হবে: এর rm -rf .git পরে আপনি প্যারেন্ট ফোল্ডারে পরিবর্তন করতে পারেন এবং ব্যবহার করতে পারেন git add -A

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