আমি কীভাবে আমার গিট এলিয়াসগুলির একটি তালিকা মুদ্রণ করব, বাশ alias
আদেশের সাথে সামঞ্জস্যপূর্ণ কিছু ?
আমি কীভাবে আমার গিট এলিয়াসগুলির একটি তালিকা মুদ্রণ করব, বাশ alias
আদেশের সাথে সামঞ্জস্যপূর্ণ কিছু ?
উত্তর:
এই উত্তরটি উপর তৈরী করে উত্তর দ্বারা জনি । তা প্রযোজ্য যদি আপনি ব্যবহার করছেন না git-alias
থেকে git-extras
।
লিনাক্সে, একবার চালান:
git config --global alias.alias "! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /"
এই নামে একটি স্থায়ী Git ওরফে তৈরি করবে alias
যা আপনার সঞ্চিত পরার ~/.gitconfig
ফাইল। এটি ব্যবহার করা আপনার সমস্ত গিট এলিয়াসগুলি ~/.gitconfig
ফাইলের মতো প্রায় একই বিন্যাসে তালিকাভুক্ত করবে । এটি ব্যবহার করতে, টাইপ করুন:
$ git alias
loga = log --graph --decorate --name-status --all
alias = ! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /
নিম্নলিখিত বিবেচনাগুলি প্রযোজ্য:
alias
উপনামটিকে উপরের তালিকাভুক্ত হওয়া থেকে রোধ করতে | grep -v ^'alias '
ডাবল-কোটের সমাপ্তির ঠিক আগে যুক্ত করুন। আমি এটির প্রস্তাব দিচ্ছি না তাই ব্যবহারকারীরা ভুলে যাবেন না যে কমান্ডটি alias
একটি উপনাম তবে গিটের বৈশিষ্ট্য নয়।
তালিকাভুক্ত উপকরণগুলি বাছাই করতে, | sort
ডাবল-কোটের সমাপ্তির ঠিক আগে যুক্ত করুন। বিকল্পভাবে, আপনি আলাদাভাবে ~/.gitconfig
সাজানো রাখতে পারেন ।
সিস্টেম-প্রশস্ত উপন্যাস হিসাবে উপনাম যুক্ত করতে --global
(বর্তমান ব্যবহারকারীর জন্য) --system
(সমস্ত ব্যবহারকারীর জন্য ) প্রতিস্থাপন করুন । এটি সাধারণত /etc/gitconfig
ফাইলটিতে যায় ।
alias.
প্রতিটি লাইনের শুরুতে পরিত্রাণ পায়
fatal: bad config
। গিট-এক্সট্রা এর সমাধান আমার পক্ষে কাজ করে যদিও: github.com/tj/git-extras/blob/master/bin/git-alias
git config --global alias.alias "! git config --get-regexp ^alias\."
। বিকল্পভাবে, নিশ্চিত করুন git version
যে আপনার গিটের বর্তমান সংস্করণ রয়েছে।
it গিট কনফিগারেশন --get-regexp উপন্যাস
'^alias\.'
git config -e
এবং তারপরে [alias]
বিভাগটি সন্ধান করতে আপনার চোখ ব্যবহার করুন । তবে গিট ভক্তরা সর্বদা তাদের সমস্যাগুলি সমাধান করার জন্য কিছুটা ব্যাশ স্ক্রিপ্টিং বা নিয়মিত অভিব্যক্তি মিলে যায় বলে মনে হয়, এমনকি এটি প্রয়োজনীয় নাও হয় :)
git config -e
.git/config
কেবল ফাইলটি সম্পাদনা করে । তবে আমার বেশিরভাগ এলিয়াস বিশ্বব্যাপী সংজ্ঞায়িত হয়েছে ~/.gitconfig
।
git config --global alias.aliases config --get-regexp '^alias\.'"
... এবং তারপরেgit aliases
"
কোথাও নিখোঁজ রয়েছেন
আমি alias
ঠিক এই উদ্দেশ্যে একটি গিট ওরফে তৈরি করেছি (আশ্চর্যজনকভাবে যথেষ্ট) ... আপনি যদি পর্যাপ্ত পরিমাণে এলিয়াসিং ব্যবহার করেন তবে সময়ে সময়ে সহজ ...
$ git config --global alias.alias "config --get-regexp ^alias\."
দ্রষ্টব্য, রেজেক্স নিশ্চিত করে যে লাইনটি শুরু হয়েছিল alias.
।
--system
পরিবর্তে পরামর্শ দিচ্ছি যে এটির --global
মতো কিছু সিস্টেম পর্যায়ে আরও কার্যকর, কোনও ব্যবহারকারী পর্যায়ে নয়।
alias = config --get-regexp ^alias\\.
।
git config --global alias.alias "!git config --get-regexp ^alias\. | grep -Po '(?<=alias\.)\S*' | sort"
অন্য বিকল্প (বিশুদ্ধরূপে এমন কিছু যা আমি মনে রাখতে সহজ মনে করি):
git config --list | grep alias
alias
এবং তারপরে ভুলেও আপনি এমনকি এটি তৈরি করেছিলেন।
-l
এটির জন্য একটি সুবিধাজনক শর্টকাট হিসাবে ব্যবহার করতে পারেন --list
তবে আমি উপকরণগুলির তালিকা তৈরি করার জন্য একটি উপন্যাস তৈরি করার ধারণাটি পছন্দ করি।
git config --list | grep -E '^alias'
আমি কি 'বাশ স্ক্রিপ্টিং' শুনেছি? ;)
উপরের একটি মন্তব্যে 'প্রয়োজন নেই' অংশ সম্পর্কে, আমি মূলত আমার এলিয়াসগুলির জন্য ওভারভিউয়ের মতো একটি ম্যান পৃষ্ঠা তৈরি করেছি। সব হৈচৈ কেন? এটি কি সম্পূর্ণ ওভারকিল নয়?
পড়তে...
আমি আমার .gitconfig এর মতো কমান্ডগুলি সেট করে রেখেছি, আলাদা করে রেখেছি TAB=TAB:
[alias]
alias1 = foo -x -y --z-option
alias2 = bar -y --z-option --set-something
এবং সংজ্ঞায়িত উপাধিকার TAB=অংশটি গ্রেপ করার জন্য কেবলমাত্র অন্য একটি নাম ব্যবহার করে। (অন্যান্য সমস্ত অপশনে '=' এর সংজ্ঞায়নের আগে এবং পরে ট্যাব নেই, কেবল ফাঁকা জায়গা))
কোনও TAB=====উপনামে যুক্ত করা হয়নি এমন মন্তব্যেও একটি সংযোজন রয়েছে, তাই এগুলি গ্রেপিংয়ের পরে দেখানো হয়।
আরও ভাল দেখার জন্য আমি গ্রেপ আউটপুটটিকে কম মধ্যে পাইপ করছি:
#.gitconfig
[alias]
# use 'git h <command>' for help, use 'git la' to list aliases =====
h = help #... <git-command-in-question>
la = "!grep '\t=' ~/.gitconfig | less"
' \t=
' অংশটি মেলে TAB=।
আমার কী কী এলিয়াস রয়েছে তার আরও ভাল ধারণা পেতে এবং যেহেতু আমি ব্যাশ কনসোল ব্যবহার করেছি, তাই আমি আউটপুটটি টার্মিনাল রঙের সাথে রঙিন করেছি:
la = "!grep '\t=' ~/.gitconfig | sed -e 's/=/^[[0;31m=^[[0m/g' | sed -e 's/#.*/^[[0;32m&^[[0m/g' | less -R"
মূলত উপরের মত একই, আউটপুটটিতে রঙ কোডগুলি পেতে কেবল সেড ব্যবহার যুক্ত করা হয়।
-R
পতাকা কম রং কম দেখানো পেতে প্রয়োজন হয়।
(আমি সম্প্রতি জানতে পেরেছি যে, তাদের উইন্ডোর নীচে একটি স্ক্রোলবারের সাথে লম্বা কমান্ডগুলি মোবাইল ডিভাইসে সঠিকভাবে প্রদর্শিত হয়নি: সেগুলি পাঠ্য কেটে ফেলা হয়েছে এবং স্ক্রোলবারটি সহজেই অনুপস্থিত That এটি এখানে শেষ কোড স্নিপেটের ক্ষেত্রে হতে পারে, এটি এখানে রাখুন যাওয়ার সময় কোড স্নিপেটগুলি দেখার সময় মনে রাখবেন))
আমার প্রয়োজনীয়তা অনুসারে আমার অর্ধেক মাইল এলিয়াস রয়েছে।
এছাড়াও তাদের মধ্যে কিছু সময়ের সাথে পরিবর্তিত হয় , তাই হাতে একটি আপ টু ডেট তালিকা রাখার সর্বোত্তম ধারণার পরে .gitconfig কে পার্স করছে।
একটি। **** সংক্ষিপ্ত **** আমার .gitconfig এলিয়াসস এর অংশ:
# choose =====
a = add #...
aa = add .
ai = add -i
# unchoose =====
rm = rm -r #... unversion and delete
rmc = rm -r --cached #... unversion, but leave in working copy
# do =====
c = commit -m #...
fc = commit -am "fastcommit"
ca = commit -am #...
mc = commit # think 'message-commit'
mca = commit -a
cam = commit --amend -C HEAD # update last commit
# undo =====
r = reset --hard HEAD
rv = revert HEAD
আমার লিনাক্স বা ম্যাক ওয়ার্কস্টেশনগুলিতে .bashrc এর মধ্যে আরও উপাত্ত রয়েছে, যেমন:
#.bashrc
alias g="git"
alias gh="git h"
alias gla="git la"
function gc { git c "$*" } # this is handy, just type 'gc this is my commitmessage' at prompt
এইভাবে টাইপ করার দরকার নেই, প্রয়োজন git help submodule
নেই git h submodule
, gh submodule
সাহায্য পেতে প্রয়োজনীয় সমস্ত কিছুই। এটি কেবল কয়েকটি চরিত্র তবে আপনি কতবার এগুলি টাইপ করেন?
আমি নিম্নলিখিতটি কেবলমাত্র শর্টকাট সহ ব্যবহার করি ...
এটা আমার মাথার উপর থেকে ছিল।
আমাকে প্রায়শই গুই ছাড়াই গিট ব্যবহার করতে হয়, যেহেতু গিটের অনেকগুলি কমান্ড সঠিকভাবে কোনও গ্রাফিকাল সম্মুখভাগে প্রয়োগ করা হয় না। তবে যতবার আমি তাদের ব্যবহারের জন্য রেখেছি, এটি বেশিরভাগ ক্ষেত্রে একই পদ্ধতিতে।
শেষ অনুচ্ছেদে উল্লিখিত 'প্রয়োগ করা হয়নি' অংশে:
আমি এখনও জিইউআইতে এর সাথে তুলনা করার মতো কিছু খুঁজে পেয়েছি:
sba = show-branch --color=always -a --more=10 --no-name
- সমস্ত স্থানীয় এবং দূরবর্তী শাখা পাশাপাশি তাদের মধ্যে
ccm = "!git reset --soft HEAD~ && git commit"
যে কমিট রয়েছে তা দেখান - শেষ প্রতিশ্রুতি বার্তা পরিবর্তন করুন
দৃষ্টিকোণ থেকে এটি আরও সহজ:
আপনি কতবার টাইপ করেন git add .
বা টাইপ করেন git commit -am "..."
? এমনকি বাকীগুলিও গণনা করা
হচ্ছে না ... উইন্ডোজগুলির মতো git aa
বা
বাশ এলিয়াসের সাথে / অথবা / লিনাক্স এবং ম্যাকের মতো কাজ করার জিনিস ...git ca "..."
gaa
g aa
gca "..."
g ca "..."
আমার প্রয়োজনের জন্য এটি যেমন গিট কমান্ডগুলি তৈরি করা একটি স্মার্ট জিনিস বলে মনে হয়েছিল ...
... এবং আরও সহজ ব্যবহারের জন্য আমি কেবল স্বল্প ব্যবহৃত কমান্ডগুলির জন্য নিজেকে সাহায্য করেছি, তাই আমাকে প্রত্যেকবার ম্যান পৃষ্ঠাগুলির সাথে পরামর্শ করতে হবে না। কমান্ডগুলি পূর্বনির্ধারিত এবং তাদের সন্ধান করা যতটা সম্ভব সহজ।
আমি বলতে চাইছি, আমরা সব পরে প্রোগ্রামার? আমাদের প্রয়োজন মতো কাজ করা আমাদের কাজ।
এখানে একটি অতিরিক্ত স্ক্রিনশট দেওয়া আছে, এটি উইন্ডোজটিতে কাজ করে:
la = "!grep '\t=' ~/.gitconfig | less"
TAB
প্রত্যেকেরই পূর্ববর্তী রয়েছে =
? স্পেস দিয়ে এটি কাজ করবে না। আমার উইন্ডোতে .gitconfig
নিজেই ফাঁকা স্থান ছিল , একবার আমি তাদের একক ট্যাবস্টপ দিয়ে প্রতিস্থাপন করলে, সেন্টিমিডি.এক্স.টি প্রত্যাশার মতো আচরণ করে।
অন্যান্য উত্তর হিসাবে উল্লিখিত হিসাবে, git config -l
আপনার কনফিগার ফাইল থেকে আপনার সমস্ত কনফিগারেশন বিশদ তালিকাভুক্ত করে। আমার কনফিগারেশনের জন্য আউটপুটটির আংশিক উদাহরণ এখানে:
...
alias.force=push -f
alias.wd=diff --color-words
alias.shove=push -f
alias.gitignore=!git ls-files -i --exclude-from=.gitignore | xargs git rm --cached
alias.branches=!git remote show origin | grep \w*\s*(new^|tracked) -E
core.repositoryformatversion=0
core.filemode=false
core.bare=false
...
সুতরাং আমরা ব্যবহার করে ওরফে লাইনগুলি গ্রেপ করতে পারি git config -l | grep alias
:
alias.force=push -f
alias.wd=diff --color-words
alias.shove=push -f
alias.gitignore=!git ls-files -i --exclude-from=.gitignore | xargs git rm --cached
alias.branches=!git remote show origin | grep \w*\s*(new^|tracked) -E
আমরা শুধু এই সুন্দর করে তুলতে পারে cut
আউট Ting alias.
এই কমান্ড সঙ্গে আমাদের যাব প্রতিটি লাইনে অংশ:
git config -l | grep alias | cut -c 7-
কোন মুদ্রণ:
force=push -f
wd=diff --color-words
shove=push -f
gitignore=!git ls-files -i --exclude-from=.gitignore | xargs git rm --cached
branches=!git remote show origin | grep \w*\s*(new^|tracked) -E
শেষ অবধি, এটি একটি উপন্যাস হিসাবে যুক্ত করতে ভুলবেন না:
git config --global alias.la "!git config -l | grep alias | cut -c 7-"
উপভোগ করুন!
আমি জুন 2018 সালে " ওভারভিউ তালিকার সাথে - সর্বাধিক ব্যবহৃত গিট কমান্ড " দ্য গিট 2.18 "ব্যবহার --list-cmds=alias
( 3301 ডি 36 ) প্রতিশ্রুতিবদ্ধ" দিয়ে উল্লেখ করেছি, যা কেয়ারজ তার উত্তরে জানিয়েছে ।
git --list-cmds=alias
বা এর বাইরেও git config --get-regexp alias
আপনি এর আউটপুটটি একত্রিত করতে পারেন git help
, যার আউটপুট গিট 2.14.x / 2.15 এর সাথে পরিবর্তিত হবে:
"
git help co
" এখন " " বলে, "co is aliased to ...
" নয়git co is
।
দেখুন কমিট b3a8076 (12 সেপ্টেম্বর 2017) দ্বারা Kaartic Sivaraam ( sivaraam
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 5079cc8 , 25 সেপ্টেম্বর 2017)
help
: আরও সুনির্দিষ্ট হওয়ার জন্য একটি বার্তা পরিবর্তন করুনব্যবহারকারীর যখন '
--help
' বিকল্পটি কোনও এলিয়াস্ড কমান্ডের উপর ব্যবহারের চেষ্টা করে তখন নামটির মতো নীচে প্রদর্শিত হবে:
$ git co --help
`git co' is aliased to `checkout'
এটি সঠিক বলে মনে হচ্ছে না কারণ ব্যবহারকারী কেবল '
co
' এবং 'git co
' নয় al
এটি এমনকি এমন ক্ষেত্রেও ভুল হতে পারে যেখানে ব্যবহারকারী 'tgit
' এর মতো একটি উপনাম ব্যবহার করেছে ।
$ tgit co --help
`git co' is aliased to `checkout'
আপনার .gitconfig
অধীনে যোগ করুন [alias]
:
aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"
তাহলে আপনি করতে পারেন
git aliases
- সমস্ত এলিয়াস প্রদর্শন করুনgit aliases commit
- কেবলমাত্র "প্রতিশ্রুতিবদ্ধ" এলিয়াসআমি আমার বিশ্বব্যাপী এই উপনামটি ব্যবহার করি~/.gitconfig
# ~/.gitconfig
[alias]
aliases = !git config --get-regexp ^alias\\. | sed -e s/^alias.// -e s/\\ /\\ $(printf \"\\043\")--\\>\\ / | column -t -s $(printf \"\\043\") | sort -k 1
নিম্নলিখিত আউটপুট উত্পাদন করতে
$ git aliases
aliases --> !git config --get-regexp ^alias\. | sed -e s/^alias.// -e s/\ /\ $(printf "\043")--\>\ / | column -t -s $(printf "\043") | sort -k 1
ci --> commit -v
cim --> commit -m
co --> checkout
logg --> log --graph --decorate --oneline
pl --> pull
st --> status
... --> ...
( নোট: আমার জন্য এই কাজ করে Windows এ Git ব্যাশ । অন্য টার্মিনাল জন্য আপনি পলায়নের খাপ খাওয়ানো করতে হতে পারে। )
!git config --get-regexp ^alias\\.
গিট কনফিগারেশন থেকে শুরু হওয়া সমস্ত লাইন মুদ্রণ করে alias.
sed -e s/^alias.//
সরিয়ে ফেলা alias.
লাইন থেকেsed -e s/\\ /\\ $(printf \"\\043\")--\\>\\ /
কোনও স্থানের প্রথম ঘটনাকে এর সাথে প্রতিস্থাপন করে \\ $(printf \"\\043\")--\\>
(যা মূল্যায়ন করে #-->
)।column -t -s $(printf \"\\043\")
সমস্ত লাইনকে সমান দুরত্বযুক্ত কলামের টেবিলের মধ্যে ফর্ম্যাট করে। যে চরিত্রটি $(printf \"\\043\")
মূল্যায়ন করে #
সেগুলি বিভাজক হিসাবে ব্যবহৃত হয়।sort -k 1
প্রথম কলামে মানের উপর ভিত্তি করে সমস্ত লাইন সাজানো$ (printf f "\ 043 \")
এটি কেবল অক্ষর #
(হেক্স 043) মুদ্রণ করে যা কলাম বিভাজনের জন্য ব্যবহৃত হয়। আমি এই ছোট্ট হ্যাকটি ব্যবহার করি যাতে aliases
উপনামটি আক্ষরিক অর্থে #
অক্ষরটি ধারণ করে না । অন্যথায় এটি #
মুদ্রণের সময় এই অক্ষরগুলি প্রতিস্থাপন করবে ।
দ্রষ্টব্য : আপনার যদি আক্ষরিক #
লক্ষণগুলির সাথে উপকরণের প্রয়োজন হয় তবে এটি অন্য একটি চরিত্রে পরিবর্তন করুন ।
একটি অন্তর্নির্মিত ফাংশন আছে ... চেষ্টা করুন
$ __git_aliases
সমস্ত এলিয়াস তালিকাবদ্ধ করে :)
$
টিপিক্যাল লিনাক্স টার্মিনাল প্রম্পটে উল্লেখ করে। এই রেখার বাকী অংশটি এ জাতীয় টার্মিনালে টাইপ করুন এবং হিট ENTER
এউট আউট করুন আপনার এলিয়াসগুলির একটি তালিকা। লিনাক্স এবং উইন্ডোজ (গিট ব্যাশ) উভয় ক্ষেত্রেই কাজ করে, কারণ এটি গিটে অন্তর্নির্মিত । (এটি সম্ভবত একটি ফাংশন যা গিট অভ্যন্তরীণভাবে
2.18 গিট হিসাবে আপনি ব্যবহার করতে পারেন git --list-cmds=alias
তবুও অন্য একটি git
নাম (ডাকা alias
) যা গিট এলিয়াসগুলি প্রিন্ট করে: আপনার গিটকনফিগ [alias]
বিভাগে নিম্নলিখিতটি যুক্ত করুন :
[alias]
# lists aliases matching a regular expression
alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"
ব্যবহারের উদাহরণ, পুরো উপনামের নাম দেওয়া (ওরফে নামের সাথে ঠিক মেলে: যেমন, ^foobar$
), এবং কেবল মানটি দেখায়:
$ git alias st
alias.st status -s
$ git alias dif
alias.dif diff
বা, রেজিএক্সপেক্স দিন, যা সমস্ত মিলের উপমা এবং মানগুলি দেখায়:
$ git alias 'dif.*'
alias.dif diff
alias.difs diff --staged
alias.difh diff HEAD
alias.difr diff @{u}
alias.difl diff --name-only
$ git alias '.*ing'
alias.incoming !git remote update -p; git log ..@{u}
alias.outgoing log @{u}..
ক্যাভেটস: শেল সম্প্রসারণকে গ্লোব হিসাবে প্রতিরোধ করার জন্য রেজিএক্সপকেটটি উদ্ধৃত করুন, যদিও / যখন কোনও ফাইলের প্যাটার্নটি মেলে না তবে এটি প্রযুক্তিগতভাবে প্রয়োজনীয় নয়। এছাড়াও: ^
(প্যাটার্ন শুরু) এবং $
(প্যাটার্ন শেষ) ব্যতীত যে কোনও রেজিপ্সপ ঠিক আছে ; তারা নিহিত আপনি ব্যবহার করছেন না অনুমান git-alias
থেকে git-extras
।
এছাড়াও, স্পষ্টতই আপনার এলিয়াসগুলি আলাদা হবে; এগুলি আমি কয়েকটি কনফিগার করেছি। (সম্ভবত আপনি তাদের দরকারীও দেখতে পাবেন))