저장소에서 mv/rm 등의 Git 버전 사용

저장소에서 mv/rm 등의 Git 버전 사용

Git에는 이와 같은 자체 버전의 명령이 있으므로 mv저장소 rm에서 이러한 작업을 수행할 때 실제로 사용해야 합니다.

그러나 나는 종종 이 일을 잊어버리는 유일한 사람이 아니라고 확신합니다.

Git 저장소에서 작업할 때 이러한 도구를 자동으로 사용하는 방법이 있습니까?

bash나는 zsh, 또는 에 대한 답변에 관심이 있습니다 fish.

답변1

git mv평소와 다른 작업을 수행 mv하며 직접적인 교체는 아닙니다.

예를 들어, 추적되지 않은 파일에서는 작동하지 않습니다.

touch foo
git mv foo bar

인쇄

치명적: 버전 관리 대상이 아님, 소스=foo, 대상=bar

파일 이동을 거부합니다. 비슷한 상황이 다른 명령에도 적용됩니다. 그것은 일을 위한 도구다자식 사용, 따라서 일반 OS 버전 대신 이러한 명령을 사용하는 것은아니요좋은 아이디어.

Git에는 저장소에서 이러한 작업을 수행할 때 실제로 사용해야 하는 mv 및 rm과 같은 자체 버전의 명령이 있습니다.

당신은해야하지.

답변2

저장소 내부에 있는지 감지하고 그에 따라 조치를 취할 수 있도록 git rev-parse myrm/mymv 스크립트를 사용하는 것이 좋습니다. 그것은 다음과 같습니다:

ingitr="$(git rev-parse --is-inside-work-tree 2>/dev/null)"
if [ "$ingitr" ]
then
    git rm $1 ( git mv $1 $2 )
else
    rm $1 ( mv $1 $2 )
fi

물론 이것이 출발점이다. 다양한 옵션을 처리할 수 있도록 확실히 개선되어야 합니다.


그러나 나는 의견을 읽었습니다 ... 당신은 이것을 원하지 않아야합니다. (압박으로 인해 이 답변을 삭제하겠습니다... ;-)

관련 정보