গিটকে আপনার পরিবর্তনগুলি প্যাচ হিসাবে বিবেচনা করার জন্য ট্রিক করে আপনি গিটকে আপনার জন্য শ্বেত স্থান ঠিক করতে গিটকে চালিত করতে পারেন। "প্রাক কমিট হুক" সমাধানগুলির বিপরীতে, এই সমাধানগুলি গিটকে হোয়াইটস্পেস-ফিক্সিং কমান্ড যুক্ত করে।
হ্যাঁ, এগুলি হ্যাকস।
শক্ত সমাধান
নিম্নলিখিত গিট এলিয়াসগুলি আমার~/.gitconfig
কাছ থেকে নেওয়া হয়েছে
।
"মজবুত" দ্বারা আমি বোঝাতে চাইছি গাছ বা সূচকটি নোংরা কিনা তা বিবেচনা না করেই এই এলিয়াসগুলি ত্রুটি ছাড়াই চালিত হয় doing তবে কোনও ইন্টারেক্টিভ git rebase -i
ইতিমধ্যে প্রগতিতে থাকলে তারা কাজ করে না ; আপনি যদি এই কোণার কেসটির বিষয়ে চিন্তা করেন তবে অতিরিক্ত চেকের জন্য আমার~/.gitconfig
দেখুন , যেখানে git add -e
শেষে বর্ণিত কৌশলটি কাজ করা উচিত।
আপনি যদি এগুলি সরাসরি শিটের সাথে চালাতে চান, গিট ওরফে তৈরি না করে, কেবল ডাবল উদ্ধৃতিগুলির মধ্যে সমস্ত কিছু অনুলিপি করুন এবং আটকে দিন (ধরে নিবেন যে আপনার শেলটি বাশের মতো)।
সূচক ঠিক করুন তবে গাছ নয়
নিম্নলিখিত fixws
গিট ওরফে সূচকের সমস্ত সাদা স্পেস ত্রুটিগুলি ঠিক করে তবে কোনওটি স্পর্শ করে না:
# Logic:
#
# The 'git stash save' fails if the tree is clean (instead of
# creating an empty stash :P). So, we only 'stash' and 'pop' if
# the tree is dirty.
#
# The 'git rebase --whitespace=fix HEAD~' throws away the commit
# if it's empty, and adding '--keep-empty' prevents the whitespace
# from being fixed. So, we first check that the index is dirty.
#
# Also:
# - '(! git diff-index --quiet --cached HEAD)' is true (zero) if
# the index is dirty
# - '(! git diff-files --quiet .)' is true if the tree is dirty
#
# The 'rebase --whitespace=fix' trick is from here:
# https://stackoverflow.com/a/19156679/470844
fixws = !"\
if (! git diff-files --quiet .) && \
(! git diff-index --quiet --cached HEAD) ; then \
git commit -m FIXWS_SAVE_INDEX && \
git stash save FIXWS_SAVE_TREE && \
git rebase --whitespace=fix HEAD~ && \
git stash pop && \
git reset --soft HEAD~ ; \
elif (! git diff-index --quiet --cached HEAD) ; then \
git commit -m FIXWS_SAVE_INDEX && \
git rebase --whitespace=fix HEAD~ && \
git reset --soft HEAD~ ; \
fi"
সূচকে যদি আপনার সাদা জায়গার ত্রুটি থাকে তবে তার git fixws
আগে চালানো ধারণা git commit
।
সূচক এবং গাছ ঠিক করুন
নিম্নলিখিত fixws-global-tree-and-index
গিট ওরফে সূচক এবং গাছের সমস্ত সাদা স্পেস ত্রুটিগুলি ঠিক করেছে, যদি কোনও হয়:
# The different cases are:
# - dirty tree and dirty index
# - dirty tree and clean index
# - clean tree and dirty index
#
# We have to consider separate cases because the 'git rebase
# --whitespace=fix' is not compatible with empty commits (adding
# '--keep-empty' makes Git not fix the whitespace :P).
fixws-global-tree-and-index = !"\
if (! git diff-files --quiet .) && \
(! git diff-index --quiet --cached HEAD) ; then \
git commit -m FIXWS_SAVE_INDEX && \
git add -u :/ && \
git commit -m FIXWS_SAVE_TREE && \
git rebase --whitespace=fix HEAD~2 && \
git reset HEAD~ && \
git reset --soft HEAD~ ; \
elif (! git diff-files --quiet .) ; then \
git add -u :/ && \
git commit -m FIXWS_SAVE_TREE && \
git rebase --whitespace=fix HEAD~ && \
git reset HEAD~ ; \
elif (! git diff-index --quiet --cached HEAD) ; then \
git commit -m FIXWS_SAVE_INDEX && \
git rebase --whitespace=fix HEAD~ && \
git reset --soft HEAD~ ; \
fi"
রূপান্তরিত ফাইলগুলিতে হোয়াইটস্পেস ঠিক করতে, করুন
git add --intent-to-add <unversioned files> && git fixws-global-tree-and-index
সহজ তবে দৃust় সমাধান নয়
এই সংস্করণগুলি অনুলিপি করা এবং আটকানো সহজ, তবে যদি তাদের পার্শ্ব শর্ত পূরণ না হয় তবে তারা সঠিক কাজটি করে না।
বর্তমান ডিরেক্টরিতে মূলযুক্ত উপ-গাছটি ঠিক করুন (তবে খালি না থাকলে সূচকটি পুনরায় সেট করুন)
git add -e
পরিচয় সম্পাদক সহ প্যাচগুলি "সম্পাদনা" করতে ব্যবহার করা :
:
(export GIT_EDITOR=: && git -c apply.whitespace=fix add -ue .) && git checkout . && git reset
সূচক ঠিক করুন এবং সংরক্ষণ করুন (তবে গাছটি নোংরা বা সূচক খালি থাকলে ব্যর্থ হয়)
git commit -m TEMP && git rebase --whitespace=fix HEAD~ && git reset --soft HEAD~
গাছ এবং সূচি ঠিক করুন (তবে খালি না থাকলে সূচি পুনরায় সেট করুন)
git add -u :/ && git commit -m TEMP && git rebase --whitespace=fix HEAD~ && git reset HEAD~
এর ব্যাখ্যা export GIT_EDITOR=: && git -c apply.whitespace=fix add -ue .
কৌতুক
এই উত্তরটি সম্পর্কে git rebase --whitespace=fix
কৌশলটি জানার আগে আমি সর্বত্র আরও জটিল কৌশল ব্যবহার করছিলাম ।git add
যদি আমরা এটি ম্যানুয়ালি করি:
সেট apply.whitespace
করুন fix
(আপনাকে কেবল এটি একবার করতে হবে):
git config apply.whitespace fix
এটি গিটকে প্যাচগুলিতে সাদা স্থান ঠিক করতে বলে ।
আপনার পরিবর্তনগুলি প্যাচ হিসাবে বিবেচনা করার জন্য গিটকে রাজি করুন :
git add -up .
হিট a+ + enterপ্রতিটি ফাইলের জন্য সমস্ত পরিবর্তন নির্বাচন করতে। গিট আপনার সাদা স্থান ত্রুটিগুলি ঠিক করার বিষয়ে একটি সতর্কতা পাবেন।
( git -c color.ui=auto diff
এই মুহুর্তে আপনার অ-সূচিযুক্ত পরিবর্তনগুলি ঠিক হোয়াইটস্পেসের ত্রুটিগুলি প্রকাশ করে)।
আপনার কার্যকরী অনুলিপি থেকে হোয়াইটস্পেস ত্রুটিগুলি সরান:
git checkout .
আপনার পরিবর্তনগুলি ফিরিয়ে আনুন (আপনি যদি এটি সম্পাদন করতে প্রস্তুত না হন):
git reset
GIT_EDITOR=:
কোনো পদ্ধতি ব্যবহার করার জন্য :
সম্পাদক হিসেবে, এবং একটি কমান্ড হিসাবে
:
পরিচয়।