git কিভাবে আগে 'গিট অ্যাড' পূর্বাবস্থায় ফেরাতে হবে?





15 Answers

তুমি চাও:

git rm --cached <added_file_to_undo>

রিজনিং:

যখন আমি এই নতুন ছিল, আমি প্রথম চেষ্টা

git reset .

(আমার সম্পূর্ণ প্রাথমিক যোগ পূর্বাবস্থায় ফেরাতে), শুধুমাত্র এটি (তাই নয়) সহায়ক বার্তাটি পেতে:

fatal: Failed to resolve 'HEAD' as a valid ref.

এটি দেখা দেয় যে এটি হ'ল HEAD রেফারেন্স (শাখা?) প্রথম কমিটির পরে বিদ্যমান নেই। অর্থাৎ, আপনি যদি আমার কর্মপ্রবাহ, আমার মত, আমার মত একই beginner এর সমস্যা মধ্যে চালানো হবে:

  1. জিডি, নতুন গরমতা চেষ্টা করার জন্য আমার মহান নতুন প্রকল্প ডিরেক্টরির সিডি
  2. git init
  3. git add .
  4. git status

    ... দ্বারা বিষ্ঠা স্ক্রোল প্রচুর ...

    => অবাক, আমি যে সব যোগ করতে চাই না।

  5. google "undo git add"

    => স্ট্যাক ওভারফ্লো খুঁজুন - হ্যাঁ

  6. git reset .

    => মারাত্মক: একটি বৈধ রেফারেন্স হিসাবে 'HEAD' সমাধান করতে ব্যর্থ।

এটি আরও সক্রিয় করে যে মেইলিং লিস্টে এটির অসহায়ত্বের বিরুদ্ধে একটি ত্রুটি রয়েছে

এবং যে সঠিক সমাধান Git স্ট্যাটাস আউটপুট সেখানে ছিল (যা, হ্যাঁ, আমি 'বাদাম হিসাবে glossed)

...
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
...

এবং সমাধান প্রকৃতপক্ষে git rm --cached FILE ব্যবহার করা হয়।

এখানে অন্যত্র সতর্কতাগুলি লক্ষ্য করুন - git rm আপনার স্থানীয় স্থানীয় অনুলিপি ফাইলটি মুছে ফেলে, তবে আপনি যদি --cached ব্যবহার করেন না । এখানে git help rm ফলাফল এর:

--cached কেবলমাত্র সূচক থেকে পথগুলি সরাতে এবং সরানোর জন্য এই বিকল্পটি ব্যবহার করুন। কাজ গাছ ফাইল, সংশোধন বা না, বাকি থাকবে।

আমি ব্যবহার এগিয়ে যান

git rm --cached .

সবকিছু মুছে ফেলুন এবং আবার শুরু করুন। যদিও কাজ না, কারণ যখন add . recursive হয়, rm প্রয়োজন সক্রিয় -r recurs। দীর্ঘশ্বাস.

git rm -r --cached .

ঠিক আছে, এখন আমি ফিরে এসেছি যেখানে আমি শুরু করেছি। পরবর্তী সময় আমি একটি শুষ্ক চালনা করতে -n ব্যবহার করতে যাচ্ছি এবং দেখতে হবে কী যোগ করা হবে:

git add -n .

--cached ধ্বংস না করে (এবং যদি আমি এটি বানান ভুল করি) সম্পর্কে --cached git help rm বিশ্বাস করার আগে আমি সবকিছু নিরাপদে --cached

git version-control git-commit git-stage

কমান্ডটি ব্যবহার করে আমি ভুলভাবে ফাইল যোগ করেছি:

git add myfile.txt

আমি এখনও git commit চালানো হয়নি। এটি পূর্বাবস্থায় ফিরিয়ে আনতে কোন উপায় আছে, তাই এই ফাইলগুলি কি কমিটিতে অন্তর্ভুক্ত করা হবে না?

এখন পর্যন্ত 48 টি উত্তর আছে (কিছু মুছে ফেলা হয়েছে)। আপনার নতুন কিছু না থাকলে নতুন এক যোগ করবেন না।




ব্যাখ্যা করার জন্য: git add চলমান ডিরেক্টরি থেকে স্টেজিং এলাকা (সূচী) থেকে পরিবর্তনগুলি পরিবর্তন করে।

এই প্রক্রিয়া স্টেজিং বলা হয়। সুতরাং পরিবর্তনগুলি (পরিবর্তিত ফাইল) পর্যায়ক্রমে সর্বাধিক প্রাকৃতিক কমান্ডটি হল:

git stage

git add git stage জন্য git stage টাইপ করা একটি সহজ

দু: খ নেই কোন git unstage না git unadd কমান্ড আছে। প্রাসঙ্গিক এক অনুমান বা মনে কঠিন, কিন্তু বেশ স্পষ্ট:

git reset HEAD --

আমরা সহজেই এই জন্য একটি উপনাম তৈরি করতে পারেন:

git config --global alias.unadd 'reset HEAD --'
git config --global alias.unstage 'reset HEAD --'

এবং অবশেষে, আমাদের নতুন কমান্ড আছে:

git add file1
git stage file2
git unadd file2
git unstage file1

ব্যক্তিগতভাবে আমি এমনকি ছোট aliases ব্যবহার:

git a #for staging
git u #for unstaging



git rm --cached . -r

আপনি আপনার বর্তমান ডিরেক্টরি থেকে ক্রমাগত যোগ করেছেন সবকিছু "আন-যোগ করুন" হবে




Git কল্পনাযোগ্য প্রতিটি কর্মের জন্য কমান্ড আছে, তবে সঠিক জিনিসগুলি পেতে ব্যাপক জ্ঞান প্রয়োজন এবং এর ফলে এটি সেরা-পাল্টা-জ্ঞানীয় ...

আপনি আগে কি করেছেন:

  • একটি ফাইল পরিবর্তন এবং ব্যবহৃত git add . , অথবা git add <file>

তুমি কি চাও:

  • সূচী থেকে ফাইল সরান, কিন্তু এটি সংস্করণ রাখা এবং কাজ অনুলিপি মধ্যে অসামান্য পরিবর্তন সঙ্গে বামে:

    git reset head <file>
    
  • HEAD থেকে শেষ অবস্থাতে ফাইলটি পুনরায় সেট করুন, পরিবর্তনগুলি পূর্বাবস্থায় ফিরিয়ে আনুন এবং সূচী থেকে তাদের সরান:

    # Think `svn revert <file>` IIRC.
    git reset HEAD <file>
    git checkout <file>
    
    # If you have a `<branch>` named like `<file>`, use:
    git checkout -- <file>
    

    এই git reset --hard HEAD থেকে প্রয়োজন হয় - git reset --hard HEAD একক ফাইলের সাথে কাজ করবে না।

  • <file> সূচী এবং সংস্করণ থেকে সরান, আন-সংস্করণযুক্ত ফাইলটি অনুলিপি করা অনুলিপি অনুলিপি করে:

    git rm --cached <file>
    
  • <file> মুছে ফেলার কাজ এবং সংস্করণ সম্পূর্ণরূপে সরান:

    git rm <file>
    



ইতিমধ্যে যোগ করা একটি ফাইল পূর্বাবস্থায় ফিরিয়ে আনুন যেটি ইতিমধ্যে যোগ করা myfile.txt পুনরায় সেট করার জন্য, git ব্যবহার করে বেশ সহজ।

git reset HEAD myfile.txt

ব্যাখ্যা করা:

আপনি অবাঞ্ছিত ফাইল (গুলি) পরিচালনা করার পরে, পূর্বাবস্থায় ফিরিয়ে আনতে, আপনি git reset করতে পারেন, Head স্থানীয় আপনার ফাইলের প্রধান এবং শেষ প্যারামিটারটি আপনার ফাইলের নাম।

আমি আপনার জন্য আরও বিশদে নীচের চিত্রটিতে পদক্ষেপগুলি তৈরি করেছি, এই ক্ষেত্রে যা ঘটতে পারে তা সহ:




অন্যান্য উত্তর হিসাবে আপনি git reset ব্যবহার করতে পারেন

কিন্তু:

আমি এই দুর্দান্ত সামান্য পোস্টটি পেয়েছি যা আসলে Git git unadd জন্য Git কমান্ড (ভাল একটি git unadd ) যোগ করে: বিস্তারিত জানার জন্য git unadd দেখুন।

কেবল,

git config --global alias.unadd "reset HEAD"

এখন তুমি পার

git unadd foo.txt bar.txt



আপনার আসন্ন কমিটি থেকে শুধু যোগ করা ফাইল মুছে ফেলার জন্য git add -i ব্যবহার git add -i । উদাহরণ:

আপনি না চান ফাইল যোগ করা:

$ git add foo
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   foo
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
# [...]#

আপনার যোগটি পূর্বাবস্থায় ফিরিয়ে আনতে ইন্টারেক্টিভ যোগে যান (এখানে জিট এ টাইপ করা কমান্ডগুলি "r" (বিপরীত), "1" (তালিকার প্রত্যাবর্তন শোতে প্রথম এন্ট্রি), রিভার্ট মোড থেকে বাদ দেওয়ার জন্য 'প্রত্যাবর্তন' এবং "q" (প্রস্থান করার):

$ git add -i
           staged     unstaged path
  1:        +1/-0      nothing foo

*** Commands ***
  1: [s]tatus     2: [u]pdate     3: [r]evert     4: [a]dd untracked
  5: [p]atch      6: [d]iff       7: [q]uit       8: [h]elp
What now> r
           staged     unstaged path
  1:        +1/-0      nothing [f]oo
Revert>> 1
           staged     unstaged path
* 1:        +1/-0      nothing [f]oo
Revert>> 
note: foo is untracked now.
reverted one path

*** Commands ***
  1: [s]tatus     2: [u]pdate     3: [r]evert     4: [a]dd untracked
  5: [p]atch      6: [d]iff       7: [q]uit       8: [h]elp
What now> q
Bye.
$

এটাই! এখানে আপনার প্রমাণ রয়েছে, যে দেখাচ্ছে যে "foo" অট্যাকড তালিকাতে ফিরে এসেছে:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
# [...]
#       foo
nothing added to commit but untracked files present (use "git add" to track)
$



আপনি আপনার প্রশ্ন পোস্ট করার পরে সম্ভবত Git উন্নত হয়েছে।

$> git --version
git version 1.6.2.1

এখন, আপনি চেষ্টা করতে পারেন:

git reset HEAD .

এই আপনি খুঁজছেন কি হতে হবে।




স্টেজিং এলাকা থেকে (এবং শুধুমাত্র একটি নতুন ফাইলের ক্ষেত্রে) নতুন ফাইলগুলি সরাতে, যেমন প্রস্তাবিত:

git rm --cached FILE

আরএম ব্যবহার করুন - দুর্ঘটনাক্রমে নতুন ফাইলের জন্য ক্যাশেড।




* একাধিক ফাইল হ্যান্ডেল করতে * কমান্ড ব্যবহার করুন

git reset HEAD *.prj
git reset HEAD *.bmp
git reset HEAD *gdb*

ইত্যাদি




ধরুন আমি একটি নতুন ফাইল newFile.txt তৈরি করি।

ধরুন আমি ফাইলটি দুর্ঘটনাক্রমে যুক্ত করেছি, git add newFile.txt

এখন আমি এই Add পূর্বাবস্থায় ফিরিয়ে আনতে চাই, commit করার আগে, git reset newFile.txt




এই কমান্ডটি আপনার পরিবর্তনগুলি আনস্টশ করবে:

git reset HEAD filename.txt

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

git add -p 

ফাইল অংশ যোগ করতে।




আমি অবাক হচ্ছি যে কেউ ইন্টারেক্টিভ মোড উল্লেখ করে না:

git add -i

আন আনুন ফাইল 3 যোগ করুন। আমার ক্ষেত্রে আমি প্রায়শই একাধিক ফাইল যুক্ত করতে চাই, ইন্টারেক্টিভ মোড সহ আপনি ফাইল যোগ করার জন্য এইরকম সংখ্যা ব্যবহার করতে পারেন। এই সব নিতে হবে 4: 1,2,3,5

একটি ক্রম নির্বাচন করতে 1 থেকে 5 পর্যন্ত সবগুলি নিতে 1-5 টাইপ করুন।

Git স্টেজিং ফাইল




git add myfile.txt # এই প্রতিশ্রুতিবদ্ধ তালিকা হতে আপনার ফাইল যোগ করা হবে

এই কমান্ডের বিপরীতে বিপরীত,

git reset HEAD myfile.txt  # this will undo it. 

সুতরাং, আপনি পূর্ববর্তী অবস্থায় হতে হবে। উল্লিখিত তালিকা আবার হবে (পূর্ববর্তী রাষ্ট্র)।

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




SourceTree এ আপনি GUI এর মাধ্যমে সহজে এটি করতে পারেন। আপনি কোন ফাইলটিকে অস্টেজ করার জন্য sourcetree ব্যবহার করে তা পরীক্ষা করতে পারেন।

আমি একটি নতুন ফাইল তৈরি এবং জিট এটি যোগ করা। তারপর আমি SourceTree Gui ব্যবহার করে এটি unstaged। এই ফলাফল:

Unstaging ফাইল [08/12/15 10:43]
git -c diff.mnemonicprefix = false -c core.quotepath = false -c credential.helper = sourcetree reset -q - path / to / file / filename.java

SourceTree resetনতুন ফাইল unstage ব্যবহার করে।




Related