Programing

명령에 git 기본 플래그 설정

lottogame 2020. 9. 21. 22:17
반응형

명령에 git 기본 플래그 설정


git 명령에 대해 기본적으로 플래그를 설정하는 방법이 있는지 알고 싶습니다. 특히, 나는 --abbrev-commit실행할 때 git log나는 실행 하고 싶 도록 플래그 를 설정하고 싶습니다 git log --abbrev-commit.

" git 명령에 대해 기본적으로 플래그를 설정할 수있는 방법이 있습니까? " 라는 질문과 달리 --abbrev-commit을 git log에 추가하기위한 구성 플래그가없는 것 같습니다. 또한 git 매뉴얼에는 별칭을 만들 수 없다고 나와 있습니다. "스크립트 사용과 관련된 혼란과 문제를 피하기 위해 기존 git 명령을 숨기는 별칭은 무시됩니다."

세 번째 옵션은 glog=log --abbrev-commit.gitconfig 파일 과 같은 새 별칭을 만드는 것 입니다. 그러나 나는 새로운 명령으로 내 자신의 DSL을 발명하지 않을 것입니다.

abbrev-commit플래그가 기본적으로 설정 되도록 다른 방법이 있습니까 ??


git 버전 1.7.6부터 git config는 true로 설정할 수있는 log.abbrevCommit 옵션을 얻었습니다. 따라서 대답은 최소한 1.7.6 (이 글 현재 1.7.11.4)으로 업그레이드하고 다음을 사용하는 것입니다.

git config --global log.abbrevCommit true

사용자 지정 형식을 사용하여 기본적으로 git log모방 할 수 있습니다 --abbrev-commit.

git config format.pretty "format:%h %s"

git에는 명령에 대한 기본 인수를 설정하는 일반적인 메커니즘이 없습니다.

git 별칭 을 사용하여 필수 인수로 새 명령을 정의 할 수 있습니다 .

git config alias.lg "log --oneline"

그런 다음 git lg.

일부 명령에는 동작을 변경하기위한 구성 설정도 있습니다.


VonC는 이미 그의 답변에서 쉘 래퍼를 암시했습니다. 여기에 그런 래퍼의 Bash 구현이 있습니다. 예를 들어이를에 넣으면 .bashrc대화 형 쉘이 대문자 별칭뿐만 아니라 Git 내장 명령의 재정의를 지원합니다.

# Git supports aliases defined in .gitconfig, but you cannot override Git
# builtins (e.g. "git log") by putting an executable "git-log" somewhere in the
# PATH. Also, git aliases are case-insensitive, but case can be useful to create
# a negated command (gf = grep --files-with-matches; gF = grep
# --files-without-match). As a workaround, translate "X" to "-x". 
git()
{
    typeset -r gitAlias="git-$1"
    if 'which' "$gitAlias" >/dev/null 2>&1; then
        shift
        "$gitAlias" "$@"
    elif [[ "$1" =~ [A-Z] ]]; then
        # Translate "X" to "-x" to enable aliases with uppercase letters. 
        translatedAlias=$(echo "$1" | sed -e 's/[A-Z]/-\l\0/g')
        shift
        "$(which git)" "$translatedAlias" "$@"
    else
        "$(which git)" "$@"
    fi
} 

그런 다음 PATH에 git log이름이 지정된 스크립트를 넣어 재정의 할 수 있습니다 git-log.

#!/bin/sh
git log --abbrev-commit "$@"

비슷한 문제가 있습니다 (Git 명령의 기본 옵션 중 대부분은 바보입니다). 여기 내 접근 방식이 있습니다. 다음과 같이 경로에 'grit'(또는 기타)라는 스크립트를 만듭니다.

#!/bin/bash
cmd=$1
shift 1
if [ "$cmd" = "" ]; then
  git
elif [ $cmd = "log" ]; then
  git log --abbrev-commit $@
elif [ $cmd = "branch" ]; then
  git branch -v $@
elif [ $cmd = "remote" ]; then
  git remote -v $@
else
  git $cmd $@
fi

Bash 비전문가와 공유해야 할 경우를 대비하여 읽고 유지하는 것이 매우 간단합니다.


우리가 사용하는 모든 유틸리티 (svn, maven, git, ...)는 개발자에게 경로에 추가 할 하나의 디렉토리를 제공하기 위해 항상 .bat (Windows의 경우 또는 .sh)로 캡슐화됩니다.

If git is encapsulated in a wrapper script, then... everything is possible.

But that remains a solution linked to the user's setup, not linked to Git itself or the git repo.


I like the git log --oneline format. To get it as default, use

git config --global format.pretty oneline

Credit: https://willi.am/blog/2015/02/19/customize-your-git-log-format/

참고URL : https://stackoverflow.com/questions/2500586/setting-git-default-flags-on-commands

반응형