2013-02-27 32 views
15

पर गिट ऊर्फ मैं अपने मौजूदा उपनामों को बेहतर बनाना चाहता हूं, उनमें से अधिकांश शाखा में काम करते हैं। क्या गिट उपनाम में वर्तमान शाखा को संदर्भित करने का कोई तरीका है इसलिए मुझे इसे हर बार पास करने की आवश्यकता नहीं है?वर्तमान शाखा

इस तरह:

git po foo_branch 

मैं सिर्फ git po चलाना चाहते हैं और यह एक पैरामीटर के रूप में वर्तमान शाखा लेने के लिए:

git config alias.po "push origin" 

इस तरह इसका इस्तेमाल होता है।

+2

गिट rev-parse --abbrev-ref HEAD वह है जो मैं वर्तमान शाखा को हटाने के लिए उपयोग करता हूं। – Learath2

उत्तर

0

इस उत्तर Git 2.0, जहां डिफ़ॉल्ट धक्का व्यवहार किया जाएगा simple

जब तक push.default सेटिंग तर्क को निर्दिष्ट हमेशा वर्तमान शाखा चली जाएगी बिना matching, git push पर सेट है से शुरू, इस में तो मान्य होगा अगर आपको इसे निर्दिष्ट करने की आवश्यकता नहीं है।

+2

-1: मुझे नहीं लगता कि यह सही है। 'गिट पुश 'की डिफ़ॉल्ट क्रिया' .gitconfig' में 'push.default' सेटिंग पर निर्भर करती है। – lunaryorn

+0

हां, लेकिन यह केवल तभी मामला है जब यह 'मिलान' – CharlesB

+0

पर सेट किया गया है, वास्तव में' मिलान' 'push.default' के लिए वर्तमान डिफ़ॉल्ट मान है, इसलिए मैंने अपना उत्तर बदल दिया है – CharlesB

0

यह आपके प्रश्न से 100% स्पष्ट नहीं है, जिसमें आपको इन दो उपनामों की आवश्यकता है।

git config alias.po !f() { export tmp_branch=`git branch | grep '* ' | tr -d '* '` && git push origin $tmp_branch; unset $tmp_branch; }; f 

इसमें दिए गए शाखा का नाम आ जाएगी (git po branchName):

यह अभी चेक आउट शाखा चली जाएगी

git config alias.po !f() { git push origin $1; }; f 
+1

वर्तमान शाखा प्राप्त करने के लिए 'गिट प्रतीकात्मक-रेफ हेड' का उपयोग करें। तेजी से होना चाहिए। – lunaryorn

+0

@lunaryorn क्यों नहीं 'गिट rev-parse --abbrev-ref HEAD'? यह – vladkras

2

मैं किसी भी निर्मित रास्ता पता नहीं है, लेकिन आप

alias gpo='git push origin "$(git-current-branch 2> /dev/null)"' 

कहाँ git-current-branch च के रूप में परिभाषित किया गया है: एक खोल उर्फ ​​साथ कर सकते हैं ollows:

git-current-branch() { 
    if ! git rev-parse 2> /dev/null 
    then 
     print "$0: not a repository: $PWD" >&2 
     return 1 
    fi 
    local ref="$(git symbolic-ref HEAD 2> /dev/null)" 
    if [[ -n "$ref" ]] 
    then 
     print "${ref#refs/heads/}" 
     return 0 
    else 
     return 1 
    fi 
} 

बेकार ढंग से Prezto से लिया गया।

34
[alias] 
    po = "!git push --set-upstream origin \"$(git rev-parse --abbrev-ref HEAD)\"" 
+0

ग्रेट उत्तर के बिना शाखा का नाम देता है! एकमात्र चेतावनी यह है कि मैंने इसे कमांड लाइन से सीधे किया और यह मेरी वर्तमान शाखा को कमांड लाइन में कोडित किया गया :) Direclty ने इसे कॉन्फ़िगरेशन फ़ाइल में किया और यह ठीक काम किया। – CubanX

+1

'! Git' में बैंग क्यों? मुझे पता है कि बैंग में कुछ भी क्या करता है, बस यह सुनिश्चित न करें कि आप इसे यहां क्यों चाहते हैं। –

+3

बैंग आपको शेल में आने वाली हर चीज़ को निष्पादित करने की अनुमति देता है, यानी आप किसी भी कमांड को निष्पादित करने की अनुमति देता है न कि केवल उपनाम में गिट कमांड। –

संबंधित मुद्दे