명령에 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
}

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

#!/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 비전문가와 공유해야 할 경우를 대비하여 읽고 유지하는 것이 매우 간단합니다.


답변

나는 git log --oneline형식을 좋아한다 . 기본값으로 사용하려면

git config --global format.pretty oneline

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


답변

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

git이 래퍼 스크립트에 캡슐화되어 있으면 모든 것이 가능합니다.

그러나 그것은 Git 자체 또는 git repo에 연결되지 않은 사용자 설정에 연결된 솔루션으로 남아 있습니다.