গিট সংস্করণ নিয়ন্ত্রণ ব্যবহার করে কেবল কোনও ফাইলের অনুমতি আপডেট করা এবং প্রতিশ্রুতিবদ্ধ


187

সবেমাত্র একটি some.shফাইলকে এক্সিকিউটেবল ( chmod 755 ...) রূপান্তরিত করে , অনুমতিগুলি আপডেট হয়েছিল তবে সামগ্রীটি নয়। সেখানে একটি উপায় আছে কি কমিট Git মধ্যে ফাইল, যাতে এক্সিকিউটেবল বিট পুনরুদ্ধার করা হবে / উপর সেট ক্লোন / চেকআউট / টান ?

আপডেট: আমি কীভাবে ট্র্যাক করব যে নতুন অনুমতি জমা দেওয়া হয়েছিল github?

উত্তর:


190

ডিফল্টরূপে, গিট ফাইলগুলির অনুমতিগুলি সম্পাদন করে তবে তা সম্পাদন করে। এটি অন্য কোনও অনুমতি পরিবর্তন বা ট্র্যাক করবে না।

এক্সিকিউট এক্সিকিউটিভ করার সময় আপনি যদি কোনও পরিবর্তন দেখতে না পান তবে আপনার সম্ভবত সম্ভবত গিটতে একটি কনফিগারেশন রয়েছে যা ফাইল মোড উপেক্ষা করে।

আপনার প্রকল্পের .gitজন্য, configফাইলের ফোল্ডারে দেখুন এবং আপনার এমন কিছু দেখা উচিত:

[core]
    filemode = false

আপনি এটি trueআপনার পছন্দের পাঠ্য সম্পাদক এ পরিবর্তন করতে পারেন , বা চালাতে পারেন:

git config core.filemode true

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


ধন্যবাদ! আমি কীভাবে ট্র্যাক করতে পারি যে অনুমতি পরিবর্তনগুলি জমা দেওয়া হয়েছিল github?
ব্রেকপ্রেইক

2
আপনি এটি দেখতে পাবেন যখন আপনি কোনও ফাইল দেখেন (উদাহরণস্বরূপ, রেলস গিটিগনোর ফাইলে , আপনি ফাইলের অনুমতি হিসাবে 100644 পাবেন)
ভিনসেন্ট বি


38
এই উত্তরটি ভুল! গিট কেবলমাত্র কোনও ফাইল সম্পাদনযোগ্য কিনা তা ট্র্যাক করে। এটি লিখিত বা পঠনযোগ্য যেমন অন্য ফাইল অনুমতি ট্র্যাক করে না। আরও পড়ার জন্য স্ট্যাকওভারফ্লো . com/a/11231682/2311074 পড়ুন ।
আদম

আমার জন্য ওয়েবস্টর্ম পরিবর্তনটি ধরেনি, তবে এর মধ্যে git statusআমি পরিবর্তনগুলি দেখতে পাচ্ছি ..
টাউনশিরিফ

192

@ FooMonster নিবন্ধটি আমার পক্ষে কাজ করেছে

# git ls-tree HEAD
100644 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe    script.sh

আপনি দেখতে পাচ্ছেন যে ফাইলটির 644 অনুমতি রয়েছে (100 টি উপেক্ষা করে)। আমরা এটি 755 এ পরিবর্তন করতে চাই:

# git update-index --chmod=+x script.sh

পরিবর্তন প্রতিশ্রুতিবদ্ধ

# git commit -m "Changing file permissions"
[master 77b171e] Changing file permissions
0 files changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 script.sh

7
এটি লক্ষ করা উচিত যে আপনাকে আসলে '-x / + x' ব্যবহার করতে হবে। আপনি অন্য কোনও অনুমতি বা বিটমাস্ক সেট করতে পারবেন না।
ডিভলাস

নোট ব্যবহার করে git commit -aআমার পক্ষে কিছু হয়নি, তবে কমান্ড লাইনে বার্তা নির্ধারণ করিয়েছিল। একটি
বিস্ময়কর

কমান্ডের আদেশটি হওয়া উচিত: # git update-index --chmod=+x script.sh # git ls-tree HEAD # git commit -m "Changing file permissions" # git push
সাইমনডেপেলচিন

29

আমার জন্য কাজ করছে না।

মোডটি সত্য, ফাইল পারমস পরিবর্তন করা হয়েছে, তবে গিট বলেছে যে করার কোনও কাজ নেই।

git init
git add dir/file
chmod 440 dir/file
git commit -a

সমস্যাটি মনে হচ্ছে গিটটি কেবলমাত্র কিছু নির্দিষ্ট অনুমতি পরিবর্তনকে স্বীকৃতি দেয়।


51
সঠিক - gitসত্যিকার অর্থে কেবল কোনও ফাইল এক্সিকিউটেবল হয় কি না, * নিক্স অনুমতিগুলির সম্পূর্ণ সেট নয় tra সুতরাং আপনাকে
নির্বাহযোগ্য

আমি স্পষ্ট যে ডকুমেন্টেশনটি পাইনি: ক্রিয়া-পরবর্তী ট্রিগার আমি সেই অনুযায়ী পার্ম সেট করতে সম্ভবত ব্যবহার করতে পারি?
ওথিয়াস

2
ঠিক আছে, একটি post-checkoutহুক ইন আছে git, যা কিছু ক্ষেত্রে কভার করবে, তবে আমি নিশ্চিত নই যে এটি আপনার ওয়ার্কট্রিতে ফাইল আপডেট করে এমন সমস্ত সম্ভাব্য জিনিসকে কভার করে কিনা। আপনার রেপোতে কেবল অতিরিক্ত শেল স্ক্রিপ্ট থাকা ভাল যা আপনি সেই অনুযায়ী জিনিসগুলি সেট করে। বিকল্পভাবে, সেখানে বেশ কয়েকটি প্রকল্প রয়েছে যা gitমেটাডেটা সংরক্ষণের জন্য বৃদ্ধি করেছে, তবে আমি সত্যিই তাদের
কোনওটিই

1
আমি ফাইলের অনুমতিগুলি 777 এ পরিবর্তন করেছি এবং করেছি git update-index --refresh, তবে ভিন্নতা দেখায় old mode 100644 new mode 100755। এটি সমস্ত অনুমতিগুলি আপডেট করেনি
হুডাক

@tishma উত্তর এখানে দেখতে stackoverflow.com/questions/14557106/... । এটি আমার জন্য কাজ করেছিল
gary69
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.