git কিভাবে একটি স্থানীয় কমিটি তৈরীর পরে আমার ফাইল আবার unstage করতে পারেন?



github (5)

আমি নিম্নলিখিত কমান্ড সম্পন্ন করেছেন

git add <foo.java>
git commit -m "add the foo java"

আমি কিভাবে এখন আমার স্থানীয় কমিটি মুছে ফেলতে এবং একটি unstaged অবস্থায় foo.java করতে পারেন?

যদি আমি জিট git reset --hard টাইপ টাইপ করি, তাহলে আমি দেখি যে এটি foo.java আমার মূল পরিবর্তনটিকে ফিরিয়ে দেবে।


Answer #1

আমার কাছে, নিম্নলিখিতটি সর্বদা আরও পাঠযোগ্য (এভাবে অগ্রাধিকারযোগ্য) উপায় ছিল:

git reset HEAD~1

পরিবর্তে 1 , আপনি unstage করতে চান কোন সংখ্যা হতে পারে।


Answer #2

git reset --soft HEAD~1 আপনি চান কি করা উচিত। এর পরে, আপনার সূচকের প্রথম পরিবর্তন হবে ( git diff --cached সহ দৃশ্যমান), এবং আপনার নতুন পরিবর্তনগুলি মঞ্চস্থ হবে না। git status তারপর এই মত চেহারা হবে:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   foo.java
#
# 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:   foo.java
#

আপনি তারপর git add foo.java এবং উভয় পরিবর্তন উভয় পরিবর্তন করতে পারেন।


Answer #3

git reset --soft কেবলমাত্র এর জন্য: এটি git reset --hard মতো - git reset --soft , তবে ফাইলগুলি স্পর্শ করে না।


Answer #4

"রিসেট" স্থানীয়ভাবে পরিবর্তন পূর্বাবস্থায় ফেরার উপায়। সম্পাদন করার সময়, আপনি প্রথমে " গিট অ্যাড " সহ অন্তর্ভুক্ত করতে পরিবর্তনগুলি নির্বাচন করুন - এটি "স্টেজিং" নামে পরিচিত। এবং একবার পরিবর্তিত হয়, তাহলে আপনি তাদের " git commit "।

স্টেজিং বা কমিটি থেকে ফিরে আসার জন্য, আপনি HEAD টি "রিসেট করুন"। একটি শাখায়, HEAD একটি গিট পরিবর্তনশীল যা সাম্প্রতিকতম কমিটির দিকে নির্দেশ করে। সুতরাং আপনি যদি স্টেজেড কিন্তু প্রতিশ্রুতিবদ্ধ না থাকেন, তাহলে আপনি " HEAD পুনরায় সেট করুন ।" যে পর্যায় থেকে পরিবর্তন গ্রহণ করে বর্তমান HEAD পর্যন্ত ব্যাক আপ। এটা " গিট রিসেট - মিশ্র মাথা ~ 0। "

যদি আপনি ইতিমধ্যেই প্রতিশ্রুতিবদ্ধ হয়ে থাকেন, তবে HEAD ইতিমধ্যেই উন্নত হয়েছে, তাই আপনাকে পূর্ববর্তী কমিটির ব্যাক আপ করতে হবে। এখানে আপনি " HEAD ~ 1 রিসেট করুন " বা " HEAD ^ 1 রিসেট করুন " বা " রিসেট HEAD ~ " বা " HEAD ^ রিসেট করুন " - সমস্ত রেফারেন্স HEAD বিয়োগ এক।

যা ভাল প্রতীক, ~ বা ^? ~ টিল্ডিকে একক প্রবাহ হিসাবে মনে করুন - যখন প্রতিটি কমিটিতে একক পিতা বা মাতা থাকে এবং এটি কেবল ক্রম পরিবর্তনগুলির একটি সিরিজ হয়, তখন আপনি টিল্ড ব্যবহার করে স্ট্রিমটিকে ব্যাক আপ করতে পারেন, যেমন HEAD ~ 1, HEAD ~ 2, HEAD ~ 3, পিতা-মাতা, দাদা, দাদা-পিতামহ ইত্যাদি (টেকনিক্যালি এটি পূর্ববর্তী প্রজন্মের প্রথম পিতামাতার সন্ধান করছে)।

যখন একটি মার্জ আছে, তারপর একাধিক পিতামাতার আছে। ^ যখন ক্যারেট খেলা শুরু হয় - আপনি মনে রাখতে পারেন কারণ এটি শাখাগুলি একসাথে আসছে। ক্যারেট ব্যবহার করে, HEAD ^ 1 প্রথম পিতা হবেন এবং HEAD ^ 2 একটি একক অঙ্গীকারের দ্বিতীয় পিতা হবেন - উদাহরণস্বরূপ, মা এবং বাবা।

সুতরাং আপনি যদি শুধুমাত্র একক পিতা-মাতার প্রতি এক হপ ফিরে যান, তবে HEAD ~ এবং HEAD ^ সমান - আপনি একটি ব্যবহার করতে পারেন।

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

একটি - মিশ্র রিসেট (ডিফল্ট) পূর্ববর্তী কমিটির ফাইলগুলিও পরীক্ষা করে না, তাই সব পরিবর্তন সংরক্ষিত থাকে তবে পর্যায়টি সাফ করা হয়। এজন্য একটি সহজ " গিট রিসেট হেড " পর্যায়টি বন্ধ করে দেবে।

A -Hard রিসেটটি HEAD রিসেট করে এবং এটি পর্যায়টি সাফ করে তবে এটি পূর্ববর্তী কমিটির সমস্ত ফাইলগুলিও পরীক্ষা করে এবং তাই এটি কোনও পরিবর্তনকে ওভাররাইট করে।

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

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


Answer #5

আপনার সর্বশেষ কমিটিতে সব ফাইল unstaging জন্য -

git reset HEAD~





git