Git가 자동으로 공백과 탭 사이를 전환할 수 있습니까?
저는 파이썬 프로그램에서 들여쓰기를 위해 탭을 사용하지만 대신 공간을 사용하는 사람들과 공동 작업(깃 사용)을 하고 싶습니다.
푸시/페치 시 Git가 공백과 탭(예: 4개의 공백 = 1개의 탭) 사이에서 자동으로 변환되는 방법이 있습니까?(CR/LF 변환과 유사)
완벽한 솔루션은 다음과 같습니다.
리포지토리에 파일을 추가.git/info/attributes
다음이 포함됩니다.
*.py filter=tabspace
리눅스/유닉스
이제 다음 명령을 실행합니다.
git config --global filter.tabspace.smudge 'unexpand --tabs=4 --first-only'
git config --global filter.tabspace.clean 'expand --tabs=4 --initial'
OS X
먼저 brew를 사용하여 coreutils를 설치합니다.
brew install coreutils
이제 다음 명령을 실행합니다.
git config --global filter.tabspace.smudge 'gunexpand --tabs=4 --first-only'
git config --global filter.tabspace.clean 'gexpand --tabs=4 --initial'
모든 시스템
이제 프로젝트의 모든 파일을 체크아웃할 수 있습니다.다음과 같은 기능을 사용할 수 있습니다.
git checkout HEAD -- **
이제 모든 파이썬 파일에 공백 대신 탭이 있습니다.
편집: 강제 체크아웃 명령이 변경되었습니다.물론 당신은 당신의 일을 먼저 해야 합니다.
예, 한 가지 잠재적인 해결책은 Git 특성 필터 드라이버(GitPro 책 참조)를 사용하여 스머지/청소 메커니즘을 정의하는 것입니다.
그런 식으로:
- 당신이 당신의 레포의 몇몇 파일들을 체크아웃할 때마다, 공간들은 탭으로 변환될 수 있습니다.
- 그러나 체크인(및 푸시 및 게시) 시 동일한 파일이 공간만 사용하여 다시 저장됩니다.
이 필터 드라이버(여기서 이름 지정)를 선언할 수 있습니다.tabspace
') 에서.git/info/attributes
(Gitrepo 내의 모든 파일에 적용되는 필터의 경우) 내용은 다음과 같습니다.
*.py filter=tabspace
이제 다음 명령을 실행합니다.
# local config for the current repo
git config filter.tabspace.smudge 'script_to_make_tabs'
git config filter.tabspace.clean 'script_to_make_spaces'
이러한 오염된/깨끗한 지침 집합의 구체적인 작업 예는 올리비에의 답변을 참조하십시오.
GitHub(또는 기타 유사한 서비스)를 사용하는 모든 사용자에게 매우 유용한 정보
~/.gitconfig
[filter "tabspace"]
smudge = unexpand --tabs=4 --first-only
clean = expand --tabs=4 --initial
[filter "tabspace2"]
smudge = unexpand --tabs=2 --first-only
clean = expand --tabs=2 --initial
그러면 두 개의 파일이 있습니다.attributes
*.js filter=tabspace
*.html filter=tabspace
*.css filter=tabspace
*.json filter=tabspace
그리고.attributes2
*.js filter=tabspace2
*.html filter=tabspace2
*.css filter=tabspace2
*.json filter=tabspace2
개인 프로젝트 작업
mkdir project
cd project
git init
cp ~/path/to/attributes .git/info/
그런 식으로, 당신이 마침내 당신의 작업을 github에 밀어넣을 때, 그것은 코드 뷰에서 바보처럼 보이지 않을 것입니다.8 space tabs
모든 브라우저에서 기본 동작입니다.
다른 프로젝트에 기여
mkdir project
cd project
git init
cp ~/path/to/attributes2 .git/info/attributes
git remote add origin git@github.com:some/repo.git
git pull origin branch
그런 식으로 일반 탭을 사용하여 작업할 수 있습니다.2 space indented
프로젝트
물론 변환을 위한 유사한 솔루션을 작성할 수 있습니다.4 space to 2 space
만약 당신이 나에 의해 출판된 프로젝트에 기여하고 싶어하고 당신이 개발하는 동안 2개의 공간을 사용하는 경향이 있다면 그렇습니다.
만약 당신이 윈도우에 있다면, 당신은 @Olivier Verdier의 솔루션을 작동시키기 위한 몇 가지 추가적인 단계가 있습니다.
- Windows용 CoreUtils 다운로드
- 설치 후 PATH에 설치 위치 입력(경로 변수 추가 방법)
- 확장 이름을 변경했습니다.확장하기 위해 실행합니다.이미 Windows 확장 유틸리티가 있기 때문에 exe.
언급URL : https://stackoverflow.com/questions/2316677/can-git-automatically-switch-between-spaces-and-tabs
'source' 카테고리의 다른 글
Firebase 클라우드 메시징은 무료입니까? (0) | 2023.06.25 |
---|---|
각진 재료 날짜에 대한 기본값 설정 각진 5가 있는 피커 (0) | 2023.06.25 |
왜 git branch --up-stream을 복구하기 위해 호출합니까? (0) | 2023.06.20 |
Ruby에서 안전한 정수 구문 분석 (0) | 2023.06.20 |
ASP.NET 웹 API를 사용하여 이미지를 반환하는 권장 방법이 있습니까? (0) | 2023.06.20 |