2012-06-18 4 views
26

큰 파이썬 프로젝트에서 일하고 있는데, .pyc와 * ~ 파일이 정말 아파요. 나는 그들을 제거하고 싶습니다. git clean의 -X 플래그가 추적되지 않은 파일을 제거하는 것을 보았습니다. 당신이 상상할 수 있듯이, 나는 .pyc이나 *~ 파일을 추적하고 있지 않다. 그리고 그것은 트릭을 만들 것입니다. 문제는 제가 local_settings.py 파일을 가지고 있기 때문에 자식을 깨끗하게 유지하고 싶습니다.힘내 : 깨끗한 자식 파일을 제외하십시오.

그래서, 이것이 내가 얻은 것입니다.

.gitignore :

*.pyc 
*~ 
local_settings.py 

내가이 명령을 실행하면 :


요구 사항을 제거겠습니까 local_settings.py 제거 할 것인가 :

git clean -X -n -e local_settings.py 

을 나는 결과의 목록을 .txt ~
의 R 무리) ~ 파일
은 (다른 무리를 제거겠습니까) 나는 local_settings.py 파일을 제거하지 않으 PYC 파일

. 나는 그것을 할 수있는 많은 방법을 시도해 왔지만 그것을 성취하는 방법을 알 수는 없다.

git clean -X -n -e local_settings.py 
git clean -X -n -e "local_settings.py" 
git clean -X -n --exclude=local_settings.py 
git clean -X -n --exclude="local_settings.py" 

아무 것도 작동하지 않는 것 같습니다.

편집 : 후손을 위해

, 그것을 할 수있는 올바른 방법이다 (감사 @Rifat) :

git clean -x -n -e local_settings.py # Shows what would remove (-n flag) 
git clean -x -f -e local_settings.py # Removes it (note the -f flag) 
+2

포옹'~ .pyc's, (다른 디렉토리에 임시/백업 파일을 배치 편집기를 구성 여부)''git clean'ing을 잊어 버리는 것입니다. OCD를 먹이지 마십시오 – KurzedMetal

+0

* .pyc와 * ~는 이미 커밋 했습니까? –

+0

'git update-index --skip-worktree local_settings.py'가 도움이됩니까? –

답변

13

자본금 대신 작은 x으로 시도해 보시겠습니까? 마찬가지로 - git clean -x

git clean -x -n -e local_settings.py # Shows what would remove (-n flag) 
git clean -x -f -e local_settings.py # Removes it (note the -f flag) 

the git documentation에서 :

-x 
     Don't use the standard ignore rules read from .gitignore (per 
     directory) and $GIT_DIR/info/exclude, but do still use the ignore 
     rules given with -e options. This allows removing all untracked 
     files, including build products. This can be used (possibly in 
     conjunction with git reset) to create a pristine working directory 
     to test a clean build. 

    -X 
     Remove only files ignored by git. This may be useful to rebuild 
     everything from scratch, but keep manually created files. 
+0

이것은 그 것이다! 고마워요! – santiagobasulto

0

파이썬을 실행하는 경우 2.6+ 단지, PYTHONDONTWRITEBYTECODE 환경 변수를 설정 에서 true으로 변경됩니다. 당신은 당신이 작업하는 특정 프로젝트를 위해 그렇게 할 경우에 필요합니다,

export PYTHONDONTWRITEBYTECODE=true 

을 또는 : 당신은 완전히 당신의 프로필을 해제하기 위해 .profile 또는 .bashrc 같은에 다음을 추가 할 수 있습니다 매번 (또는 virtualenv 및 virtualenvwrapper를 사용하는 경우 virtualenv init 스크립트 중 하나에서) 위의 쉘에서 위의 명령을 실행하거나 python을 호출 할 때 -B 매개 변수를 전달하면됩니다.

python -B manage.py runserver 
0

아직에의 pyc의를 저지른하고있는 경우, 다음을 수행하십시오

추가 * .pyc 파일, * ~ .gitignore에 local_settings.py를 지정하십시오. 그런 다음 자식 저장소에 수행

find . -name '*.pyc' | xargs rm 
find . -name '*~' | xargs rm 

다음을 수행하십시오

git commit -am "get rif of them" 

는 이제 더 이상

8
git clean -X -n --exclude="!local_settings.py" 

일을 당신을 귀찮게하지 않아야합니다. 내가봤을 때 나는 이것을 발견하고 this page을 얻었다.

+0

니스! 고맙습니다. :) 나는 쉘에서'!'를 버려야했지만 효과가 있었다. – Vimes

1

이 카테고리에 해당하는 로컬 파일을 .git/info/exclude에 넣습니다 (예 : 내 IDE 프로젝트 파일). 그들은이 같은 깨끗한 작업을 수행 할 수 있습니다

git ls-files --others --exclude-from=.git/info/exclude -z | \ 
    xargs -0 --no-run-if-empty rm --verbose 

장소 :

  • --others : 비 추적 파일을 보여줍니다
  • --exclude-에서 : 표준 힘내에서 제외 스타일 파일을 무시 제공 목록
  • -z/-0은 : 이름을 분할하는 대신 \ n의 \ 0을 사용
  • 실행 --no--경우 비어 : 목록이 비어있는 경우 RM을 실행하지 마십시오

당신은 --interactive 당신이 삭제를 강제로 자식 myclean -f를해야 할 의미

git config --global alias.myclean '!git ls-files --others --exclude-from=.git/info/exclude -z | xargs -0 --no-run-if-empty rm --verbose --interactive' 

:, 예컨대을 별칭을 만들 수 있습니다.

참조 : http://git-scm.com/docs/git-ls-files (플러스 기본 .git/정보의 첫 번째 줄/제외)

관련 문제