2012-07-05 2 views
6

나는 자식에 다음 지점이있는 경우스위치 지점

내가 그 질문은 스크립트 를 호출해야합니다 경우에도 수를 --just-- 사용하여 분기로 전환 할
1194-qa-server 
master 
remotes/origin/1178-authentication 
remotes/origin/1194-qa-server 
remotes/origin/HEAD -> origin/master 
remotes/origin/master 

예 :

switch_branch 1178 

다음과 같은

  1. 자식 지점 -a (모든 지점이 지역 발견을해야 스크립트/솔루션 원격 주어진 매개 변수에 의해
  2. 필터) 내 저장소 ('1178'위)
  3. 는 자식이 해당 분기에
  4. 스위치를 사용할 수있는 지점의 이름을 권장하는 방법은 무엇입니까

추출 이 모든 단계를 수동으로 수행 할 필요없이이를 수행 할 수 있습니까?

여기서 중요한 점은 Mac OSX를 사용하고 있습니다.

은 업데이트 - bash는 - 그것은 (github.com/revans/bash-it)는 remotes/origin/*를 체크 아웃 싶어 매우 적은 경우가 있습니다 내 목적

Welcome to Bash It! 

Here is a list of commands you can use to get help screens for specific pieces of Bash it: 

    rails-help     list out all aliases you can use with rails. 
    git-help     list out all aliases you can use with git. 
    todo-help     list out all aliases you can use with todo.txt-cli 
    brew-help     list out all aliases you can use with Homebrew 
    aliases-help    generic list of aliases. 
    plugins-help    list out all functions you have installed with bash-it 
    bash-it-plugins    summarize bash-it plugins, and their installation status 
    reference <function name> detailed help for a specific function 
+0

Bash를 이용한) – KingCrunch

+0

그리고 사용 어떤 [fancy] (https://github.com/robbyrussell/oh-my-zsh/) [helper] (https://github.com/revans/bash-it/) 그냥'gco 1178 [TAB]' – Stefan

+0

정말 나를 위해 일하지 않습니다. 해쉬에 대한 자동 완성을 위해 웹에서 참고 문헌을 찾았지만, 내가 찾던 내용이 아닙니다. – ramonrails

답변

0

나는 git-flow 워크 플로로 전환했으며 이후로 그것에 대해 만족합니다.

+0

'git flow'는 부분적인 이름으로 체크 아웃 문제를 어떻게 해결합니까? – bvj

9

역할을한다. 그것들은 존재하지만이 지름길의 목적을 위해 그들에 대해 걱정하지 마십시오. 이것은 OSX에 당신이 원하는 무엇을 얻을 것이다 : 당신은 다음 <number> 만 제외 "리모컨"를 포함하는 분기를 체크 아웃 git sco <number>을 발행 할 수

git config --global alias.sco '!sh -c "git branch -a | grep -v remotes | grep $1 | xargs git checkout"' 

. sco을 원하는 것으로 변경할 수 있습니다. 방금 "슈퍼 체크 아웃"으로 선택했습니다.

<number>과 일치하는 분기가 두 개 이상인 경우 물론이 기능은 잘 작동하지 않습니다. 그러나 이것은 적절한 출발점이되어야합니다.

+1

그것은 그 목적을 수행하지만 나는 bash-it을 더 잘 발견했습니다. https://github.com/revans/bash-it/ – ramonrails

3

다음은 내가 나 자신을 생각해내는 해결책입니다.

[ ${#} -ne 1 ] && { echo -e "Please provide one search string" ; exit 1 ; } 
MATCHES=($(git branch -a --color=never | sed -r 's|^[* ] (remotes/origin/)?||' | sort -u | grep -E "^((feature|bugfix|release|hotfix)/)?([A-Z]+-[1-9][0-9]*-)?${1}")) 
case ${#MATCHES[@]} in 
    (0) echo "No branches matched '${1}'" ; exit 1 ;; 
    (1) git checkout "${MATCHES[0]}"  ; exit $? ;; 
esac 
echo "Ambiguous search '${1}'; returned ${#MATCHES[@]} matches:" 

for ITEM in "${MATCHES[@]}" ; do 
    echo -e " ${ITEM}" 
done 
exit 1 

가 나는 git-rcheckout (더 나은 이름의 희망을위한 정규식에 대한 "R")과이 (내 .gitconfig에 구둣 주걱 조금 너무 오래입니다.)

그것은 것 내 경로에 배치라고 로컬 및 원격 브랜치 (로컬 만 체크 아웃 함)와의 비교를 시도하고 공통 접두어로 시작하는 브랜치 및 JIRA 티켓 ID와 같은 스타일의 일부 JIRA 스타일을 허용합니다 (IE는 검색 목적으로 무시합니다).

이 입력 :

git rcheckout this 

this-branch 
feature/this-branch 
bugfix/JIRA-123-this-branch 
JIRA-123-this-branch 
remotes/origin/this-branch 
remotes/origin/feature/this-branch 
remotes/origin/bugfix/JIRA-123-this-branch 
remotes/origin/JIRA-123-this-branch 

같은 것들을 일치해야하지만 사용했던 정규 표현식에 당신도 할 수 있다는 것을 충분히 관대 :

git rcheckout JIRA-123 

에 액세스하려면 :

bugfix/JIRA-123-this-branch 
JIRA-123-this-branch 
remotes/origin/bugfix/JIRA-123-this-branch 
remotes/origin/JIRA-123-this-branch 
지점 접두사를 검색하지만, 원하는 경우 실제로, 장식적인 일을 정규 표현식에 사용할 수 있도록 등에

그것은 기본적으로`당신`자식 체크 아웃 1178 [TAB]을 사용할 수 있습니다

git rcheckout '.*bran' 
git rcheckout '.*is-br.*h' 
+0

Works는 Jira에서 일반적으로 생성하는 큰 분기 이름을 사용합니다. 또한'git flow' 패러다임을 지원합니다. 우수한. – bvj