2016-07-13 2 views
2

Я бы использовал псевдоним в другом псевдониме в Cmder.Cmder: как использовать псевдоним в другом псевдониме?

У меня хороший псевдоним (первая) к большой команде, и я хотел бы использовать его в другой (второй):

mergelocdist=git fetch origin --prune --verbose && git checkout $1 && git merge --ff-only --verbose origin/$2 || git rebase --preserve-merges --verbose origin/$2 

mm=mergelocdist master master 

псевдонимы в файле Cmder aliases, и Я нахожусь в Windows 7 x64.

Тема была запрошена in this question, и ответов на нее отсутствует.

Если вы ответите мне, пожалуйста, ответ на этот парень :)

Найдено this, кажется, есть что-то, чтобы помочь, но я не понять, как.

ответ

1

Benj: Я подозреваю, что вы уже нашли ответ, но я вижу, что никто не ответил на этот вопрос, так и я.

Если я могу сделать альтернативное предложение для файла псевдонимов. Похоже, вы пытаетесь решить это для git.

Лучший способ, который я нашел для этого в Windows, - отредактировать файл ~/.bashrc. На большинстве машин для Windows это будет под C:\Users\<USERNAME>\.bashrc.

Вы можете создать функцию, например:

function MergeLocDistFn { 
    local co_branch=$1 
    local merge_branch=$2 

    echo ">> Debug Command: git checkout ${co_branch}" 
    git checkout ${co_branch} 

    echo ">> Debug Command: git merge --ff-only --verbose origin/${merge_branch} || git rebase --preserve-merges --verbose origin/${merge_branch}" 
    git merge --ff-only --verbose origin/${merge_branch} || git rebase --preserve-merges --verbose origin/${merge_branch} 
} 

Затем вы можете создать псевдонимы в файле ~/.bashrc, как следующее:

alias mergelocdist=MergeLocDistFn 
alias mm='MergeLocDistFn master master' 

Преимущество этого подхода заключается в том, что это позволит вы получите очень сложную функцию и, как я покажу здесь, отлаживаем ее также с помощью эхо-заявлений.

См. Прилагаемое изображение примера вывода. example output from bashrc

Обратите внимание, что если вы предпочитаете делать это для приглашения PowerShell, изменить профиль PowerShell еще проще, просто сообщите мне, и я покажу вам, как это сделать.

Другое примечание. Вы также можете создать функцию в .bashrc для текущей ветви. Вот пример функции:

function current_branch() { 
    ref=$(git symbolic-ref HEAD 2> /dev/null) || \ 
    ref=$(git rev-parse --short HEAD 2> /dev/null) || return 
    echo ${ref#refs/heads/} 
} 

Вот пример использования функции current_branch:

alias gpush='git push -u origin $(current_branch)' 

Я надеюсь, что его помогает, просто дайте мне знать, если вам нужны какие-либо разъяснения по этому вопросу.

+0

Спасибо за помощь! В это время я не нашел никакого решения, поэтому еще раз спасибо! Я бы поцеловал тебя, если мог. – Benj

+0

Nice выстрел для первого ответа. Я поставил ссылку на ваш ответ в комментариях к вопросу, который я связал в своем. – Benj

+0

Замечательно, что это полезно. Если вы хотите изучить далее, я также рассказал о других методах bashrc на http://erpenbeck.io/2016/10/27/bashrc/.Например, если ваша команда использует удаленные каналы Git, разработки/мастер-ветви и т. Д., Есть удобный метод, называемый 'cloneIt', который будет настраивать все в одной команде. Настройте его в соответствии с правилами Git вашей команды. –

Смежные вопросы