programing

Git 별칭 명령에 인수 전달

nasanasas 2020. 11. 15. 11:23
반응형

Git 별칭 명령에 인수 전달


Git 명령의 별칭에 인수를 전달할 수 있습니까?

Git 구성에 다음과 같은 별칭이 있습니다.

rb1 = rebase -i HEAD~1
rb2 = rebase -i HEAD~2
rb3 = rebase -i HEAD~3
rb4 = rebase -i HEAD~4
....

어떤 경우에도 작동 rb하도록 별칭 을 만들 git rb <x><x>있습니까?

이 별칭을 시도했습니다.

rb = rebase -i HEAD~

그러나 예를 들어 git rb 8작동하지 않습니다.


Git Faq 섹션 "인수가있는 Git 별칭" 을 고려하면 할 수 있지만 셸을 통해 git을 호출하면됩니다.

[alias]
        rb = "!sh -c \"git rebase -i HEAD~$1\" -"

아직 테스트하지는 않았지만 인수를 전달할 수 있다면 그 방법이 될 것입니다.

비슷한 해결책은 쉘 함수 를 사용하는 것입니다 .

[alias]
        rb = "!f() { git rebase -i HEAD~$1; }; f"

분기 이후 모든 커밋 리베이스

브랜치에서 새로운 커밋을 모두 리베이스하려면 상위 브랜치에서 브랜치 한 이후로 구성에 다음 별칭을 사용하는 것이 더 쉬울 것입니다.

rbi = !sh -c \"git rebase -i `git merge-base $1 HEAD`\" -

그런 다음 현재 브랜치에 추가 한 모든 커밋을 리베이스하려면 다음을 실행하면됩니다.

git rbi parentBranch

이 접근 방식은 인수를 사용하지만 되돌릴 커밋 수를 알 필요없이 브랜치 이름 만 제공하면 다음을 통해 현재 브랜치와 상위 브랜치간에 공유 된 가장 최근 커밋을 파악합니다. git merge-base

왜 이것이 git rebase -i parentBranch보다는

직선이 아닌이 작업을 수행하는 이유 git rebase -i parentBranch는 나중에 병합 충돌을 처리하거나 한 커밋에서 병합 충돌을 처리 한 다음 동일한 줄에서 동일한 충돌을 처리하고 싶지 않을 수 있기 때문입니다. 또 다른 커밋. 참조 https://stackoverflow.com/a/31036645/444610를


@Droogans는 받아 들여진 답변 에 대한 의견 에서 적어도 macOS에서 (모든 유닉스 계열 OS 및 심지어 창에서도 동일하게 적용될 것이라고 상상합니다) $1인수를 나타내는 자리 표시 자 값으로 사용할 수 있다고 지적했습니다. 별칭에서. 따라서 별칭을 설정 git rb 8하면 git rebase -i HEAD~8다음과 같습니다.

    rb = "!git rebase -i HEAD~$1;"

별칭에서 여러 번 사용할 수도 있으므로 예를 들어로 변환되는 별칭이 git f my-branch필요한 git fetch origin my-branch:my-branch경우 다음을 수행 할 수 있습니다.

    f = "!git fetch origin $1:$1"

Mac에서 Git 인터랙티브 리베이스를 수행하기 위해이 함수 "grb"를 작성 했으므로 grb 5마지막 5 개 커밋을 표시 할 수 있습니다 .

function grb {
  git rebase -i HEAD~$1
}

이 페이지의 상위 답변은 저에게 적합하지 않습니다. .bash_profileMac에서 사용하는 다른 모든 Git 별칭 을 보려면 :

https://github.com/rayning0/bash_profile/blob/master/.bash_profile#L146

참고 URL : https://stackoverflow.com/questions/7005513/pass-an-argument-to-a-git-alias-command

반응형