গিটের পরিবর্তনগুলি বাতিল করার মতো বলে মনে হচ্ছে না


124

কমান্ড লাইন থেকে নিম্নলিখিতগুলি দেখার পরে:

# On branch RB_3.0.10
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   index.htm

আমি কমান্ডটি টাইপ করে আমার পরিবর্তনগুলি বাতিল করার চেষ্টা করছি:

git checkout -- index.htm

তবে আমি যখন গিট স্ট্যাটাসটি পুনরায় চালিত করি তখন এটি দেখতে একই রকম হয়। চেকআউটটি কাজ করছে বলে মনে হচ্ছে না। আমি কি ভুল কিছু করছি? আমি উইন্ডোজ / সাইগউইনে জিআইটি 1.6.1.2 ব্যবহার করছি।

# On branch RB_3.0.10
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   index.htm

4
নেই git checkout HEAD -- index.htmকাজ (পরিবর্তে সূচি থেকে চেক আউট শেষ অঙ্গীকারবদ্ধ রাষ্ট্র থেকে চেক আউট,)?
জাকুব নরবস্কি

3
git checkout HEAD -- index.htmআমার জন্য কাজ!
বেন টিডসওয়েল

উত্তর:


52

এটি আমাকে কিছুক্ষণ বিরক্ত করছে, প্রায় প্রতিটি রেপো আমি যাচাই করেছিলাম এমন পরিবর্তনগুলি ছিল যা আমি বাতিল করতে পারি না। দীর্ঘ গল্প সংক্ষিপ্ত, আমি উপরের সমস্ত চেষ্টা করেছিলাম, কিছুই কাজ করেনি। জিনিসগুলি স্বাভাবিক অবস্থায় ফিরে পেতে (ম্যাকের ক্ষেত্রে) আমি এটি করেছি:

Completely remove the autocrlf & safecrlf settings from ~/.gitconfig
Completely remove the autocrlf & safecrlf settings from your repo's local config ./.git/config
git rm --cached -r .
git reset --hard

7
উপরের সমস্ত কিছু চেষ্টা করার পরে, এটিই আমার জন্য কাজ করেছিল (উইন্ডোজে)
অ্যান্ডার্স

ধন্যবাদ! অ্যান্ডারস যেমন বলেছেন, এই সমাধানটি আমার পক্ষেও কাজ করছে। আমি অটোক্রোল্টকে # অটোক্রোল্ফ দিয়ে প্রতিস্থাপন করেছি
ডেভিড

37

এখানে আমার অভিজ্ঞতাটি এখানে নিম্নলিখিত ভেরিয়েবলগুলি সেট করুন .git/config:

[core]
    autocrlf = false
    safecrlf = false
    eol = crlf

তারপরে দৌড়াও $ git checkout HEAD ., এবং এটি কাজ করে। কিন্তু $ git checkout -- .না, আজব!

* গিট সংস্করণ 1.9.3


35

git diffফাইলের মধ্যে কী পরিবর্তনগুলি দেখাতে পারে ? উইন্ডোজগুলিতে, আমি লাইন-এন্ডিংয়ের সাথে এই জাতীয় সমস্যা সৃষ্টি করার সমস্যাগুলি দেখেছি। যে ক্ষেত্রে, তুমি কিসের জন্য আছে সেটিংস এ বর্ণন git config core.autocrlfএবং git config core.safecrlf। এখানে এই সেটিংসের জন্য কিছু ডকুমেন্টেশন রয়েছে

আমি বলব, আপনি যদি git svnসাবভার্সনের সাথে সংহতকরণের জন্য ব্যবহার করছেন তবে নিশ্চিত autocrlfহয়ে যান যে এটি বন্ধ আছে। আমি যা বলতে পারি তা থেকে এই কনফিগারেশনে কেবলমাত্র ভাঙা হয়েছে এবং এটি বেশিরভাগ সরঞ্জামগুলিকে মনে করে যে ফাইলগুলি পরিবর্তন করা হয়েছে, যখন আপনি checkoutকোনও পরিবর্তন ফিরিয়ে আনতে চান।

আপনি যেখানে করছেন এমন কোনও সমস্যা যদি যদি দেখছেন git checkoutএবং তারপরেও git statusফাইলটি এখনও সংশোধিত রয়েছে এবং git diffফাইলের প্রতিটি লাইনে ফাইলটি সংশোধিত রয়েছে তা দেখায়, তবে আপনি যা সমস্যা দেখছেন এটি এটি।

core.autocrlf

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

core.safecrlf

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


core.autocrlf = true core.safecrlf সেট করা হয়নি। উইন্ডোগুলির জন্য এটি কি সত্য হিসাবে সেট করা উচিত? দুজনের মধ্যে পার্থক্য কী?

আমি বলব, যদি আপনি গিট এসএনএন ব্যবহার করছেন তবে তাদের উভয়কেই ছেড়ে দিন। আমি আরও কিছু বিশদ যুক্ত করেছি।
1800 তথ্য

4
আমি ধরে নিচ্ছি তার অর্থ এটি কমপক্ষে 90 ডিগ্রি ঘোরানো হচ্ছে
ভাইজরক্স

2
আমি যখন কোর.আউটোক্রল্ফ এবং কোর.স্যাফেক্রল্ফ উভয়কে সত্যে সেট করেছি, তখন আমি 'গিট রিসেট --হার্ড হেড' চালিয়ে আপত্তিকর ফাইলগুলিতে সনাক্ত হওয়া পরিবর্তনগুলি বাতিল করতে সক্ষম হয়েছি।
আলেক্সি

19

আমার মনে হয় আপনার পাস হতে হবে -f

ম্যান পৃষ্ঠা থেকে ( man git-checkout, গিট-চেকআউট (1)):

-ফ, - ফোর্স
সূচী বা কার্যনির্বাহী গাছের শিরোনাম থেকে পৃথক হয়ে গেলেও এগিয়ে যান।
এটি স্থানীয় পরিবর্তনগুলি ছুঁড়ে ফেলার জন্য ব্যবহৃত হয়

উদাহরণস্বরূপ, বর্তমান শাখায় পরিবর্তনগুলি বাতিল করুন এবং একটি ভিন্ন শাখায় স্যুইচ করুন:

git checkout -f master

7
পাস -ফফ কী? উত্তরটি সম্পূর্ণ করতে ভাল
লাগবে

@ ম্যাট আমার উদ্দেশ্য একটি ভিন্ন শাখা চেক আউট না ছিল। উত্তরটি ২০০৯ সাল থেকে তাই আমি সত্যিই মনে করতে পারি না তবে প্রশ্নটি বিচার করে আমার মনে হয় যে আমি -fচেকআউট করতে পেরেছি - <ফাইল ফাইল> যেমন ছিলgit checkout -f -- filename
হেসেন

@ হাসেন আপনি যে তিনটি মন্তব্য সম্পর্কে স্পষ্টতা চেয়েছিলেন, সে কারণেই আমি "উদাহরণস্বরূপ" যুক্ত করেছি। উদাহরণটি অন্য ব্যবহারগুলি বন্ধ করে দেয় না-f
ম্যাট এইচ

আমার জন্য কাজ করেছেন। git checkout -f master"ইতিমধ্যে 'মাস্টার' এ ছুঁড়েছেন তবে পরিবর্তনগুলি গেছে।
খ্রিস্টান

11

এটি 1800-তথ্য অনুসারে লাইন এন্ডিংস হতে পারে, তবে আরেকটি সম্ভাবনা হ'ল পার্থক্য (যা আপনার এই ফাইলগুলিকে একটি চেকআউট কমান্ড দিয়ে ফেরাতে বাধা দিচ্ছে) ফাইল মোডের একটি is এই আমার ঘটেছে কি। গিটের আমার সংস্করণে আপনি এটি ব্যবহার করে এটি আবিষ্কার করতে পারেন

গিট ডিফ সূচক। htm

এবং এটি আপনাকে ফাইলের মোড পরিবর্তনগুলি প্রদর্শন করবে। এটি চেকআউট ব্যবহার করে এমনকি -f বিকল্পের সাহায্যে আপনাকে সেগুলি ফিরিয়ে দিতে দেয় না। যে ব্যবহারের জন্য

গিট কনফিগারেশন কোর.ফিলমোড মিথ্যা

বা যোগ করে আপনার পাঠ্য সম্পাদকটিতে আপনার গিট .config পরিবর্তন করুন

[মূল]

filemode = false

আপনি এটি করার পরে, আপনি ব্যবহার করতে পারেন

গিট রিসেট হেড ইন্ডেক্স। htm

এবং ফাইলটি অদৃশ্য হয়ে যাবে।

(আমি কীভাবে গিট উপেক্ষা মোড পরিবর্তন (chmod) করতে পারি? এবং কেবলমাত্র-গিট-এ-ফাইল-অনুমতিগুলি আপডেট করছি ) এর উত্তর থেকে আমি এগুলি পেয়েছি )


6

আপনি কি ওএসএক্স বা উইন্ডোজে আছেন? যদি তা হয় তবে সমস্যাটি সম্ভবত একই নামে দুটি ফাইল রয়েছে, ভিন্ন ভিন্ন ক্ষেত্রে। যেমন। index.htm এবং সূচক htm

উইন্ডোজ এবং ডিফল্ট ওএসএক্স, একটি সংবেদনশীল ফাইল সিস্টেম ব্যবহার করে যা সংবেদনশীল গিটের সাথে বিরোধ করে।


2

আমার এই সমস্যাটি ছিল এবং উপরোক্ত সমস্ত চেষ্টা করার পরেও কিছুই কার্যকর হয়নি।

আমার পক্ষে কাজটি হ'ল ফাইলটি যে ডিরেক্টরিটি ছিল সেটিকে মুছে ফেলা, তারপরে git statusএবং তা নিশ্চিত করেছিলাম যে ir দির সমস্ত ফাইলই এখন মুছে ফেলা হিসাবে চিহ্নিত হয়েছে। এর পরে আমি সহজভাবেই করেছি git checkout -fএবং সবকিছু স্বাভাবিক অবস্থায় ফিরে এসেছিল।


1

আমি একটি libGDXপ্রকল্পে কাজ Android Studioকরছিলাম এবং আমি যে সমস্ত পরিবর্তন করেছি তা বাতিল করতে চাই এবং আমার পক্ষে কিছুই কাজ করছে না, আমি যে সমাধানটি নিয়ে এসেছি তা হ'ল সমস্ত পরিবর্তনকে নতুন শাখায় পরিণত করা to

git checkout -b TRASH
git add .
git commit -m "discarded changes"
git checkout master

এবং তারপরে আপনি চাইলে TRASHশাখাটি মুছতে পারেন।


1

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

  • আমাকে অন্য কম্পিউটার থেকে ফাইলগুলির একটি মুছে ফেলতে হয়েছিল এবং এটিকে রেপোতে ঠেলাতে হয়েছিল

  • সম্পূর্ণ স্থানীয় সংস্করণ সম্পূর্ণ মুছুন

  • স্ক্র্যাচ থেকে গিট ক্লোন করুন


0

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

git checkoutএবং ফেলে দেওয়ার চেষ্টা করেও কোনও লাভ হয়নি। এটি কাজ করবে না বা এটি কেবল আমাকে বলবে যে আমার অনুমতি নেই।

সমাধান যে কাজ করেছে:

  1. নিরাপদ মোডে যান
  2. ফাইলগুলি বাতিল করুন

পুনরায় চালু করা একটি ব্যথা তবে এটি 100 টি জিনিস চেষ্টা করার চেয়ে দ্রুত কাজ করে।


0

একটি সহজ সমাধান আছে। যদি এটি ঘটে (সাধারণত অপ্রত্যাশিত উইন্ডোজ শাটডাউন বা মেমরি ডাম্প থেকে) এবং আপনি আপনার পরিবর্তনগুলি বাতিল করতে পারেন এবং শাখাগুলির মধ্যে স্যুইচও করতে পারবেন না (গিট বলেছে আপনার পর্যাপ্ত অনুমতি নেই); মধ্যে Windowsপরিবেশ show all hidden files and foldersফোল্ডার অপশন থেকে। আপনার জিআইটি ডিরেক্টরিতে যান (এটি দিয়ে শুরু করা উচিত .git) এবং "index.lock"ফাইলটি মুছুন । তারপরে গিটকে আপনি যা করতে চান তা করতে দেওয়া উচিত।


0

আমি কিছুটা পরিত্রাণ পেতে একটি git stashঅনুসরণ করে শেষ করেছি git stash clean। .Git / বা ~ / .git স্টাফগুলিতে কোনও অটো cr / lf কনফিগারেশন দেখেনি।


0

আমার ক্ষেত্রে আমি কোনও ডিরেক্টরি সম্পর্কিত পরিবর্তনগুলি বাতিল করতে পারি না। উদাহরণস্বরূপ, যখন আমি গিট ডিফ চালাতাম আমি এটি দেখতে পাই: -Subproject commit fdcccccccccccccccccccccccccccccccccccccc +Subproject commit f1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

তাই আমি সেই ডিরেক্টরিটিকে কল করেছি এবং সেখানে গিট স্ট্যাটাস চালিয়েছি। এটি একটি প্রধান বিচ্ছিন্ন অবস্থায় ছিল। এবং তারপরে আমি git checkout masterসেখানে একটি দৌড়ে এসেছি। এটা আমার জন্য জিনিস ঠিক করে দিয়েছে। তবে এখানে জিজ্ঞাসা করা সঠিক দৃশ্যের জন্য এটি সহায়ক নয়।


0

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

git status update

এটি জিনিসগুলিকে ঠিক করতে সহায়তা করবে (এই বিশেষ ক্ষেত্রে)


0

আমার উইন্ডোজে অনুমতিগুলির সমস্যা ছিল icacls containingFolder /reset /t /l /cএবং আমার অনুমতিগুলি ফিরে পেতে ফোল্ডারে ডাবল ক্লিক করুন।


0

নিম্নলিখিত লিখিত সামগ্রীর সাথে আমার .gitattributes ছিল:

* text=auto eol=lf

সমস্যাটি কাটিয়ে উঠতে, .gitattributesএই লাইনটি সরাতে সম্পাদনা করুন যা লাইনের শেষটি শিথিল করে। তারপরে git reset --hard HEADফাইলগুলি এবং .gitattributesফাইলটি উল্টিয়ে দিল ।


0

আমার জন্য এই সমস্যাটি একটি গিট-এলএফএস চিত্র ডাউনলোড করার সংমিশ্রণ নিয়ে আসে যা নেটলিফ সিএমএসের মাধ্যমে আপলোড করা হয়েছিল এবং তাদের নেটলিফ লার্জ মিডিয়া হ্যান্ডলার দ্বারা আলাদাভাবে পরিবেশন করা হয়েছিল।

আমার সমাধানটি ছিল আমার থেকে এই সারিগুলি মন্তব্য করা / অপসারণ করা ~/.gitconfigযাতে তারা নীচের মত দেখতে লাগে এবং তারপরে git statusআবারও পরীক্ষা করে।

# [filter "lfs"]
#   clean = git-lfs clean %f
#   smudge = git-lfs smudge %f
#   required = true

অথবা আপনি সম্ভবত .gitconfigরেপো মূলের মধ্যে আরও স্থানীয় ফিল্টার যুক্ত করতে পারেন এবং কোনওভাবে lfs এর জন্য ফিল্টার নিয়মগুলি ওভাররাইট করতে পারেন।

আশা করি এটি কোনও সহযোগীকে সাহায্য করবে।


-1

আমিও কিছুটা অনুরূপ সমস্যার মুখোমুখি হয়েছি এবং নিম্নলিখিত পদক্ষেপগুলি আমাকে সহায়তা করেছে:

git commit -am 'temp commit'
git pull origin master
git reset head~1
git reset head --hard

আশা করি এটি অন্যান্য লোকদেরও সহায়তা করবে।

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