কীভাবে গিটে থাকা ফাইলগুলি অপ্রচলিত করবেন?


110

আমি একটি শাখায় কাজ করছি, "পরীক্ষামূলক" শাখাটি বলুন যা আমি আমার মাস্টার শাখা থেকে শাখা করেছি hen এর পরে, আমি পরীক্ষামূলক শাখায় একটি ব্যবহারকারী মডেল তৈরি করি, তবে সেগুলি এখনও সূচকে যুক্ত করে না।

আমি সম্প্রতি আমার পরীক্ষামূলক শাখায় যুক্ত হওয়া ফাইলগুলির সমস্ত পরিবর্তনগুলি বাতিল করতে চাইলে আমাকে কী করতে হবে? তালিকাভুক্ত ফাইলগুলি নীচে হিসাবে তালিকাভুক্ত করা হয়েছে:

$ git status
 On branch new_chick
 Untracked files:
   (use "git add <file>..." to include in what will be committed)

       .project
       app/models/user.rb
       db/migrate/
       test/fixtures/users.yml
       test/unit/user_test.rb

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

কেউ দয়া করে আমার উপর কিছু আলোকপাত করবেন?


উত্তর:


220

ট্রেড করা ফাইল / ডিরেক্টরিগুলি অপসারণ করতে করুন:

git clean -fdx

-ফ - বল

-d - ডিরেক্টরিগুলিও

-x - উপেক্ষা করা ফাইলগুলিও সরান (আপনি যদি উপেক্ষা করা ফাইলগুলি মুছতে না চান তবে এটি ব্যবহার করবেন না)


54
প্রথমে প্রাকদর্শন করতে অ্যাড যোগ করুন যাতে আপনি দুর্ঘটনাক্রমে
স্টাফগুলি

8
এটা অসাধারণ! ব্যতীত এটি কনফিগারেশন ফাইলগুলিও সরিয়ে ফেলবে যা আপনি ইচ্ছাকৃতভাবে .gitignore এ উপেক্ষা করেছেন তবে আপনার স্থানীয় বিকাশের পরিবেশের জন্য এখনও প্রয়োজন। ইন্টারেক্টিভ মোডের জন্য আপনি অতিরিক্ত -i এর সাথে একই কমান্ডটি ব্যবহার করতে পারেন যেমন: গিট ক্লিন -fdxi এবং এটি আপনাকে অনুরোধ করবে যে কোন ফাইলগুলি মুছতে চান।
মোয়াবডল

5
এটি দুর্দান্ত, তবে আপনি ব্যবহারকারীদের সতর্কতার -xসাথে ব্যবহার করতে একটি বিজ্ঞপ্তি যুক্ত করতে চাইতে পারেন কারণ এটি স্থায়ীভাবে ফাইলগুলি মুছবে। অথবা সঙ্গে ব্যবহার -nযেমন দ্বারা @Druska উল্লিখিত
lacostenycoder

3
ব্যবহৃত না -xএখনো .project এবং অন্যান্য কনফিগ ফাইল মুছে ফেলা হয়েছে। সর্বশেষ কমিট থেকে নতুন ডিরেক্টরিতে রেপো টানতে হয়েছিল।
সময়কর্মী

2
আমি মনে করি আপনাকে জানাতে হবে যে এই আদেশটি সম্ভাব্য বিপজ্জনক কারণ এটি ওয়ান্টেড ফাইলগুলি সরাতে পারে !!!
ডেভিড

20

ব্যবহারকারী ইন্টারেক্টিভ পদ্ধতির:

git clean -i -fd

Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/amazon/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/s3/ [y/N]? y

-i ইন্টারেক্টিভের জন্য
-f ফোর্স
-d ডিরেক্টরি ডিরেক্টরি
-x উপেক্ষা করা ফাইলগুলির জন্য (প্রয়োজন হলে যোগ করুন)

দ্রষ্টব্য: অ্যাড- এন বা --dry- রান কী করবে তা যাচাই করার জন্য।


17

এগুলি হ'ল অন্রে্যাকড ফাইল। এর অর্থ গিট তাদের ট্র্যাক করছে না। এটি কেবল তাদের তালিকাভুক্ত কারণ তারা গিট উপেক্ষা ফাইলটিতে না in যেহেতু তারা গিট দ্বারা ট্র্যাক হচ্ছে না, git resetতাদের স্পর্শ করবে না।

আপনি যদি সমস্ত চিহ্নবিহীন ফাইল বন্ধ করে দিতে চান তবে সবচেয়ে সহজ উপায় হ'ল git clean -f( git clean -nযদি আপনি কিছু না মুছেই এটি কী ধ্বংস করে দেয় তা দেখতে চাইলে পরিবর্তে ব্যবহার করুন)। অন্যথায়, আপনি নিজের হাতে না চাইলে কেবল ফাইলগুলি মুছতে পারেন।


5

চিহ্নবিহীন ফাইলগুলি মোছার জন্য:

git clean -f

ট্রেড করা ডিরেক্টরিগুলি মুছে ফেলার জন্য, ব্যবহার করুন:

git clean -f -d

কোনও কার্ডিয়াক অ্যারেস্ট প্রতিরোধের জন্য, ব্যবহার করুন

git clean -n -f -d


কোন "কার্ডিয়াক অ্যারেস্ট" 😂😂😂
ঋষি Kulshreshtha

2

আপনি স্থানীয় রেপোর আগের অবস্থায় অন্য উপায়ে ফিরে আসতে পারেন:

  1. স্ট্রেজিং এরিয়াতে অচিহ্নযুক্ত ফাইলগুলি যুক্ত করুন git add
  2. এর সাথে স্থানীয় রেপোর আগের অবস্থায় ফিরে আসুন git reset --hard


0

ঠিক আছে, আমি একই সমস্যা ছিল। আমি সর্বশেষে নিয়েছিলাম তবে স্থানীয় কিছু পরিবর্তন হয়েছে যার কারণে কোনও নির্দিষ্ট ফাইলটিতে মার্জটি ঘটছে না। ফাইলটি ট্রেড করা হয়নি এবং আমি তাদের চাইনি তাই আমি যা করলাম তা হ'ল -

it গিট চেকআউট ফাইলপথ / ফাইলের নাম

ফাইলপথ - আমি যেখান থেকে গিট ব্যাশ করেছি। তারপরে আমি সর্বশেষ পরিবর্তনগুলি উপস্থিত ছিলাম


0

git cleanভাল কাজ করার সময় , গিট রেপো পরিষ্কার করার জন্য আমার নিজের স্ক্রিপ্টটি ব্যবহার করা এখনও দরকারী বলে মনে হচ্ছে এর কিছু সুবিধা রয়েছে।

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

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


git_clean.sh


#!/bin/bash
readarray -t -d '' FILES < <(
    git ls-files -z --other --directory |
        grep --null-data --null -v '.bin$\|Cargo.lock$'
)
if [ "$FILES" = "" ]; then
    echo  "Nothing to clean!"
    exit 0
fi

echo "Dirty files:"
printf '  %s\n' "${FILES[@]}"

DO_REMOVE=0
while true; do
    echo ""
    read -p "Remove ${#FILES[@]} files? [y/n]: " choice
    case "$choice" in
        y|Y )
            DO_REMOVE=1
            break ;;
        n|N )
            echo "Exiting!"
            break ;;
        * ) echo "Invalid input, expected [Y/y/N/n]"
            continue ;;
    esac
done

if [ "$DO_REMOVE" -eq 1 ];then
    echo "Removing!"
    for f in "${FILES[@]}"; do
       rm -rfv "$f"
    done
fi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.