Git core डेवलपर्स Git को कैसे configure और इस्तेमाल करते हैं?
(blog.gitbutler.com)- "Pro Git" के लेखक Scott Chacon कुछ Git settings के बारे में बताते हैं जिन्हें उन्होंने global स्तर पर सक्रिय किया है और क्यों किया है
- इनमें से कई settings उन्होंने उन डेवलपर्स से सीखी हैं जो वास्तव में Git core codebase पर काम करते हैं
- नीचे
~/.gitconfigsettings दी गई हैं जो Git को और बेहतर बनाती हैं[column] ui = auto [branch] sort = -committerdate [tag] sort = version:refname [init] defaultBranch = main [diff] algorithm = histogram colorMoved = plain mnemonicPrefix = true renames = true [push] default = simple autoSetupRemote = true followTags = true [fetch] prune = true pruneTags = true all = true # न इस्तेमाल करने की वजह क्या है? [help] autocorrect = prompt [commit] verbose = true [rerere] enabled = true autoupdate = true [core] excludesfile = ~/.gitignore [rebase] autoSquash = true autoStash = true updateRefs = true # व्यक्तिगत पसंद की settings (ज़रूरत हो तो comment हटाकर इस्तेमाल करें) [core] # fsmonitor = true # untrackedCache = true [merge] # (अगर Git version 2.3 से कम है तो ‘diff3’ इस्तेमाल करें) # conflictstyle = zdiff3 [pull] # rebase = true
Git core डेवलपर्स Git को कैसे configure करते हैं?
- Git mailing list में Felipe Contreras ने कभी core team से कहा था कि वे अपनी सारी settings और aliases हटाकर default Git इस्तेमाल करके देखें
- इस प्रयोग के परिणामस्वरूप 9 settings और 3 aliases को नए defaults के रूप में प्रस्तावित किया गया
merge.conflictstyle = zdiff3 rebase.autosquash = true rebase.autostash = true commit.verbose = true diff.colorMoved = true diff.algorithm = histogram grep.patternType = perl feature.experimental = true branch.sort = committerdate - ये settings अभी तक default के रूप में अपनाई नहीं गई हैं
- लेकिन यह दिलचस्प है कि कई Git डेवलपर्स को इनमें से कुछ settings चालू किए बिना Git इस्तेमाल करने में कठिनाई होती है
- और इससे भी दिलचस्प बात यह है कि आपमें से ज़्यादातर लोगों को शायद पता ही नहीं होगा कि इनका मतलब क्या है
- इन्हें तीन categories में समझाया जाएगा
- Git को साफ़ तौर पर बेहतर बनाने वाली चीज़ें (Clearly Makes Git Better)
- न इस्तेमाल करने की वजह क्या है? (Why the Hell Not?)
- पसंद का मामला (A Matter of Taste)
# Git को साफ़ तौर पर बेहतर बनाने वाली चीज़ें
branch सूची sorting
- default रूप से Git branches को alphabetical order में sort करता है, लेकिन हाल की commit date के हिसाब से sort करना ज़्यादा उपयोगी हो सकता है
- नीचे दी गई settings से branches को हाल की commits के क्रम में sort किया जा सकता है और column format में दिखाया जा सकता है
git config --global column.ui auto git config --global branch.sort -committerdate
tag सूची sorting
- tags को alphabetical order की बजाय version order में sort करने के लिए यह setting इस्तेमाल करें
git config --global tag.sort version:refname
default branch नाम सेट करना
- नई repository initialize करते समय default branch नाम सेट करने के लिए यह करें
git config --global init.defaultBranch main
बेहतर diff settings
- ज़्यादा सटीक तुलना के लिए default diff algorithm को 'histogram' में बदलें
- code movement detect करके उसे color के साथ दिखाने के लिए ये settings जोड़ें
git config --global diff.algorithm histogram git config --global diff.colorMoved plain git config --global diff.mnemonicPrefix true git config --global diff.renames true
बेहतर push settings
- नीचे दी गई settings से push behavior को बेहतर बनाया जा सकता है
git config --global push.default simple git config --global push.autoSetupRemote true git config --global push.followTags true
बेहतर fetch settings
- fetch के समय अनावश्यक branches और tags को अपने-आप हटाने के लिए यह settings इस्तेमाल करें
git config --global fetch.prune true git config --global fetch.pruneTags true git config --global fetch.all true
# न इस्तेमाल करने की वजह क्या है?
autocorrect prompt
- command टाइप करते समय typo detect करके सुझाव पाने के लिए यह इस्तेमाल करें
git config --global help.autocorrect prompt
commit करते समय diff
- commit message लिखते समय बदला हुआ content साथ में दिखाने के लिए यह setting जोड़ें
git config --global commit.verbose true
conflict resolution का पुन: उपयोग
- पहले किए गए conflict resolution को अपने-आप फिर से इस्तेमाल करने के लिए यह settings इस्तेमाल करें
git config --global rerere.enabled true git config --global rerere.autoupdate true
global .gitignore file सेट करना
- global स्तर पर ignore की जाने वाली files तय करने के लिए इसे इस तरह सेट करें
git config --global core.excludesfile ~/.gitignore
rebase settings में सुधार
- rebase के समय अपने-आप squash और stash करने के लिए यह settings इस्तेमाल करें
git config --global rebase.autoSquash true git config --global rebase.autoStash true git config --global rebase.updateRefs true
# पसंद का मामला
बेहतर merge conflict display
- merge conflict के समय base version भी साथ में दिखाने के लिए इस setting पर विचार करें
git config --global merge.conflictstyle zdiff3
git pull पर rebase इस्तेमाल करना
git pullके समय अपने-आप rebase करने के लिए इसे इस तरह सेट करेंgit config --global pull.rebase true
file change detection की speed बढ़ाना
git statusजैसी commands की performance बेहतर करने के लिए यह settings इस्तेमाल की जा सकती हैंgit config --global core.fsmonitor true git config --global core.untrackedCache true
# समापन
- इन settings की मदद से Git को अधिक सुविधाजनक तरीके से इस्तेमाल किया जा सकता है, और इनमें से कुछ को core डेवलपर्स भी सक्रिय रूप से इस्तेमाल करते हैं
- Git settings को optimize करके workflow बेहतर किया जा सकता है और इसे अधिक कुशलता से इस्तेमाल किया जा सकता है
7 टिप्पणियां
"और भी दिलचस्प बात यह है कि आप में से ज़्यादातर लोगों को इसका मतलब क्या है, इसकी बिल्कुल भी समझ नहीं है"—सीधे चुभता है। शेकींग
क्या यह
"--global"नहीं, बल्कि"-global"है?--globalसही है। कॉपी-पेस्ट करते समय मुझसे गलती हो गई थी। इसे सुधार दिया गया है।लोकप्रिय Git सेटिंग विकल्प
कॉनफ़्लिक्ट समाधान का पुन: उपयोग अच्छा है।
मैं diff करते समय
git-deltaका इस्तेमाल करके उसे TUI फ़ॉर्मैट में देखता हूँ.अगर ये सब भी झंझट लगे तो
tig.... हाहाक्या इससे भी बेहतर कुछ हो सकता है...?
Hacker News राय
git outहै। यह उन सभी commits की सूची दिखाता है जिन्हें push नहीं किया गया है। मैं इसे हमेशा इस्तेमाल करता हूँgit config --global core.pager bat