github




স্থানীয় গিট পরিবর্তন মুছে ফেলার বিভিন্ন উপায় (6)

1. আপনি যখন আপনার স্থানীয় পরিবর্তন সব রাখতে চান না।

git reset --hard

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

2. আপনি আপনার স্থানীয় পরিবর্তন রাখতে চান

আপনি যদি রিমোট থেকে নতুন পরিবর্তনগুলি টেনে আনতে চান এবং এই পুলের সময় স্থানীয় পরিবর্তনগুলি উপেক্ষা করতে চান তবে,

git stash

এটি সমস্ত স্থানীয় পরিবর্তন ঘোরাবে, এখন আপনি দূরবর্তী পরিবর্তনগুলি টানতে পারবেন,

git pull

এখন, আপনি আপনার স্থানীয় পরিবর্তনগুলি ফিরিয়ে আনতে পারেন,

git stash pop

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

সংক্ষেপে, আমার স্থানীয় পরিবর্তনগুলি মুছে ফেলার জন্য আমাকে নিম্নলিখিত দুটি আদেশগুলি করতে হয়েছিল

git checkout .

git clean -f

আমার প্রশ্ন,

(1) স্থানীয় পরিবর্তনের পরিত্রাণ পেতে এটাই সঠিক পদ্ধতি, নাকি দয়া করে আমাকে সঠিক পদ্ধতি সম্পর্কে জানতে দিন।

(2) আমরা যখন git reset --hard ব্যবহার করি - এই কমান্ড ছাড়াও আমি রিসেট করতে সক্ষম হচ্ছি

ধন্যবাদ

* সমাধান: মেজর সম্পাদনা (গুলি): 03/26: * গিট নির্দিষ্ট পরিভাষার সাথে অস্পষ্ট পদগুলি প্রতিস্থাপিত [ট্র্যাক / অট্যাকড / স্টেজ / অস্টিজেড]

স্থানীয় পরিবর্তনগুলি করার সময় কেবলমাত্র তিনটি ফাইলের ফাইল থাকতে পারে:

প্রকার 1. স্টেজ ট্র্যাক করা ফাইল

টাইপ 2. Unstaged ট্র্যাক করা ফাইল

টাইপ 3. Unstaged UnTracked ফাইল উর Untracked ফাইল

  • স্টেজেড - স্টেজিং এলাকা / ইন্ডেক্স যোগ করা হয় যে যারা
  • ট্র্যাক - সংশোধিত ফাইল
  • Untraracked - নতুন ফাইল। সবসময় unstaged। যদি মঞ্চস্থ হয়, যে তারা ট্র্যাক করা হয়।

প্রতিটি কমান্ড কি করে:

  1. git checkout . - শুধুমাত্র unstaged ট্র্যাক ফাইল মুছে ফেলা [টাইপ 2]

  2. git clean -f - শুধুমাত্র অস্থায়ী untracked ফাইলগুলি সরান [প্রকার 3]

  3. git reset --hard - git reset --hard - শুধুমাত্র স্টেজযুক্ত ট্র্যাকড এবং আনস্টেজেড ট্র্যাকড ফাইলগুলি সরান [প্রকার 1, টাইপ 2]

  4. git stash -u - সমস্ত পরিবর্তন মুছে ফেলা [টাইপ 1, টাইপ 2, টাইপ 3]

উপসংহার:

এটা স্পষ্ট যে আমরা ব্যবহার করতে পারেন

(1) combination of `git clean -f` and `git reset --hard` 

অথবা

(2) `git stash -u`

পছন্দসই ফলাফল অর্জন করতে।

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

আপনাকে ধন্যবাদ Christoph এবং ফ্রেডেরিক Schøning।

সম্পাদনা: 03/27

আমি ভেবেছিলাম এটা git clean -f করা git clean -f ' সতর্কতা ' নোট নির্বাণ মূল্য

git clean -f

ফিরে যাচ্ছে না। আপনি যা করবেন তার পূর্বরূপটি দেখতে -n বা --dry-run ব্যবহার করুন।

আপনি যদি ডিরেক্টরিগুলি মুছে ফেলতে চান তবে git clean -f -d চালান

আপনি শুধু উপেক্ষা করা ফাইল মুছে ফেলতে চান, git clean -f -X চালানো

আপনি উপেক্ষা করা পাশাপাশি অ-অবহেলিত ফাইলগুলি সরাতে চাইলে, git clean -f -x চালান

রেফারেন্স: জিট git clean উপর আরো: বর্তমান গিট কাজ গাছ থেকে স্থানীয় (অট্যাকড) ফাইলগুলি কিভাবে সরান?

সম্পাদনা: 05/20/15

এই শাখায় সমস্ত স্থানীয় কমিট বাতিল [স্থানীয় কমিট অপসারণ]

এই শাখায় স্থানীয় শাখাকে এই শাখাটির "আপস্ট্রীম" হিসাবে সাদৃশ্যপূর্ণ করতে, এই শাখায় সমস্ত স্থানীয় কমিট বাতিল করার জন্য, কেবল git reset --hard @{u} চালান

রেফারেন্স: http://sethrobertson.github.io/GitFixUm/fixup.html

বা git reset --hard origin/master [যদি স্থানীয় শাখা master ]

দ্রষ্টব্য: 06/12/2015 এটি অন্য SO প্রশ্নটির সদৃশ নয় যা ডুপ্লিকেট হিসাবে চিহ্নিত করা হয়েছে। এই প্রশ্নটি স্থানীয় জিআইটি পরিবর্তনগুলি কিভাবে সরানো যায় [একটি ফাইল যোগ করা হয়েছে, বিদ্যমান ফাইলটিতে পরিবর্তনগুলি সরিয়ে ফেলা হয়েছে এবং বিভিন্ন পদ্ধতিতে পরিবর্তন করুন; যেখানে অন্য SO থ্রেড শুধুমাত্র স্থানীয় কমিট অপসারণ কিভাবে ঠিকানা। যদি আপনি একটি ফাইল যোগ করেন, এবং আপনি সেটি সরাতে চান তবে অন্য SO থ্রেড এটি নিয়ে আলোচনা করবে না। তাই এটি অন্য একটি নকল নয়]

সম্পাদনা করুন: 06/23/15

কিভাবে একটি রিমোট রিপোজিটরি ইতিমধ্যে ধাক্কা একটি কমিট ফিরে?

$ git revert ab12cd15

সম্পাদনা: 09/01/2015

স্থানীয় শাখা এবং রিমোট শাখা থেকে পূর্ববর্তী কমিটি মুছে দিন

মামলা: আপনি শুধু আপনার স্থানীয় শাখাতে পরিবর্তনটি করেছিলেন এবং অবিলম্বে রিমোট শাখাতে ধাক্কা দিয়েছিলেন, হঠাৎ বুঝতে পেরেছিলেন, ওহ না! আমি এই পরিবর্তন প্রয়োজন হবে না। এখন কি করবেন?

git reset --hard HEAD~1 [স্থানীয় শাখা থেকে যে git reset --hard HEAD~1 মুছে ফেলার জন্য]

git push origin HEAD --force [উভয় কমান্ড নির্বাহ করা আবশ্যক। দূরবর্তী শাখা থেকে মুছে ফেলার জন্য]

কি শাখা? তার বর্তমানে চেক আউট শাখা।

09/08/2015 সম্পাদনা করুন - স্থানীয় গিট মার্জ সরান:

আমি master শাখার উপর আছি এবং একটি নতুন শাখা phase2 সহ master শাখায় phase2

$ git status
# On branch master

$ git merge phase2

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 8 commits.

প্রশ্নঃ এই ​​মার্জ পরিত্রাণ পেতে কিভাবে? চেষ্টা git reset --hard এবং git clean -d -f উভয় কাজ করে না।

কাজ করা একমাত্র জিনিস নীচের কোনটি হল:

$ git reset --hard origin/master

অথবা

$ git reset --hard HEAD~8

অথবা

$ git reset --hard 9a88396f51e2a068bb7 - ঘন্টা 9এ $ git reset --hard 9a88396f51e2a068bb7 [sha commit কোড - আপনার সমস্ত একত্রীকরণ সংঘটিত হওয়ার আগে উপস্থিত ছিলেন এমন একটি]


Git সবকিছু হিসাবে এটি করার একাধিক উপায় আছে। আপনি ব্যবহৃত দুটি কমান্ড এটি করার এক উপায়। আরেকটি জিনিস যা আপনি করতে পারতেন তা সহজেই git stash -u দিয়ে তাদের git stash -u । -U নিশ্চিত করে যে নতুন যোগ করা ফাইল (অট্যাকড) এছাড়াও অন্তর্ভুক্ত করা হয়।

git stash -u সম্পর্কে সহজ জিনিস যে

  1. এটা সম্ভবত আপনার লক্ষ্য অর্জন করতে সহজ (শুধুমাত্র?) একক কমান্ড
  2. আপনি যদি আপনার মন পরিবর্তন করেন তবে আপনি git stash pop সাথে আপনার সমস্ত কাজ ফিরে পাবেন (এটি জিমেইল এমন একটি ইমেল মুছে ফেলার মতো যেখানে আপনি পরে আপনার মন পরিবর্তন করলেই এটি পূর্বাবস্থায় ফিরিয়ে আনতে পারেন)

আপনার অন্য প্রশ্ন জিট git reset --hard হিসাবে - হার্ডডিস্ক অট্যাকড ফাইল মুছে ফেলা হবে না, যাতে আপনি এখনও git clean -f প্রয়োজন হবে। কিন্তু একটি git stash -u সবচেয়ে সুবিধাজনক হতে পারে।


আমি যে সকল স্ট্যাশ এবং স্ট্যাশ ড্রপ করতে চাই সেটি বাতিল করার জন্য, এটি সবাইকে বর্জন করার দ্রুততম উপায়, বিশেষত যদি আপনি একাধিক প্রতিস্থাপনের মধ্যে কাজ করেন।

এটি {0} কীতে সমস্ত পরিবর্তনগুলি টানবে এবং তাৎক্ষণিকভাবে এটি {0} থেকে ছেড়ে দেবে

git stash && git stash drop


এটি আপনি ঠিক পূর্বাবস্থায় ফিরিয়ে আনতে / প্রত্যাহার করার চেষ্টা করছেন ঠিক কি উপর নির্ভর করে। .com/questions/1146973/… পড়া শুরু .com/questions/1146973/… । কিন্তু একটি উত্তর চেষ্টা করার জন্য:

হার্ড রিসেট

git reset --hard [HEAD]

সম্পূর্ণ ট্র্যাক ফাইল সব স্টেজেড এবং unstaged পরিবর্তন মুছে ফেলুন।

আমি নিজেকে হার্ড রিসেটিং ব্যবহার করে খুঁজে পাচ্ছি, যখন আমি "আমি রিমোট থেকে সম্পূর্ণ ক্লোন তৈরি করেছি ঠিক মতই পূর্বাবস্থায় ফিরিয়ে আনব"। আপনার ক্ষেত্রে, যেখানে আপনি শুধু আপনার repo pristine চান, এই কাজ করবে।

পরিষ্কার

git clean [-f]

ট্র্যাক করা হয় না যে ফাইল সরান।

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

-F (force) বিকল্প ফাইলগুলিও সরাবে, যা ট্র্যাক করা হয় না এবং ignore-rule যদিও git দ্বারা উপেক্ষা করা হচ্ছে। উপরের ক্ষেত্রে, কোনও অজানা-নিয়ম দিয়ে বিন / ওজেজে ফোল্ডারগুলি ট্র্যাক করতে না পারে, যদিও এই ফোল্ডারগুলিকে গিট দ্বারা উপেক্ষা করা হচ্ছে, তবে বল-বিকল্পটি ব্যবহার করে সেগুলি আপনার ফাইল সিস্টেম থেকে মুছে ফেলা হবে। আমি sporadically এই জন্য একটি ব্যবহার দেখেছি, উদাহরণস্বরূপ যখন স্ক্রিপ্টিং স্থাপনা, এবং আপনি স্থাপনা, zipping বা যাই হোক না কেন আগে আপনার কোড পরিষ্কার করতে চান।

গিট পরিষ্কার ফাইল স্পর্শ করবে না, ইতিমধ্যে ট্র্যাক করা হচ্ছে যে।

চেকআউট "বিন্দু"

git checkout .

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

"আমার কাজের গাছের সব পরিবর্তন পূর্বাবস্থায় ফিরিয়ে আনুন"।

আমি ট্র্যাক ফাইল মধ্যে unstaged পরিবর্তন পূর্বাবস্থায় ফেরানো। এটা স্পষ্টভাবে staged পরিবর্তন স্পর্শ না এবং একা untracked ফাইল পাতা।

Stashing

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

সমষ্টি আপ

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

অন্যান্য সমস্ত কমান্ডগুলি আরও জটিল পরিস্থিতিতে সহজতর করার জন্য রয়েছে, যেখানে "পূর্বাবস্থায় ফেরানো জিনিসগুলি" এর গ্র্যানুলারিটির প্রয়োজন হয় :)

আমি মনে করি, আপনার প্রশ্ন # 1 আচ্ছাদিত, কিন্তু শেষ পর্যন্ত, # 2 এ শেষ হওয়ার কারণ: আপনি যে কোনও কারণে git reset --hard ব্যবহার করার প্রয়োজন খুঁজে পাননি - তা হল যে আপনি কোনও কিছু স্ট্যাগেড করেননি। আপনি একটি পরিবর্তন git checkout . , না git checkout . না git clean -f যে git clean -f হবে।

এই কভার আশা করি।


সব চেক প্রথম আপনার গুরুত্বপূর্ণ পরিবর্তন সংরক্ষিত বা না:

$ গিট অবস্থা

চেষ্টা করার চেয়ে

$ জিট রিসেট - হার্ড

এটি ডিফল্ট আপনার শাখা রিসেট হবে

কিন্তু যদি আপনি ঠিক পূর্বাবস্থায় ফিরতে চান তবে:

$ সম্পাদনা (1) $ git frotz.c filfre.c $ mailx (2) $ git রিসেট যোগ করুন
(3) $ git pull git: //info.example.com/ nitfol

আরো পড়ুন >> https://git-scm.com/docs/git-reset


সবচেয়ে ভাল উপায় পরিবর্তন চেক আউট হয়।

প্রকল্প-নাম নামে একটি প্রকল্পে ফাইল pom.xml পরিবর্তন করলে আপনি এটি করতে পারেন:

git status

# modified:   project-name/pom.xml

git checkout project-name/pom.xml
git checkout master

# Checking out files: 100% (491/491), done.
# Branch master set up to track remote branch master from origin.
# Switched to a new branch 'master'





git-bash