खोज…
साधारण उपनाम
Git में उपनाम बनाने के दो तरीके हैं:
-
~/.gitconfig
फ़ाइल के साथ:
[alias]
ci = commit
st = status
co = checkout
- कमांड लाइन के साथ:
git config --global alias.ci "commit"
git config --global alias.st "status"
git config --global alias.co "checkout"
उपनाम बनने के बाद - टाइप करें:
-
git ci
git commit
बजायgit ci
, -
git st
git status
बजायgit st
, -
git co
के बजायgit checkout
।
नियमित रूप से आदेश के साथ, तर्क के बगल में उपनाम का उपयोग किया जा सकता है। उदाहरण के लिए:
git ci -m "Commit message..."
git co -b feature-42
मौजूदा उपनामों की सूची / खोज करें
आप मौजूदा git उपनामों का उपयोग कर सकते हैं --get-regexp
:
$ git config --get-regexp '^alias\.'
उपनाम खोज रहे हैं
करने के लिए उपनाम खोज , अपने को निम्नलिखित जोड़ने .gitconfig
के तहत [alias]
:
aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"
तब आप कर सकते हो:
-
git aliases
- सभी उपनाम दिखाते हैं -
git aliases commit
- केवल "प्रतिबद्ध" युक्त उपनाम
उन्नत उपनाम
यदि आप उनके साथ उपसर्ग करते हैं तो Git आपको अपने उपनाम में गैर- git कमांड और फुल sh
सिंटैक्स का उपयोग करने देता है !
।
आपकी ~/.gitconfig
फ़ाइल में:
[alias]
temp = !git add -A && git commit -m "Temp"
तथ्य यह है कि पूर्ण शेल सिंटैक्स इन पूर्वनिर्मित उपनामों में उपलब्ध है इसका मतलब यह है कि आप शेल कार्यों का उपयोग अधिक जटिल उपनामों का निर्माण करने के लिए कर सकते हैं, जैसे कि कमांड लाइन तर्क का उपयोग करते हैं:
[alias]
ignore = "!f() { echo $1 >> .gitignore; }; f"
उपरोक्त उपनाम f
फ़ंक्शन को परिभाषित करता है, फिर इसे किसी भी तर्क के साथ चलाता है जिसे आप उपनाम में पास करते हैं। तो चल git ignore .tmp/
.tmp/
को आपकी .gitignore
फ़ाइल में जोड़ेगा।
वास्तव में, यह पैटर्न इतना उपयोगी है कि Git आपके लिए $1
, $2
, आदि चर को परिभाषित करता है, इसलिए आपको इसके लिए एक विशेष फ़ंक्शन को परिभाषित करने की आवश्यकता नहीं है। (लेकिन ध्यान रखें कि Git भी तर्क को जोड़ देगा, भले ही आप इसे इन चर के माध्यम से एक्सेस करते हों, इसलिए आप अंत में एक डमी कमांड जोड़ना चाह सकते हैं।)
ध्यान दें कि उपनाम के साथ उपसर्ग !
इस तरह से आपके गिट चेकआउट की रूट डायरेक्टरी से चलाया जाता है, भले ही आपकी वर्तमान निर्देशिका पेड़ में अधिक गहरी हो। यह स्पष्ट रूप से cd
बिना रूट से कमांड चलाने का एक उपयोगी तरीका हो सकता है।
[alias]
ignore = "! echo $1 >> .gitignore"
अस्थायी रूप से ट्रैक की गई फ़ाइलों को अनदेखा करें
फ़ाइल को अनदेखा करने के लिए अस्थायी रूप से चिह्नित करें (फ़ाइल को पैरामीटर के रूप में उपनाम के रूप में) - प्रकार:
unwatch = update-index --assume-unchanged
फ़ाइल को फिर से ट्रैक करने के लिए - टाइप करें:
watch = update-index --no-assume-unchanged
अस्थायी रूप से अनदेखी की गई सभी फ़ाइलों को सूचीबद्ध करने के लिए - टाइप करें:
unwatched = "!git ls-files -v | grep '^[[:lower:]]'"
अनचाहे सूची को साफ़ करने के लिए - टाइप करें:
watchall = "!git unwatched | xargs -L 1 -I % sh -c 'git watch `echo % | cut -c 2-`'"
उपनाम का उपयोग करने का उदाहरण:
git unwatch my_file.txt
git watch my_file.txt
git unwatched
git watchall
शाखा ग्राफ के साथ सुंदर लॉग दिखाएं
[alias]
logp=log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
lg = log --graph --date-order --first-parent \
--pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
lgb = log --graph --date-order --branches --first-parent \
--pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
lga = log --graph --date-order --all \
--pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
यहाँ - व्याख्यात्मक प्रारूप में उपयोग किए गए विकल्पों और प्लेसहोल्डर की एक व्याख्या ( --pretty
सूची git help log
साथ उपलब्ध है)
--ग्राफ - कमिट ट्री बनाएं
-डेट-आदेश - जब संभव हो तो प्रतिबद्ध टाइमस्टैम्प का उपयोग करें
--फर्स्ट-पैरेंट - मर्ज नोड पर केवल पहले माता-पिता का पालन करें।
- शाखाएं - सभी स्थानीय शाखाओं को दिखाएं (डिफ़ॉल्ट रूप से, केवल वर्तमान शाखा को दिखाया गया है)
--all - सभी स्थानीय दिखाएं और शाखाओं को हटा दें
% h - हैश मान के लिए (संक्षिप्त)
% विज्ञापन - दिनांक मोहर (लेखक)
% a - लेखक उपयोगकर्ता नाम
% a - प्रतिबद्ध उपयोगकर्ता नाम
% C (ऑटो) - [रंग] खंड में परिभाषित रंगों का उपयोग करने के लिए
% Creset - रंग रीसेट करने के लिए
% d --decorate (शाखा और टैग नाम)
% s - प्रतिबद्ध संदेश
% विज्ञापन - लेखक की तारीख (- निर्देश का पालन करें) (और कमेंट की तारीख नहीं)
% a - लेखक का नाम (कम्यूटर नाम के लिए% cn हो सकता है)
रैखिक इतिहास रखते हुए कोड अपडेट करना
कभी-कभी आपको अपने कोड के एक रेखीय (गैर-शाखीय) इतिहास रखने की आवश्यकता होती है। यदि आप कुछ समय के लिए एक शाखा पर काम कर रहे हैं, तो यह मुश्किल हो सकता है यदि आपको एक नियमित रूप से git pull
पड़े, क्योंकि यह अपस्ट्रीम के साथ मर्ज रिकॉर्ड करेगा।
[alias]
up = pull --rebase
यह आपके अपस्ट्रीम स्रोत के साथ अपडेट हो जाएगा, फिर आपने जो भी काम किया है, उसे फिर से ऊपर धकेल दिया है।
काम में लाना:
git up
देखें कि आपके .gitignore कॉन्फ़िगरेशन द्वारा किन फ़ाइलों को अनदेखा किया जा रहा है
[ alias ]
ignored = ! git ls-files --others --ignored --exclude-standard --directory \
&& git ls-files --others -i --exclude-standard
प्रति फ़ाइल एक पंक्ति दिखाता है, ताकि आप (केवल निर्देशिका) को टटोल सकें:
$ git ignored | grep '/$'
.yardoc/
doc/
या गिनती:
~$ git ignored | wc -l
199811 # oops, my home directory is getting crowded
Unstage मंचन फ़ाइलें
आम तौर पर, उन फ़ाइलों को हटाने के लिए जिन्हें git reset
प्रतिबद्ध का उपयोग करके प्रतिबद्ध किया जाता है, reset
पास इसके लिए दिए गए तर्कों के आधार पर बहुत सारे कार्य हैं। पूरी तरह से unstage सभी फाइलों का मंचन करने के लिए, हम एक नए उपनाम का उपयोग करता है बनाने के लिए Git उपनाम का उपयोग कर सकते reset
लेकिन अब हम करने के लिए सही तर्क प्रदान करने के लिए याद करने के लिए की जरूरत नहीं है reset
।
git config --global alias.unstage "reset --"
अब, किसी भी समय आप चरणों की फ़ाइलों को अनस्टेज करना चाहते हैं, git unstage
टाइप करें और आप जाने के लिए अच्छे हैं।