কোনও gitকমান্ড চালিয়ে এবং এর প্রস্থান কোডটি পরীক্ষা করে কোনও ফাইলকে ট্র্যাক করা হচ্ছে কিনা তা বলার উপায় আছে ?
অন্য কথায়: গিট একটি ফাইল ট্র্যাক করছে?
কোনও gitকমান্ড চালিয়ে এবং এর প্রস্থান কোডটি পরীক্ষা করে কোনও ফাইলকে ট্র্যাক করা হচ্ছে কিনা তা বলার উপায় আছে ?
অন্য কথায়: গিট একটি ফাইল ট্র্যাক করছে?
উত্তর:
চেষ্টা করে দেখুন:
git ls-files --error-unmatch <file name>
ফাইল ট্র্যাক না করা থাকলে 1 দিয়ে প্রস্থান করবে
--error-unmatch বিকল্পটি রাখা দরকার । কোনওভাবে বিকল্পটি কেবল ফাইলের নামগুলিতে প্রয়োগ করা হয় যা এটি অনুসরণ করে।
--) উপস্থিত হওয়ার পরে --error-unmatchএকে অন্য একটি (সূচীতে নয়) ফাইলনাম হিসাবে গণ্য করা হয় এবং এর কোনও প্রভাব নেই।
git ls-files | grep <PATTERN>? উদাহরণ:git ls-files | grep Main.h
আপনি যদি ত্রুটি বার্তাগুলি সহ আপনার কনসোলকে বিশৃঙ্খলা করতে না চান তবে আপনি চালাতেও পারেন
git ls-files file_name
এবং তারপরে ফলাফলটি পরীক্ষা করুন। যদি গিট কিছু না দেয় তবে ফাইলটি ট্র্যাক করা যায় না। যদি এটি ট্র্যাক করা হয়, গিট ফাইলের পথটি ফিরিয়ে দেবে।
আপনি যদি এটি কোনও স্ক্রিপ্টে সংযুক্ত করতে চান তবে এটি কার্যকর হবে, উদাহরণস্বরূপ পাওয়ারশেল:
$gitResult = (git ls-files $_) | out-string
if ($gitResult.length -ne 0)
{
## do stuff with the tracked file
}
file_nameহয় একটি সঠিক ম্যাচ হওয়া উচিত (পুরো পাথ + ফাইলের নাম) তবে ওয়াইল্ডকার্ডের সাথে এটি ব্যবহার করা যেতে পারে:git ls-files *foo.rb
সম্পাদনা
আপনার যদি বাশ থেকে গিট ব্যবহার করতে হয় তবে এতে --porcelainবিকল্প রয়েছে git status:
--porcelain
স্ক্রিপ্টগুলির জন্য আউটপুটটিকে একটি স্থিতিশীল, সহজে-পার্সে ফর্ম্যাটটিতে দিন। বর্তমানে এটি - শর্ট আউটপুটের অনুরূপ, তবে এটি স্ক্রিপ্টগুলির জন্য নিরাপদ করে ভবিষ্যতে পরিবর্তন না করার গ্যারান্টিযুক্ত।
আউটপুট এর মতো দেখাচ্ছে:
> git status --porcelain
M starthudson.sh
?? bla
অথবা আপনি যদি একবারে কেবল একটি ফাইল করেন:
> git status --porcelain bla
?? bla
মূল
একটি করুন:
git status
কোন ফাইল আপডেট করা হয়েছে এবং কোনটি তালিকাহীন নয় তা উল্লেখ করে আপনি প্রতিবেদনটি দেখতে পাবেন।
আপনি দেখতে পাচ্ছেন bla.shযে ট্র্যাক এবং সংশোধিত এবং newblaট্র্যাক করা হয়নি:
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# modified: bla.sh
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# newbla
no changes added to commit (use "git add" and/or "git commit -a")
git status --porcelainআপনার লিপিটি যদি আউটপুট পার্স করতে হয় তবে আপনার লিঙ্কযুক্ত ডকটি দেখুন এটিতে কিছু অন্যান্য দরকারী বিকল্প দেখা যাবে
git status --porcelain error: unknown option চীনামাটির
git statusফাইল চালানোর চেষ্টা করুন। গিট দ্বারা ট্র্যাক না করা থাকলে এটি একটি ত্রুটি মুদ্রণ করবে
PS$> git status foo.txt
error: pathspec 'foo.txt' did not match any file(s) known to git.
git status trackedfileচালিয়ে গেলে আমি প্রস্থান কোড 1 পাই (আশা করি 0 কার্যকর হবে) তবে এটি আমাকে আউটপুটে "ত্রুটি:" দেয় না। আমি স্ট্রিং আউটপুট চেয়ে একটি প্রস্থান কোড পার্স করব।
.gitignore
$ git status notthere:On branch master nothing to commit, working directory clean
আমি কোনও গিট কমান্ড সম্পর্কে জানি না যা "খারাপ" প্রস্থান কোড দেয় তবে এটি করার সহজ উপায় বলে মনে হয় এটি একটি গিট কমান্ড ব্যবহার করা যা কোনও ফাইলকে ট্র্যাক করে না এমন আউটপুট দেয় না যেমন, গিট-লগ বা গিট-এলএস-ফাইল। এইভাবে আপনাকে কোনও পার্সিং করতে হবে না, আপনি গ্রেপের মতো অন্য একটি সহজ ইউটিলিটি দিয়ে এটি চালাতে পারেন কোনও আউটপুট রয়েছে কিনা তা দেখার জন্য।
উদাহরণ স্বরূপ,
git-ls-file test_file.c | গ্রেপ
ফাইলটি ট্র্যাক করা থাকলে একটি শূন্য কোড সহ প্রস্থান করবে, তবে যদি ফাইলটি ট্র্যাক না করা হয় তবে তার একটির প্রস্থান কোড।
আমি আপনাকে একটি কাস্টম ওরফে পরামর্শ দিচ্ছি .gitconfig।
আপনাকে করতে হবে:
1) গিট কমান্ড সহ:
git config --global alias.check-file <command>
2) সম্পাদনা করুন ~/.gitconfigএবং উপন্যাস বিভাগে এই লাইনটি যুক্ত করুন:
[alias]
check-file = "!f() { if [ $# -eq 0 ]; then echo 'Filename missing!'; else tracked=$(git ls-files ${1}); if [[ -z ${tracked} ]]; then echo 'File not tracked'; else echo 'File tracked'; fi; fi; }; f"
একবার কমান্ড (1) বা সেভ করা ফাইল (2) চালু করার পরে, আপনার কর্মক্ষেত্রে আপনি এটি পরীক্ষা করতে পারেন:
$ git check-file
$ Filename missing
$ git check-file README.md
$ File tracked
$ git check-file foo
$ File not tracked
ব্যবহার করে git logএই সম্পর্কে তথ্য দিতে হবে। যদি গিটটিতে ফাইলটি ট্র্যাক করা হয় তবে কমান্ডটি কিছু ফলাফল (লগ) দেখায়। অন্যথায় এটি খালি।
উদাহরণস্বরূপ, যদি ফাইলটি গিট ট্র্যাক করা হয়,
root@user-ubuntu:~/project-repo-directory# git log src/../somefile.js
commit ad9180b772d5c64dcd79a6cbb9487bd2ef08cbfc
Author: User <someone@somedomain.com>
Date: Mon Feb 20 07:45:04 2017 -0600
fix eslint indentation errors
....
....
যদি ফাইলটি গিট ট্র্যাক না করা হয়,
root@user-ubuntu:~/project-repo-directory# git log src/../somefile.js
root@user-ubuntu:~/project-repo-directory#
শুধু আমার দুটি সেন্ট:
git ls-files | grep -x relative/path
যেখানে স্বতঃ-সমাপ্তি শেলের মধ্যে relative/pathচাপ দিয়ে সহজেই নির্ধারণ করা যায় tab। | wc -l 1 বা 0 আউটপুট পেতে অতিরিক্ত যুক্ত করুন ।
grepবিকল্প যুক্ত করা উচিত --fixed-strings।