স্থানীয় গিট পরিবর্তনগুলি সরানোর বিভিন্ন উপায়


625

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

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

git checkout .

git clean -f

আমার প্রশ্ন হ'ল,

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

(২) কখন git reset --hardআমি এই আদেশটি ছাড়াই পুনরায় সেট করতে সক্ষম হিসাবে ব্যবহার করব

ধন্যবাদ

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

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

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

টাইপ 2. আনস্টেজড ট্র্যাক করা ফাইল

টাইপ 3. আনস্টেজড ট্র্যাক না করা ফাইলগুলি ওরফে আনট্যাক করা ফাইল

  • স্টেজড - স্টেজিং এরিয়াতে স্থানান্তরিত / সূচীতে যুক্ত হওয়াগুলি
  • ট্র্যাক - পরিবর্তিত ফাইল
  • ট্র্যাক না করা - নতুন ফাইল। সর্বদা অচিরাচরিত। যদি মঞ্চস্থ হয়, তার মানে তারা ট্র্যাক করেছে।

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

  1. git checkout . - কেবলমাত্র অচিহ্নবদ্ধ ট্র্যাক করা ফাইলগুলি সরান [প্রকার 2]

  2. git clean -f - আনস্টেজ না করা ট্র্যাক করা ফাইলগুলি কেবলমাত্র সরান [প্রকার 3]

  3. 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। সুতরাং উপরোক্ত দুটি বিকল্পের মধ্যে চয়ন করা বিকাশকারীদের কল।

ক্রিস্টোফ এবং ফ্রেডেরিক শ্যাঙ্কিংকে ধন্যবাদ।

সম্পাদনা করুন: 03/27

আমি ভেবেছিলাম এটি ' সাবধান ' নোটটি রাখার মতো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 এই না অন্যান্য তাই প্রশ্ন যে সদৃশ হিসাবে চিহ্নিত হচ্ছে সদৃশ। স্থানীয় জিআইটি পরিবর্তনগুলি কীভাবে মুছে ফেলা যায় সে সম্পর্কে এই প্রশ্নটির ঠিকানা দেওয়া হয়েছে [একটি ফাইল যুক্ত করা সরিয়ে ফেলুন, বিদ্যমান ফাইলগুলিতে যুক্ত হওয়া পরিবর্তনগুলি মুছে ফেলুন ইত্যাদি এবং বিভিন্ন পদ্ধতি; যেখানে অন্যান্য এসও থ্রেডে কেবল স্থানীয় প্রতিশ্রুতিগুলি কীভাবে সরিয়ে ফেলা হবে তা সম্বোধন করে। আপনি যদি কোনও ফাইল যোগ করেছেন এবং আপনি এটি একা সরাতে চান তবে অন্য এসও থ্রেড এটি নিয়ে আলোচনা করে না। সুতরাং এটি অন্যটির সদৃশ নয়]

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

ইতিমধ্যে একটি দূরবর্তী সংগ্রহস্থলে পুশ করা প্রতিশ্রুতি কীভাবে ফিরিয়ে আনবেন?

$ git revert ab12cd15

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

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

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

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

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

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

সম্পাদনা করুন 09/08/2015 - সরান স্থানীয় Git একত্রীকরণ :

আমি masterশাখায় আছি এবং 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 [শ কমিট কোড - এটি হ'ল এটি যা আপনার সমস্ত মার্জ কমিট হওয়ার আগে উপস্থিত হয়েছিল]


1
আমার ধারণা এই থ্রেডটি আপনার প্রশ্নের উত্তর দিতে পারে: স্ট্যাকওভারফ্লো
স্যুসিয়ার

1
"গিট স্ট্যাশ" আপনার করা যে কোনও পরিবর্তন সরিয়ে ফেলবে।
জন বলিঞ্জার

1
চমৎকার সারসংক্ষেপ! আমি অন্য একটি ফাইল বিভাগ যুক্ত করব: "টাইপ করুন ৪. উপেক্ষা করা ফাইল" " git stash -a[বা - সমস্ত] পাশাপাশি উপেক্ষা করা এবং তালিকৃত ফাইলগুলিও স্ট্যাশ করবে। git clean -xউপেক্ষা করা ফাইলগুলিও পরিষ্কার করবে। git clean -Xকেবল উপেক্ষা করা ফাইলগুলি পরিষ্কার করবে।
জেরি 101

2
@ জাভাদেব আপনার প্রশ্নটি একটি উত্তরের মতো ছিল .. আপনি যে সম্পাদনা চালিয়ে গিয়েছেন এবং সমস্ত উত্তর সংকলন করেছেন তা প্রশংসা করুন।
ভাওয়ুক মাথুর

1
ধন্যবাদ আমি স্থানীয় পরিবর্তনগুলি বিপরীত করতে আপনার সমস্ত কমান্ডের 4 টি দৌড়েছি
ভিনসেন্ট টাং

উত্তর:


505

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

হার্ড রিসেট

git reset --hard [HEAD]

ট্র্যাক করা ফাইলগুলিতে সমস্ত পর্যায়ের এবং স্টেস্ট না করা পরিবর্তনগুলি সম্পূর্ণরূপে সরান।

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

পরিষ্কার

git clean [-f]

ট্র্যাক করা হয়নি এমন ফাইলগুলি সরান।

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

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

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

"ডট" চেকআউট

git checkout .

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

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

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

Stashing

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

যোগফল

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

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

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

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


ব্যবহার করার পিছনে কারণ জন্য আপনাকে ধন্যবাদ git reset --hard। আমি এটি চেষ্টা করে দেখেছি, এবং হ্যাঁ .. সূচীতে যুক্ত হওয়া ফাইলগুলি (মঞ্চে) কেবল তখনই সরানো হয়েছিল git reset --hard, এবং আমি অনুমান করি ডিফল্টরূপে git reset --hardএটি git reset --hard head। এই লিঙ্কটি সহায়ক ছিল gitready.com/beginner/2009/01/18/the-staging-area.html
স্পাইডারম্যান

আমি আমার উত্তরটির উন্নতি করেছি কেন আমি মনে করি কেন git stash -uএখানে সর্বাধিক অর্থ বোধ হয়।
ক্রিস্টোফ

2
আপনি উভয়, আপনাকে ধন্যবাদ. আমি উত্তরটি সংক্ষিপ্ত করে আমার প্রশ্নে এম্বেড করেছি। ক্রিস্টোফ আমাকে কি দেবেন git stash -uনা এবং কিভাবে এটি পপ, কিন্তু Frederik আমাকে রিসেট হার্ড এবং এর সমন্বয় ব্যবহার করে জানাতে git reset --hardএবং git clean -fএবং কেন না stashকিছু পরিস্থিতিতে পছন্দ করা হয়। এখন দয়া করে আমাকে উত্তর হিসাবে চিহ্নিত করা উচিত তা চয়ন করতে আমাকে সহায়তা করুন :), দুটিই আমার উত্তর।
স্পাইডারম্যান

3
.বর্তমান ওয়ার্কিং ডিরেক্টরিকে উল্লেখ করে এমন একটি প্যাথস্পেক, যা রেপোর মূল হতে পারে। Git-scm.com থেকে: git checkout [<tree-ish>] [--] <pathspec>…সূচী ফাইল থেকে বা একটি নামের <tree-ish> থেকে কার্যকারী গাছের নামযুক্ত পাথগুলি আপডেট করে।
জেরি 101

3
এটা যথেষ্ট জোর আগে কখনো ছিল না উভয় git reset --hardএবং git clean -dfxএবং মত ধ্বংসাত্মক । যাইহোক, দয়া headকরে উত্তরে ছোট হাতের অক্ষর ঠিক করুন , এটি হয় বড় হাতের হওয়া উচিত HEADবা একেবারেই উপস্থিত না হওয়া উচিত ।
পাভেল Šিমেরদা

25

এই মুহুর্তে একটি উত্তর যুক্ত করার কারণ:

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

আমি আরও ঘন ঘন ব্যবহৃত গিট কমান্ডগুলি যুক্ত করেছি যা আমাকে অন্য ব্যক্তিকেও সহায়তা করতে গিটে সহায়তা করে।

মূলত সমস্ত স্থানীয় কমিটগুলি পরিষ্কার করতে $ git reset --hardএবং $ git clean -d -f


কোনও প্রতিশ্রুতি দেওয়ার আগে প্রথম পদক্ষেপ হ'ল আপনার প্রতিশ্রুতি সহ প্রদর্শিত ইউজারনেম এবং ইমেলটি কনফিগার করা।

# আপনার প্রতিশ্রুতিবদ্ধ লেনদেনের সাথে আপনি যে নামটি সংযুক্ত করতে চান তা সেট করে

$ git config --global user.name "[name]"

# আপনার প্রতিশ্রুতিবদ্ধ লেনদেনগুলিতে আপনি যে ইমেলটি সংযুক্ত করতে চান তা সেট করে

$ git config --global user.email "[email address]"

# গ্লোবাল কনফিগারেশনের তালিকা দিন

$ git config --list

# দূরবর্তী ইউআরএল তালিকাবদ্ধ করুন

$ git remote show origin

#অবস্থা পরীক্ষা

git status

# স্থানীয় এবং প্রত্যন্ত সমস্ত শাখার তালিকা দিন

git branch -a

# একটি নতুন স্থানীয় শাখা তৈরি করুন এবং এই শাখায় কাজ শুরু করুন

git checkout -b "branchname" 

বা, এটি একটি দুই ধাপ প্রক্রিয়া হিসাবে সম্পন্ন করা যেতে পারে

শাখা তৈরি করুন: git branch branchname এই শাখায় কাজ করুন:git checkout branchname

# স্থানীয় পরিবর্তনগুলি কমিট করুন [দুটি পদক্ষেপের প্রক্রিয়া: - সূচীতে ফাইল যুক্ত করুন, যার অর্থ মঞ্চে যুক্ত হওয়া অঞ্চল। তারপরে এই মঞ্চে উপস্থিত ফাইলগুলি প্রতিশ্রুতিবদ্ধ করুন]

git add <path to file>

git commit -m "commit message"

# স্থানীয় কিছু শাখা পরীক্ষা করুন

git checkout "local branch name"

# স্থানীয় শাখায় সমস্ত পরিবর্তন সরিয়ে ফেলুন [ধরুন আপনি স্থানীয় শাখায় কিছু পরিবর্তন করেছেন যেমন নতুন ফাইল যুক্ত করা বা বিদ্যমান ফাইলটি সংশোধন করা, বা স্থানীয় প্রতিশ্রুতিবদ্ধ করা, তবে এর আর প্রয়োজন নেই] git clean -d -fএবং git reset --hard [স্থানীয় শাখায় করা সমস্ত স্থানীয় পরিবর্তনগুলি পরিষ্কার করে ছাড়া যদি স্থানীয় প্রতিশ্রুতি]

git stash -u এছাড়াও সমস্ত পরিবর্তন মুছে ফেলা হয়

দ্রষ্টব্য: এটি স্পষ্ট যে আমরা পছন্দসই ফলাফল অর্জনের জন্য (1) git clean –d –fএবং git reset --hard OR (2) এর সংমিশ্রণটি ব্যবহার করতে পারি git stash -u

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

নোট 2: git reset --hardকার্যকরী ডিরেক্টরি পরিবর্তন মুছে ফেলবে। এই কমান্ডটি চালানোর আগে আপনি যে কোনও স্থানীয় পরিবর্তনগুলি রাখতে চান তা অবশ্যই সংরক্ষণ করুন।

# মাস্টার শাখায় স্যুইচ করুন এবং নিশ্চিত হন যে আপনি আপ টু ডেট আছেন।

git checkout master

git fetch [উত্স / মাস্টার সম্পর্কিত আপডেটগুলি পেতে এটি আপনার গিট কনফিগারেশনের উপর নির্ভর করে)

git pull

# বৈশিষ্ট্য শাখাটি মাস্টার শাখায় মার্জ করুন।

git merge feature_branch

# উত্সের স্থিতিতে মাস্টার শাখাটি পুনরায় সেট করুন।

git reset origin/master

# ঘটনাচক্রে স্থানীয় থেকে একটি ফাইল মুছে ফেলা হয়েছে, কীভাবে এটি পুনরুদ্ধার করবেন? git statusমুছে ফেলা সম্পদের সম্পূর্ণ ফাইলপথ পেতে একটি করুন

git checkout branchname <file path name>

এটাই!

# সামডারবাঞ্চের সাথে মার্জ মাস্টার শাখা

git checkout master
git merge someotherbranchname

স্থানীয় নাম

git branch -m old-branch-name new-branch-name

# স্থানীয় স্থানীয় শাখা মুছে ফেলুন

git branch -D branch-name

# মুছে ফেলা প্রত্যন্ত শাখা

git push origin --delete branchname

অথবা

git push origin :branch-name

ইতিমধ্যে একটি প্রত্যন্ত সংগ্রহস্থলে পুশ করা প্রতিশ্রুতি পুনরায় করুন

git revert hgytyz4567

জিআইটি ব্যবহার করে আগের কমিট থেকে # ব্রাঞ্চ

git branch branchname <sha1-of-commit>

# ইতিমধ্যে রিমোটে ঠেলাঠেলি করা সাম্প্রতিক প্রতিশ্রুতিটির প্রতিশ্রুতি পরিবর্তন করুন

git commit --amend -m "new commit message"
git push --force origin <branch-name>

# এই শাখায় সমস্ত স্থানীয় কমিটগুলি বাতিল করা হচ্ছে [ স্থানীয় কমিটগুলি সরানো]

এই শাখায় সমস্ত স্থানীয় কমিটিকে বাতিল করতে, স্থানীয় শাখাকে এই শাখার "উজান" এর অনুরূপ করার জন্য, কেবল চালানো

git reset --hard @{u}

তথ্যসূত্র: http://sethrobertson.github.io/GitFixUm/fixup.html বা করুন git reset --hard origin/master[স্থানীয় শাখা যদি মাস্টার হয়]

# ইতিমধ্যে দূরবর্তী ভাণ্ডারগুলিতে ঠেকানো প্রতিশ্রুতিতে ফিরে আসবেন?

$ git revert ab12cd15

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

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

git reset --hard HEAD~1[স্থানীয় শাখা থেকে যে প্রতিশ্রুতি মুছে ফেলার জন্য। 1 আপনার করা একটি প্রতিশ্রুতি বোঝায়]

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

# স্থানীয় এবং দূরবর্তী রেপো থেকে সাম্প্রতিক কিছু কমিটগুলি মুছুন এবং আপনি যে প্রতিশ্রুতি চান তা সংরক্ষণ করুন। (স্থানীয় এবং দূরবর্তী থেকে এক ধরণের প্রত্যাবর্তনের প্রতিশ্রুতি)

ধরে নেওয়া যাক আপনার কাছে 3 টি কমিট রয়েছে যা আপনি ' develop' নামের প্রত্যন্ত শাখায় ফেলেছেন

commitid-1 done at 9am
commitid-2 done at 10am
commitid-3 done at 11am. // latest commit. HEAD is current here.

পুরানো প্রতিশ্রুতিতে ফিরে যেতে (শাখার অবস্থার পরিবর্তন করতে)

git log --oneline --decorate --graph // আপনার সমস্ত প্রতিশ্রুতি দেখতে

git clean -d -f // স্থানীয় যে কোনও পরিবর্তন পরিষ্কার করুন

git reset --hard commitid-1 // স্থানীয়ভাবে এই প্রতিশ্রুতিতে ফিরে

git push -u origin +develop// এই অবস্থাকে দূরবর্তী দিকে ঠেলাও। + জোর ধাক্কা

# স্থানীয় গিট একীভূতকরণ সরান: কেস: আমি মাস্টার শাখায় আছি এবং একটি নতুন কার্যকারী শাখা ফেজ 2 এর সাথে সংযুক্ত মাস্টার শাখা

$ git status

শাখা মাস্টার উপর

$ git merge phase2 $ git status

শাখা মাস্টার উপর

আপনার শাখা 8 টি কমিট দ্বারা 'উত্স / মাস্টার' এর চেয়ে এগিয়ে ।

প্রশ্ন: এই স্থানীয় গিট সংহত থেকে কীভাবে মুক্তি পাবেন? চেষ্টা করেছেন git reset --hardএবং git clean -d -fদুজনই কাজ করেননি। নিচের যে কোনওটি কেবলমাত্র কাজ করেছে:

it গিট রিসেট --হাড় উত্স / মাস্টার

অথবা

it গিট রিসেট - হেড HE 8

অথবা

$ git reset --hard 9a88396f51e2a068bb7 [শ কমিট কোড - এটি হ'ল এটি যা আপনার সমস্ত মার্জ কমিট হওয়ার আগে উপস্থিত হয়েছিল]

# gitignore ফাইল তৈরি করুন

touch .gitignore // ম্যাক বা ইউনিক্স ব্যবহারকারীদের মধ্যে ফাইল তৈরি করুন

নমুনা। gitignore সামগ্রী:

.project
*.py
.settings

জিআইটি চিট শিটের রেফারেন্স লিঙ্ক: https://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf


1
রিমোট ব্রাঞ্চ মোছার জন্য আপনার কমান্ড সেরা নাও হতে পারে । আপনি ব্যবহার করছেন git push origin :branch-nameতবে আমি ব্যবহার করার পরামর্শ দিচ্ছিgit push origin --delete branchname
vis2006

, স্বীকার করছি যে আমার আপনার পরামর্শের সঙ্গে আপডেট, আপনাকে ধন্যবাদ @ vibs2006
স্পাইডারম্যান

21

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

কুশলী জিনিস সম্পর্কে git stash -uযে

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

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


git reset --harduntracked সরানো হবে না ফাইল প্রকৃতপক্ষে, কিন্তু এটা হবে untracked পরিবর্তনগুলি সরাতে, অর্থাত্ ফাইল, যে সূচক ইতিমধ্যেই আছে পরিবর্তিত হয়। আমি নিশ্চিত যে আপনি এটাই বোঝাতে চেয়েছিলেন :)
ফ্রেডেরিক স্ট্রাক-শ্যাকিং

আমি যখন ব্যবহার করেছি git stash -u, আমি গিটি ব্যাশ থেকে এই প্রতিক্রিয়াটি দেখেছি। "এ সংরক্ষিত {branchname} এ ডিরেক্টরি ও সূচক রাষ্ট্র WIP কাজ থাকতে পারে এই সংরক্ষিত এক কি আমরা ব্যবহার পুনরুদ্ধার পারে হও। git stash pop
স্পাইডারম্যান

আপনি উভয়, আপনাকে ধন্যবাদ. আমি উত্তরটি সংক্ষিপ্ত করে আমার প্রশ্নে এম্বেড করেছি। ক্রিস্টোফ আমাকে কি দেবেন git stash -uনা এবং কিভাবে এটি পপ, কিন্তু Frederik আমাকে রিসেট হার্ড এবং এর সমন্বয় ব্যবহার করে জানাতে git reset --hardএবং git clean -fএবং কেন না stashকিছু পরিস্থিতিতে পছন্দ করা হয়। এখন দয়া করে আমাকে উত্তর হিসাবে চিহ্নিত করা উচিত তা চয়ন করতে আমাকে সহায়তা করুন :), দুটিই আমার উত্তর।
স্পাইডারম্যান

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

7

1. আপনি যখন নিজের স্থানীয় পরিবর্তনগুলি একেবারে রাখতে চান না।

git reset --hard

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

২. আপনি যখন স্থানীয় পরিবর্তনগুলি রাখতে চান

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

git stash

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

git pull

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

git stash pop

1
git reset --hardসমস্ত স্থানীয় পরিবর্তন সরিয়ে দেয় না। এটি কেবল পরিবর্তনগুলি অপসারণ করে। আপনি যদি git clean -fd
অ্যাডগুলি


4

আমি মনে করি গিটের একটি জিনিস রয়েছে যা স্পষ্টভাবে নথিভুক্ত নয়। আমি মনে করি এটি আসলে অবহেলিত ছিল।

git checkout .

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

সেখানে git clean -fd ভাল untracked ফাইলের জন্য কাজ করে।

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

তবে আমি মনে করি তাদের git checkoutকোনও বিকল্প ছাড়াই কেবল হওয়া উচিত , সমস্ত অনাস্থাবিহীন পরিবর্তনগুলি সরিয়ে ফেলুন এবং মঞ্চযুক্তকে স্পর্শ করবেন না। এটি কিন্ডাল মডুলার এবং স্বজ্ঞাত। আরও কি git resetপছন্দ। git cleanএকই কাজ করা উচিত।


2

সর্বোত্তম উপায়টি পরিবর্তনগুলি পরীক্ষা করা।

প্রজেক্ট-নাম নামের প্রকল্পে ফাইল 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'

2

আমি স্ট্যাশ করতে এবং স্ট্যাশটিকে ফেলে দেওয়ার মতো সমস্ত কিছু ফেলে দেওয়ার জন্য, সমস্তটি ফেলে দেওয়ার এটি দ্রুততম উপায়, বিশেষত যদি আপনি একাধিক रिपোর মধ্যে কাজ করেন।

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

git stash && git stash drop


1

সবার আগে চেক হ'ল আপনার গুরুত্বপূর্ণ পরিবর্তনটি সংরক্ষণ করা হয়েছে বা এর দ্বারা নয়:

it গিট স্ট্যাটাস

চেষ্টা চেয়ে

it গিট রিসেট --হার্ড

এটি আপনার শাখাটিকে ডিফল্টে পুনরায় সেট করবে

তবে আপনার যদি প্রয়োজন কেবল পূর্বাবস্থায় ফিরে:

$ সম্পাদনা (1) it গিট অ্যাড frotz.c filefre.c $ মেলেক্স (2) it গিট রিসেট
(3) it গিট টান গিট: //info.example.com/ নিতফোল


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


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