আপডেট : ওপি ড্যানিয়েল Stutzbach তুলে ধরে মন্তব্য করে এই সহজ কমান্ড git diff-indexতার জন্য কাজ করেন:
git update-index --refresh
git diff-index --quiet HEAD --
( নরঙ্গোন মন্তব্যগুলিতে উল্লেখ করেছে যে, যদি এমন ফাইলগুলি থাকে যা স্পর্শ করা হয়েছে, তবে যাঁর বিষয়বস্তু সূচকের মতো একই, তবে আপনাকে git update-index --refreshআগে চালানো দরকার git diff-index, অন্যথায় diff-indexভুলভাবে গাছটি নোংরা বলে জানাবেন)
তারপরে আপনি " কমান্ডটি সফল হয়েছে কিনা তা কীভাবে পরীক্ষা করবেন? " আপনি যদি এটি কোনও ব্যাশ স্ক্রিপ্টে ব্যবহার করছেন তা দেখতে পাবেন:
git diff-index --quiet HEAD -- || echo "untracked"; // do something about it
দ্রষ্টব্য: অ্যান্টনি সটাইল মন্তব্য করেছেন
git diff-index HEAD ...কোনও শাখায় ব্যর্থ হবে যার কোন কমিট নেই (যেমন একটি নতুন আরম্ভিত সংগ্রহস্থল)।
আমি খুঁজে পেয়েছি একটি কাজgit diff-index $(git write-tree) ...
আর haridsvআউট পয়েন্ট মন্তব্যের যে git diff-filesএকটি উপর নতুন ফাইলটি একটি পরিবর্তন যেমন শনাক্ত করতে পারেনি।
নিরাপদ পদ্ধতির মাধ্যমে মনে হয় git addপ্রথমে ফাইলটি চালাবেন এবং তারপরে git diff-indexচালানোর আগে সূচিতে কিছু যুক্ত হয়েছে কিনা তা ব্যবহার করুন git commit।
git add ${file_args} && \
git diff-index --cached --quiet HEAD || git commit -m '${commit_msg}'
এবং মন্তব্যে 6502 রিপোর্ট:
আমি যে সমস্যার মুখোমুখি হয়েছি git diff-indexতা হ'ল যে পার্থক্য রয়েছে যখন ফাইলগুলির টাইমস্ট্যাম্প ব্যতীত আর কিছুই নেই। একবার
চালানো git diffসমস্যার সমাধান করে (আশ্চর্যজনকভাবে যথেষ্ট, git diffআসলে এখানে স্যান্ডবক্সের সামগ্রী পরিবর্তন করে .git/index)
এই টাইমস্ট্যাম্প সমস্যাগুলিও ঘটতে পারে যদি গিটটি ডকারে চলমান থাকে ।
আসল উত্তর:
"প্রোগ্রাম্যমেটিক্যালি" অর্থ কখনই চীনামাটির বাসন কমান্ডগুলির উপর নির্ভর করবেন না ।
সর্বদা নদীর গভীরতানির্ণয় আদেশের উপর নির্ভর করুন ।
বিকল্পগুলির (" পছন্দসইgit status --porcelain ) জন্য" ময়লা সূচক বা গিটের সাথে তালাবিহীন ফাইলগুলি পরীক্ষা করা "দেখুন
আমরা নতুন " require_clean_work_treeফাংশন " থেকে অনুপ্রেরণা নিতে পারি যা আমরা কথা বলেছি ;) (অক্টোবর ২০১০ এর প্রথম দিকে)
require_clean_work_tree () {
# Update the index
git update-index -q --ignore-submodules --refresh
err=0
# Disallow unstaged changes in the working tree
if ! git diff-files --quiet --ignore-submodules --
then
echo >&2 "cannot $1: you have unstaged changes."
git diff-files --name-status -r --ignore-submodules -- >&2
err=1
fi
# Disallow uncommitted changes in the index
if ! git diff-index --cached --quiet HEAD --ignore-submodules --
then
echo >&2 "cannot $1: your index contains uncommitted changes."
git diff-index --cached --name-status -r --ignore-submodules HEAD -- >&2
err=1
fi
if [ $err = 1 ]
then
echo >&2 "Please commit or stash them."
exit 1
fi
}