গিট স্ট্যাটাস পরিবর্তনগুলি দেখায়, গিট চেকআউট - <ফাইল> এগুলি সরায় না


222

আমি আমার ওয়ার্কিং কপির সমস্ত পরিবর্তন মুছে ফেলতে চাই।
চলমান git statusফাইলগুলি সংশোধিত দেখায়।
আমি কিছুই করি না বলে মনে হচ্ছে এই পরিবর্তনগুলি সরানো হয়েছে।
উদাহরণ:

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git status
# On branch master
# 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:   Rhino.Etl.Core/Enumerables/CachingEnumerable.cs
#       modified:   Rhino.Etl.Core/Pipelines/SingleThreadedPipelineExecuter.cs
#       modified:   Rhino.Etl.Tests/Rhino.Etl.Tests.csproj
#       modified:   Rhino.Etl.Tests/SingleThreadedPipelineExecuterTest.cs
#
no changes added to commit (use "git add" and/or "git commit -a")

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git checkout -- Rhino.Etl.Core/Enumerables/CachingEnumerable.cs

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git status
# On branch master
# 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:   Rhino.Etl.Core/Enumerables/CachingEnumerable.cs
#       modified:   Rhino.Etl.Core/Pipelines/SingleThreadedPipelineExecuter.cs
#       modified:   Rhino.Etl.Tests/Rhino.Etl.Tests.csproj
#       modified:   Rhino.Etl.Tests/SingleThreadedPipelineExecuterTest.cs
#
no changes added to commit (use "git add" and/or "git commit -a")

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git checkout `git ls-files -m`

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git status
# On branch master
# 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:   Rhino.Etl.Core/Enumerables/CachingEnumerable.cs
#       modified:   Rhino.Etl.Core/Pipelines/SingleThreadedPipelineExecuter.cs
#       modified:   Rhino.Etl.Tests/Rhino.Etl.Tests.csproj
#       modified:   Rhino.Etl.Tests/SingleThreadedPipelineExecuterTest.cs
#
no changes added to commit (use "git add" and/or "git commit -a")

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git reset --hard HEAD
HEAD is now at 6c857e7 boo libraries updated to 2.0.9.2 and rhino.dsl.dll updated.

rbellamy@PROMETHEUS /d/Development/rhino-etl (master)
$ git status
# On branch master
# 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:   Rhino.Etl.Core/Enumerables/CachingEnumerable.cs
#       modified:   Rhino.Etl.Core/Pipelines/SingleThreadedPipelineExecuter.cs
#       modified:   Rhino.Etl.Tests/Rhino.Etl.Tests.csproj
#       modified:   Rhino.Etl.Tests/SingleThreadedPipelineExecuterTest.cs
#
no changes added to commit (use "git add" and/or "git commit -a")

6
কেন git reset --hardএখানে কাজ হয়নি তা নিশ্চিত নয়। দ্রষ্টব্য: git checkout -- `git ls-files -m`ফাইলগুলি ( --)
ভোনসি

2
আপনি যদি ফাইলগুলি মুছতে এবং ব্যবহার করেন তবে checkout -- <file>এটি কাজ করা উচিত। পরিবর্তন সনাক্তকরণ কিছু পরিস্থিতিতে সামান্য
বাছাইযোগ্য

সম্ভাব্য সদৃশ
নকলটি

1
@ বুজজেড-ডিই - এটি একটি সদৃশ এবং পুরানো এবং সেহেতু অগ্রাধিকার গ্রহণ করবে। তবে আপনি যে প্রশ্নটির সাথে লিঙ্ক করেছেন সেটি মূলত একই, আমি নীচে গ্রহণ করা উত্তর সেখানকার উত্তরগুলির চেয়ে অনেক বেশি তথ্যবহুল এবং আমার সমস্যার সমাধান করে my
rbellamy

সমাধান নয়, git update-index --assume-unchagedবোরিংয়ের মামলার জন্য একটি সুইস ছুরি: ফাইলগুলির অপরিবর্তিত অবস্থায় ফেলেছে (এমনকি পরিবর্তিতদের জন্যও!)
পিডিএম

উত্তর:


126

এই আচরণের কারণ হতে পারে এমন একাধিক সমস্যা রয়েছে:

লাইনের সমাপ্তি স্বাভাবিককরণ

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

তবে আপনি যদি এটি ঠিক করতে চান তবে আপনার কোর.আউটোক্রল্ফ অক্ষম করা উচিত , সমস্ত লাইন শেষ এলএফতে পরিবর্তন করা উচিত এবং তারপরে এটি আবার সক্ষম করুন। অথবা আপনি এটি করে এটি পুরোপুরি অক্ষম করতে পারেন:

git config --global core.autocrlf false

কোর.আউটোক্রল্ফের পরিবর্তে , আপনি .gitattributeফাইলগুলি ব্যবহার করে বিবেচনা করতে পারেন । এইভাবে, আপনি নিশ্চিত করতে পারেন যে রেপো ব্যবহারকারী সকলেই একই নরমালাইজেশন বিধিগুলি ব্যবহার করে, মিশ্রিত লাইন শেষগুলি সংগ্রহস্থলটিতে প্রবেশ রোধ করে।

আপনি যদি গিটারটি আপনাকে সতর্ক করতে চান তবে যখন কোনও পুনরায় বিপরীতমুখী নরমালাইজেশন করা হবে তা সতর্ক করতে কোর.স্যাফেক্রল্ফকে সেট করার কথাও বিবেচনা করুন ।

গিট ম্যানাপেজগুলি এটি বলে:

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

কেস-সংবেদনশীল ফাইল সিস্টেম

কেস-সংবেদনশীল ফাইল সিস্টেমগুলিতে, যখন বিভিন্ন কেসিং সহ একই ফাইলের নামটি সংগ্রহস্থলে থাকে, গিট উভয়টি চেকআউট করার চেষ্টা করে, তবে কেবলমাত্র একটি ফাইল ফাইলটিতে শেষ হয়। যখন গিট দ্বিতীয়টির সাথে তুলনা করার চেষ্টা করে, এটি এটি ভুল ফাইলের সাথে তুলনা করবে।

সমাধানটি হয় নন-কেস সংবেদনশীল ফাইল সিস্টেমে স্যুইচ করা হবে, তবে এটি বেশিরভাগ ক্ষেত্রেই সম্ভব হয় না বা অন্য ফাইল সিস্টেমে ফাইলগুলির একটির নাম পরিবর্তন এবং সম্পাদন করে না।


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

1
ভালো বল ধরা! +1 টি। তবুও আমার পক্ষে অন্য একটি যুক্তি সেটাকে মিথ্যাতে সেট করে ( stackoverflow.com/questions/1249932/… )।
ভোনসি

এর অর্থ কী: "কমিটের আগে এলএফ এবং সিআরএলএফ এর মিশ্রণযুক্ত একটি ফাইল গিট দিয়ে পুনরায় তৈরি করা যায় না।" এটি কি কারণ कोरটি.আউটোক্রল্ফ সেটিংয়ের উপর ভিত্তি করে গিট সর্বদা লাইন শেষকে স্বাভাবিক করবে?
rbellamy

1
কেস সংবেদনশীলতা সমস্যার আরও বুদ্ধিমান সমাধান হ'ল আপনার রেপোতে একাধিক ফোল্ডার না থাকা যাদের নাম কেবলমাত্র কেস দ্বারা পৃথক
ওহাদ স্নাইডার

3
কেবলমাত্র লেটার কেসের দ্বারা পৃথক হওয়া ফাইলগুলির নাম অনুসন্ধান করতে আপনি চালাতে পারবেন git ls-tree -r --name-only HEAD | tr A-Z a-z | sort | uniq -d। এই জাতীয় ফাইলগুলির উপরের এবং নিম্নের উভয় নাম চালানোর জন্য তালিকা তৈরি করতেgit ls-tree -r --name-only HEAD | fgrep -i -f <(git ls-tree -r --name-only HEAD | tr A-Z a-z | sort | uniq -d) | sort -i
ডায়োমিডিস স্পিনেলিস

220

উইন্ডোজটিতে আমার এই সমস্যাটি ছিল তবে config --global core.autocrlf falseআমি ব্যবহারের বিষয়টি সম্পর্কে সন্ধান করার জন্য প্রস্তুত ছিলাম না আমি অন্য কোনও বেসরকারী শাখা এবং গুডি আমার স্ট্যাশে রেখে দিয়ে একটি নতুন ক্লোন দিয়ে শুরু করতে প্রস্তুত ছিলাম না। আমার শুধু কিছু করা দরকার এখন।

এটি আপনার পক্ষে কাজ করার ডিরেক্টরিটি সম্পূর্ণরূপে পুনরায় লেখার অনুমতি দেয় এই ধারণাটি নিয়ে আমার পক্ষে কাজ করেছে:

git rm --cached -r .
git reset --hard

(দ্রষ্টব্য যে মূল চালানো git reset --hardযথেষ্ট ভাল ছিল না বা মূল প্রশ্নের মতামত অনুসারে প্রস্তাবিত rmফাইলগুলির আগে কোনও সমতল ছিল না reset)


8
পরিবর্তনের পরে এখানে আর একটি সাফল্যের core.autocrlfকোনও প্রভাব নেই।
ড্যানিয়েল বাকমাস্টার

8
এমনকি উইন্ডোজেও এই সমস্যা ছিল core.autocrlf false। এই উত্তর কাজ করে যখন অন্য কিছুই না।
কেনেচিলদা

9
আমি এটি এবং অন্যান্য প্রশ্ন থেকে একাধিক পরামর্শ চেষ্টা করেছি। এটি আমার পক্ষে কাজ করা একমাত্র ফিক্স। আমার কোনও অ্যাট্রিবিউট ফাইল নেই এবং আমি ইতিমধ্যে কোর.আউটোক্রল্ফটি মিথ্যা দিয়ে শুরু করেছি।
ব্রাদারউইন

4
এটি আমার পক্ষে কার্যকর হয়নি। সুতরাং, আমি এই পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করার জন্য একটি নতুন শাখা তৈরি করে আরও কুশলী ফ্যাশনে করেছি কারণ সে যাইহোক আমার পক্ষে অকেজো। [জাভা] গিট চেকআউট-বি-শাখা-থেকে-কমিট-খারাপ-ক্রল্ফ-ফাইলগুলি [/ জাভা] [জাভা] গিট কমিট-এএম "খারাপ ক্রল্ফ ফাইলগুলি করা" [/ জাভা]
মোহাম্মদ ফরিদ

3
কখনও কখনও এই জাতীয় সমস্যা আমাকে সত্যই এসভিএন মিস করে।
মাইক গডিন

104

অন্য সমাধান যা লোকদের জন্য কাজ করতে পারে, যেহেতু কোনও পাঠ্য বিকল্প আমার পক্ষে কাজ করে নি:

  1. বিষয়বস্তুর প্রতিস্থাপন করুন .gitattributesএকটি একক লাইন সঙ্গে * binary। এটি গিটকে প্রতিটি ফাইলকে বাইনারি ফাইল হিসাবে বিবেচনা করতে বলে যে এটি কিছু করতে পারে না।
  2. আপত্তিজনক ফাইলগুলির জন্য বার্তাটি পরীক্ষা করে দেখুন; যদি তা না git checkout -- <files>হয় তবে এগুলি সংগ্রহস্থল সংস্করণে পুনরুদ্ধার করতে পারেন
  3. git checkout -- .gitattributes.gitattributesফাইলটিকে তার প্রাথমিক অবস্থায় পুনরুদ্ধার করতে
  4. ফাইলগুলি এখনও পরিবর্তিত হিসাবে চিহ্নিত করা হয়নি তা পরীক্ষা করে দেখুন।

1
আমি গত কয়েক ঘন্টা ধরে ফাইলগুলি ফেরাতে, টানতে বা স্ট্যাশ করতে না পেরে আটকে আছি। এই আমার জন্য স্থির ছিল! ধন্যবাদ! (গিট 1.8.3.1)
নিউস্কুলার

3
শেষ পর্যন্ত এটির সাথে সাফল্য পাওয়ার আগে আমি অনেক কিছুই চেষ্টা করেছিলাম। ধন্যবাদ!
গেঙ্গি

1
কিভাবে কাজ করে? আমি ভাবব .gitattributesমূল দিকে ফিরে যাওয়া একই সমস্যাটির পুনঃপ্রবর্তন করবে, তবে হায় হায় আমার সমস্যা এখন সমাধান হয়ে গেছে। অন্য কোনও পরামর্শই আমার ক্ষেত্রে কার্যকর হয়নি।
jdk1.0

1
@ jdk1.0 আমার বুঝতে / অনুমান করা যায় যে দুটি ভিন্ন তুলনা পদ্ধতি জড়িত। আপনার কোনও পৃথক পৃথক রেখাটি কোথাও শেষ হওয়ার পরে ত্রুটি ঘটে এবং গিট কখনও কখনও এটিকে উপেক্ষা করে। আপনি যখন জিজ্ঞাসা করেন git status, তখন এটি সন্ধান করে যে তারা পৃথক ফাইল। আপনি জিজ্ঞাসা করলে git checkout, এটি দেখতে পায় যে তাদের একই বিষয়বস্তু রয়েছে। এই সমাধানটি সাময়িকভাবে যেকোন সম্ভাব্য লাইন-এন্ডিং চতুরতা উপেক্ষা করার জন্য গিটকে নির্দেশ দিচ্ছে এবং আপনার স্থানীয় অনুলিপিটি বাইট-বাই-বাইতে এর অনুরূপ কিনা তা নিশ্চিত করুন HEAD। একবার এটি সমাধান হয়ে গেলে, চতুরতা আবার শুরু করার অনুমতি দেওয়া ঠিক হয়, কারণ এটি নতুন ত্রুটি যুক্ত করবে না।
জাবেদিয়া 49

3
এটি মোকাবেলায় কয়েক ঘন্টা ব্যয় করেছেন এবং এই সমাধানটি শেষ পর্যন্ত আমার পক্ষে কাজ করেছে!
মেরিয়াম

71

ভবিষ্যতের লোকদের এই সমস্যাটি রয়েছে: ফাইলমোড পরিবর্তনগুলিও একই লক্ষণগুলি থাকতে পারে। git config core.filemode falseএটি ঠিক করবে।


3
এটি করার পরে, আপনার একটি করার দরকার হতে পারেgit checkout .
মারটি নিল

2
আবার চেকআউট না করে আমার জন্য কাজ করেছেন
ফিলি

3
ভবিষ্যতের রেফারেন্সের জন্য: এটি আপনার প্রয়োজন ঠিক (এবং অন্যান্য উত্তরের অন্যান্য স্থির সমাধান নয়) তা জানতে, git diffএটি ব্যবহার করুন এবং এটি মোডের পরিবর্তনের মতো ফাইলগুলি প্রদর্শন করবে old mode 100755 / new mode 100644
pgr

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

ধন্যবাদ, আপনি আমাকে অনেক অশ্রু বাঁচিয়েছেন!
লুকাশজ

33

এটি আমাকে পাগল করে চলেছে, বিশেষত যে অনলাইনে পাওয়া কোনও সমাধান ছাড়াই আমি এটি ঠিক করতে পারি না। এখানে আমি এটি সমাধান করেছি। এটি কোনও সহকর্মীর কাজ হওয়ায় এখানে ক্রেডিট নিতে পারবেন না :)

সমস্যার উত্স: আমার গিটের প্রাথমিক ইনস্টলেশনটি উইন্ডোতে অটো লাইন রূপান্তর ছাড়াই ছিল। এর ফলে জিএলএফডাব্লুতে আমার প্রাথমিক প্রতিশ্রুতি যথাযথ লাইন শেষ না হয়েই হয়েছিল।

দ্রষ্টব্য: এটি কেবল একটি স্থানীয় সমাধান। পরবর্তী লোকটি রেপো ক্লোনিং করে এখনও এই সমস্যার সাথে আটকে থাকবে। একটি স্থায়ী সমাধান এখানে পাওয়া যাবে: https://help.github.com/articles/dealing-with-line-endings/#re-normalizing-a-repository

সেটআপ: জিবিএফডু প্রকল্পের সাথে জুবুন্টু 12.04 গিট রেপো

সমস্যা: glfw ফাইলগুলি পুনরায় সেট করতে অক্ষম। তারা যা চেষ্টা করেই হোক না কেন তারা সর্বদা পরিবর্তিত হিসাবে দেখায়।

মীমাংসিত:

edit .gitattributes

Comment out the line:    # text=auto

Save the file

restore .gitattributes:   git checkout .gitattributes

মন্তব্য করা লাইনের বিষয়বস্তু উল্লেখ করা সহায়ক হতে পারে।
rbellamy

দুর্ভাগ্যক্রমে, বেশিরভাগ প্রকল্পের এই optionচ্ছিক .gitattribute ফাইলটি নেই
mchiasson

ধন্যবাদ. কেন এটি প্রয়োজনীয় তা আমি কেবল বুঝতে পারি না
diogovk

কেন? মূলত, এটি লাইনের সমাপ্তির জন্য একটি অস্থায়ী স্থির। নোটের লিঙ্কটি অনুসরণ করে স্থায়ী সমাধানটি ব্যবহার করুন।
রিচার্ড লালেন্সেট

11

আমার একই সমস্যা সহ একটি .bat ফাইল ছিল (এটির চিহ্নবিহীন ফাইলগুলিতে এটিকে মুক্তি দিতে পারে না)। গিট চেকআউট - কাজ করে না, এই পৃষ্ঠায় কোনও পরামর্শও দেয় নি। আমার পক্ষে কাজ করাটাই ছিল:

git stash save --keep-index

এবং তারপরে স্ট্যাশ মুছতে:

git stash drop

এটি আমার পক্ষে কাজ করেছে। নোট করুন যে --keep-indexগুরুত্বপূর্ণ।
ব্যবহারকারী 991710

কেন - কিপ-সূচকটি গুরুত্বপূর্ণ?
চাইল্টন বি। হিগিনবটম

8

দু'বার একই সমস্যা পেয়েছেন! উভয় সময় যখন আমি কিছু পরিবর্তন করে তখন স্ট্যাশ করে সেগুলি আবার পপ করার চেষ্টা করি। পরিবর্তনগুলি পপ করা যায়নি যেহেতু আমার প্রচুর ফাইল পরিবর্তিত হয়েছে - তবে সেগুলি তা নয়! তারা ঠিক একই আছে.

আমি এখন মনে করি আমি উপরোক্ত সমস্ত সমাধান সফলতা ছাড়াই চেষ্টা করেছি। চেষ্টা করার পরে

git rm --cached -r .
git reset --hard

আমি এখন আমার সংগ্রহস্থলের প্রায় সব ফাইলই সংশোধিত করেছি।

ফাইলটি পৃথক করার সময় এটি বলে যে আমি সমস্ত লাইন মুছে ফেলেছি এবং তারপরে আবার যুক্ত করব।

ধকল ঝামেলা। আমি এখন ভবিষ্যতে স্ট্যাশিং এড়াতে চাই ..

একমাত্র সমাধান হ'ল নতুন সংগ্রহস্থলটিকে ক্লোন করা এবং আবার শুরু করা। (এটি সর্বশেষে তৈরি)


6

করার চেষ্টা করুন

গিট চেকআউট -ফ

এটি বর্তমান কর্মরত স্থানীয় রেপোর সমস্ত পরিবর্তন মুছে ফেলা উচিত


নিস! এটি আমার পক্ষে কাজ করেছে। যদিও একটি অনড় মামলার জন্য আমাকে প্রথমে তার git checkout -f <another recent branch>পরে আমার শাখায় ফিরে যেতে হয়েছিলgit checkout -f <branch I'm working on>
বিপরীত প্রকৌশলী

4

আমি কেবলমাত্র আমার রেপো .gitattributes ফাইল (যা সংজ্ঞায়িত * text=autoএবং *.c text) অস্থায়ীভাবে মুছে ফেলে এটি ঠিক করতে সক্ষম হয়েছি ।

আমি git statusমুছে ফেলার পরে দৌড়েছি এবং পরিবর্তনগুলি চলে গেছে। তারা .Gitattributes আবার জায়গায় রাখার পরেও ফিরে আসেনি।


এটি আরও জটিল গিটাট্রিবিউটগুলি যেমন ফিল্টারগুলির সাথে কাজ করে
সামিজডিস

2

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

এছাড়াও কিছু প্রোগ্রাম যেমন বাশ (লিনাক্সে) এর প্রয়োজন হয় যে .sh ফাইলগুলি এলএফ বন্ধ করা উচিত।

এটি ঘটেছিল তা নিশ্চিত করার জন্য আপনি গিটাট্রিবিউটস ব্যবহার করতে পারেন। এটি অটক্রিফের মান কী তা বিবেচনা করেই সংগ্রহস্থল স্তরে কাজ করে।

উদাহরণস্বরূপ আপনার এই .gitattributes থাকতে পারে: * পাঠ্য = অটো

আপনি যদি ফাইল ক্ষেত্রে / এক্সটেনশনের ক্ষেত্রে আরও নির্দিষ্ট করে থাকেন তবে তা যদি আপনার ক্ষেত্রে বিবেচিত হয়।

তারপরে অটোক্রল্ফ স্থানীয়ভাবে উইন্ডোজ প্রোগ্রামগুলির জন্য লাইন এন্ডিংগুলিকে রূপান্তর করতে পারে।

একটি মিশ্র সি # / সি ++ / জাভা / রুবি / আর-তে, উইন্ডোজ / লিনাক্স প্রকল্পটি ভালভাবে কাজ করছে। এখন পর্যন্ত কোনও সমস্যা নেই।


2

আমারও একই লক্ষণ ছিল তবে ভিন্ন জিনিস দ্বারা সৃষ্ট।

আমি সক্ষম ছিল না:

git checkout app.js //did nothing
git rm app.js //did nothing
rm -rf app.js //did nothing

এমনকি git rm --cached app.jsএটিতে মুছে ফেলা হিসাবে চিহ্ন রয়েছে এবং চিহ্নবিহীন ফাইলগুলিতে আমি অ্যাপ.জেএস দেখতে পেয়েছি signs তবে যখন আমি চেষ্টা করেছি rm -rf app.jsএবং git statusআবার পেফর্ম করেছি তখনও এটি আমাকে ফাইলটি 'চিহ্নবিহীন' অবস্থায় দেখায়।

সহকর্মীর সাথে দু'বার চেষ্টা করার পরে আমরা জানতে পারলাম যে এটি গ্রান্টের কারণে হয়েছে!

যেমনটি Gruntচালু করা হয়েছে, এবং অ্যাপ্লিকেশনগুলি js ফাইলগুলি অন্য জেএস ফাইল থেকে উত্পন্ন হয়েছে তা আমরা জানতে পেরেছিলাম যে প্রতিটি অপারেশনের পরে জেএস ফাইলগুলি (এছাড়াও এই অ্যাপ্লিকেশন। জেএস) গ্রান্ট অ্যাপ্লিকেশন পুনরায় তৈরি করুন।


2

রেপোতে কোনও অবদানকারী কোনও লিনাক্স মেশিনে কাজ করার সময় বা সাইগউইনের উইন্ডো এবং ফাইল অনুমতি পরিবর্তিত হলে এই সমস্যাটিও দেখা দিতে পারে। গিট কেবল 755 এবং 644 জানে।

এই সমস্যার উদাহরণ এবং এটি কীভাবে পরীক্ষা করবেন:

git diff styleguide/filename

diff --git a/filename b/filename
old mode 100644
new mode 100755

এড়াতে, আপনার গিটটি সঠিকভাবে ব্যবহারের বিষয়টি নিশ্চিত করা উচিত

git config --global core.filemode false

2

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

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

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

এর জন্য আমার গবেষণার সময় আমি জুড়ে এসেছি - https://help.github.com/articles/dealing-with-line-endings/ - যদি আমি আবারও এই সমস্যার মুখোমুখি হই তবে আমি প্রথমে চেষ্টা করে এটি শুরু করব would


আমি যা করেছি তা এখানে:

  1. আমার এই সমস্যাটি অনুধাবন করার আগে আমি প্রাথমিকভাবে একত্রিত হয়েছি এবং এটি বাতিল করতে হয়েছিল - git reset --hard HEAD( আমি একীভূত সংঘর্ষে জড়িয়ে পড়েছি the আমি কীভাবে মার্জটিকে বাতিল করতে পারি? )

  2. আমি ভিআইএম-তে প্রশ্নযুক্ত ফাইলগুলি খুললাম এবং ইউনিক্সে পরিবর্তিত হয়েছি ( :set ff=unix)। dos2unixকোর্সের পরিবর্তে এর মতো একটি সরঞ্জাম ব্যবহার করা যেতে পারে

  3. প্রতিজ্ঞাবদ্ধ

  4. এতে একীভূত masterহয়েছে (মাস্টারের ডস -২-ইউনিক্স পরিবর্তন রয়েছে)

    git checkout old-code-branch; git merge master

  5. সংঘাতের সমাধান হয়েছে এবং ফাইলগুলি আবার ডস ছিল তাই :set ff=unixভিআইএম- এ থাকা উচিত ছিল । (দ্রষ্টব্য, আমি https://github.com/itchyny/lightline.vim ইনস্টল করেছি যা ভিআইএম স্থিতির লাইনে ফাইল ফর্ম্যাটটি কী তা আমাকে দেখতে দেয়)

  6. প্রতিশ্রুতিবদ্ধ। সব বিন্যস্ত!

2

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


2

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

গিট অ্যাড

গিট কমিট - এম "র্যান্ডম কমিট"

গিট রিসেট - হেড হেড ~ 1


2

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

$ git clean --force -d
$ git checkout -- .

হতে পারে একটি ভাল বিকল্প কখনও কখনও কেবল gচ্ছিক বার্তা সহ "গিট স্ট্যাশ পুশ" করে, যেমন:

$ git stash push -m "not sure if i will need this later"

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

পার্শ্ব নোট হিসাবে, আপনি ইতিমধ্যে কিছু নতুন যুক্ত হওয়া ফাইল মঞ্চস্থ করে রেখেছেন এবং সেগুলি থেকে মুক্তি পেতে চান, এই কৌশলটি করা উচিত:

$ git reset --hard

উপরের সমস্তগুলি যদি আপনার পক্ষে কাজ করে না , তবে কিছুক্ষণ আগে আমার জন্য কী কাজ করেছে নীচে পড়ুন:

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

এছাড়াও, সেই সময়ে আমি অন্য একটি শাখা চেকআউট করতে পারি না, তাই আমি আমার "বিকাশ" শাখায় আটকে ছিলাম।

এটি আমিই করেছি:

$ git log

আমি লক্ষ্য করেছি যে আমি আজ "বিকাশ" থেকে তৈরি করা নতুন শাখাটি প্রথম "প্রতিশ্রুতিবদ্ধ" বার্তায় প্রদর্শিত হচ্ছে, শেষে উল্লেখ করা হচ্ছে "শিরোনাম -> বিকাশ, উত্স / বিকাশ, উত্স / হেড, দ্য শাখা-আই-তৈরি -প্রিয়-আজ "।

যেহেতু আমার আসলে এটির প্রয়োজন ছিল না, তাই আমি এটি মুছে ফেলেছি:

$ git branch -d The-branch-i-created-earlier-today

পরিবর্তিত ফাইলগুলি এখনও প্রদর্শিত হচ্ছে, তাই আমি করেছি:

$ git stash

এটি আমার সমস্যার সমাধান করেছে:

$ git status
On branch develop
Your branch is up to date with 'origin/develop'.

nothing to commit, working tree clean

অবশ্যই $ git stash listস্ট্যাশড পরিবর্তনগুলি প্রদর্শন করবে এবং যেহেতু আমার কয়েকটি ছিল এবং আমার কোনও $ git stash clearস্ট্যাশের প্রয়োজন নেই, তাই আমি সমস্ত স্ট্যাশগুলি মুছে ফেলতে পেরেছি।

দ্রষ্টব্য : আমার আগে কেউ এখানে পরামর্শ দিয়েছিল আমি তা করার চেষ্টা করি নি:

$ git rm --cached -r .
$ git reset --hard

এটি পাশাপাশি কাজ করতে পারে, আমি এই সমস্যাটি পরের বার চেষ্টা করার চেষ্টা করব।


1

যদি আপনি কোনও সংগ্রহস্থল ক্লোন করেন এবং তাত্ক্ষণিকভাবে মুলতুবি পরিবর্তনগুলি দেখতে পান তবে সংগ্রহস্থলটি বেমানান অবস্থায় রয়েছে। দয়া * text=autoকরে .gitattributesফাইলটি থেকে মন্তব্য করবেন না । এটি সেখানে বিশেষভাবে রাখা হয়েছিল কারণ সংগ্রহস্থলের মালিক এলএফ লাইন সমাপ্তির সাথে সমস্ত ফাইল ধারাবাহিকভাবে সঞ্চিত রাখতে চান।

হ্যাঙ্ককা বলেছেন, https://help.github.com/articles/dealing-with-line-endings/ এ দেওয়া নির্দেশাবলী অনুসরণ করা সমস্যার সমাধানের উপায়। সহজ বোতাম:

git clone git@host:repo-name
git checkout -b normalize-line-endings
git add .
git commit -m "Normalize line endings"
git push
git push -u origin normalize-line-endings

তারপরে শাখাকে একীভূত করুন (বা টানুন অনুরোধ) রেপোর মালিকের সাথে।


1

এই পৃষ্ঠায় আর কিছুই কাজ করে নি। এই অবশেষে আমার জন্য কাজ করে। কোনও চিহ্নবিহীন, বা চালিত ফাইল দেখানো হচ্ছে না।

git add -A
git reset --hard

1

আমার জন্য সমস্যাটি হ'ল কমান্ডটি সম্পাদন করার সময় ভিজ্যুয়াল স্টুডিও খোলা হয়েছিল

git checkout <file>

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


0

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

git reset --hard
git pull origin
git merge

0

আমি এটি .git / কনফিগার করে সম্পাদনা করে সমাধান করেছি:

[branch "name_branch"]
    remote = origin
    merge = refs/heads/name_branch

তারপরে আমি .git / রেফার্স / হেডস / নেম_ ব্রাঞ্চে গিয়ে সর্বশেষ কমিটের আইডি রাখিenter code here


0

আমি এটি এইভাবে সমাধান করেছি:

  1. আপনি চান সঠিক কোডের বিষয়বস্তু অনুলিপি করুন
  2. আপনার ডিস্কটি থেকে সমস্যাটি সৃষ্টি করা ফাইল (যেটি আপনি ফিরিয়ে দিতে পারবেন না) মুছুন। এখন আপনার একই ফাইলের উভয় সংস্করণ মুছে ফেলা হিসাবে চিহ্নিত করা উচিত।
  3. ফাইলগুলি মুছে ফেলার প্রতিশ্রুতিবদ্ধ।
  4. একই নামটি দিয়ে আবার ফাইলটি তৈরি করুন এবং পদক্ষেপ 1 এ আপনি অনুলিপি করেছেন এমন সঠিক কোডে পেস্ট করুন
  5. নতুন ফাইল তৈরি করার প্রতিশ্রুতিবদ্ধ।

এটাই আমার পক্ষে কাজ করেছে।


0

এখানে একটি প্রস্তাবিত সমাধান কাজ করে নি, আমি খুঁজে পেলাম ফাইলটি আসলে কিছু বিশেষ অক্ষরের লিঙ্ক ছিল:

% ls -l StoreLogo.png
lrwxrwxrwx 1 janus janus 8 Feb 21 10:37 StoreLogo.png -> ''$'\211''PNG'$'\r\n\032\n'

% git status    
Changes not staged for commit:
    modified:   StoreLogo.png

% git rm --cached -r StoreLogo.png
rm 'src/GWallet.Frontend.XF.UWP/Assets/StoreLogo.png'

% git reset StoreLogo.png         
Unstaged changes after reset:
M   src/GWallet.Frontend.XF.UWP/Assets/StoreLogo.png

% git status                      
Changes not staged for commit:
    modified:   StoreLogo.png
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.