2012-09-07 6 views
5

나는 다음과 같습니다 자식 별칭을 가지고있다. 그러나이 별칭은 내가 지점에있을 때 실제로 제대로 작동하지 않습니다.어떤 지점에 상관없이 처리되지 않은 커밋의 별칭은 무엇입니까? 나는 마스터에있을 때 "unpushed"변화를 보여주는 좋은 작품</p> <pre><code>[alias] unpushed = log origin..HEAD --pretty=format:'%h %an %s' </code></pre> <p>:

브랜치에 있는지 여부에 관계없이 수정되지 않은 변경 사항을 표시하는 올바른 명령은 무엇입니까?

+0

지점에서 나를 위해 정상적으로 작동하는 것 같습니다 ... 당신에게 효과가없는 것은 무엇입니까? –

+0

작동하지만 지점이 마스터에서 분기 된 방식을 보여 주며 내 로컬 사본이 업스트림에서 분산 된 방식이 아니라 원하는대로 표시됩니다. – slacy

답변

5

, 당신은 다음을 사용할 수 있습니다

git config alias.unpushed "log @{u}.. --pretty=format:'%h %an %s'" 

이 상류 지점에서 접근하는 제외 HEAD에서 모두 도달 커밋 보여 git log됩니다. @{u}.. 인수는 @{u}..HEAD과 동일하고 @{u}은 현재 분기의 업스트림 커밋 (예 : 체크 아웃 된 분기가 foo 인 경우 origin/foo)의 줄임말입니다. 모든 참조를 걸어

git config alias.unpushed "log --all --not --remotes --tags --pretty=format:'%h %an %s'" 

위의 원인 git log을하지만, (제외) 원격 참조 (예를 들어, origin/master) 및 태그에서 중지 : 모든 지점에서 모든 unpushed 커밋을보고 싶다면

, 이렇게 . Git은 지역 태그와 원격 태그를 구별하지 않으므로 위의 예에서는 모든 태그가 원격이라는 것을 전제로합니다 (항상 그렇다고 볼 수는 없으므로 가끔씩 --tags 인수를 생략 할 수도 있습니다).

는 개인적으로 unpushed 커밋을 보여주기 위해 다음과 같은 별칭을 사용 : 간단한 저장소를 들어

# unpushed: graph of everything excluding pushed/tag commits 
# with boundary commits (see below for 'git g' alias) 
git config alias.unpushed '!git g --not --remotes --tags' 

# go: _G_raph of _O_utgoing commits with boundary commits 
# (see below for 'git gb' alias) 
git config alias.go '!git gb @{u}..' 

# g: _G_raph of everything with boundary commits 
git config alias.g '!git gb --all' 

# gb: _G_raph of current _B_ranch (or arguments) with boundary commits 
git config alias.gb '!git gbnb --boundary' 

# gbnb: _G_raph of current _B_ranch (or arguments) with _N_o _B_oundary commits 
git config alias.gbnb 'log --graph --date-order --pretty=tformat:"%C(yellow)%h%Creset %C(magenta)%aE %ai%Creset %C(green bold)%d%Creset%n  %s"' 

내가 커밋을 탐험 내 기본 방법으로 git g 별칭을 사용합니다. 복잡한 저장소 (수십 가지)의 경우 일반적으로 git gb을 사용하여 특정 분기 또는 커밋 범위를 표시합니다. git push이 원격 참조를 변경하는 방법 (내 push.defaultupstream으로 설정 됨)을보고 싶을 때 git go을 사용합니다. 내 로컬 저장소에 아무 것도 없으면 푸시하지 않았는지 확인하고 싶습니다 (예 : 복제본을 삭제해도 작업이 유실되는지 확인). git unpushed을 사용합니다.

1

나는이 질문과 다른 질문에 git-wtf을 사용합니다.

1

이 그것을 할 것입니다 :

git config alias.unpushed "log $(git rev-parse --symbolic-full-name @{u})..HEAD --pretty=format:'%h %an %s'" 

그것은 HEAD 상류 추적 지점 (예를 들어, refs/remotes/origin/master)의 전체 이름을 비교합니다. 전체 이름은 평범한 자식 작업에 유효한 refspec입니다.

대신 pullfetch 사용하고 싶은 경우는 지점에 커밋 있지만 두 ... 구문 대신의 명령에 .. 구문을 사용합니다. 당신은 단지 현재의 지점에 대한 나가는 커밋을보고 싶다면

+0

작동하지만 실제로 작동하지 않습니다 -이 광고는 체크 아웃 된 트리의 별칭입니다.gitconfig하지만 "git checkout"으로 분기를 전환하면 별칭이 계속 이전 분기를 참조합니다. ~/.gitconfig에 "$ (git ...)"스타일의 쉘 확장을 넣을 수는 없습니다. – slacy

+0

@slacy 아, 이제 오류가 나타납니다. 리처드의 대답을지지했다. – Christopher