2017-11-17 1 views
3

질문은 터무니없는 것처럼 보일 수 있지만 의심 스럽습니다. 나는 자식 전문가가 아니지만 명령 행을 통해 5 년 동안 매일 사용해 왔기 때문에 익숙해졌습니다. 여기 Gitignore : 변경 사항을 적용해야합니까?

내가 해결할 수없는 시나리오입니다 :

  • 내의 소중한 동료가 워드 프레스 프로젝트를 시작했다. 그는 repo에있는 모든 단일 파일을 저지른 ... 나쁜 생각.
  • 나는 프로젝트에 지금 간다, 그래서 프로젝트를 복제한다 (그래서 나의 색인은 청결하다). 먼저 .gitignore 파일에 몇 가지 항목을 추가하고 커밋합니다. 이 규칙에서는, "wp-config.php", 각 인스턴스 (local/preprod/prod)에서 바뀔 일반 WP 설정 파일을 추가했습니다. 쉬운.
  • 그러나 나는 내 로컬 설정이 특정 파일 변경 :

    [email protected]$ vi wp-config.php 
    [email protected]$ git st 
    On branch develop 
    Your branch is up-to-date with 'origin/develop'. 
    Changes not staged for commit: 
        (use "git add <file>..." to update what will be committed) 
        (use "git checkout -- <file>..." to discard changes in working directory) 
    
         modified: wp-config.php 
    
    no changes added to commit (use "git add" and/or "git commit -a") 
    

왜 그가 그렇게됩니다? 왜 내 파일을 무시하지 않는거야? 몇 읽은 후, 나는 어떤 동료는 같은 파일 삭제를한다는 것을 보았다

git rm -r --cached wp-config.php 

우리가 그렇게 할 수 있지만 우리는 삭제 된 (인덱스 파일에 얼룩을지게되어하지의 원인, 파일 삭제를 커밋했는지 확인 물리적으로). git repo에서 기존 파일을 무시하는 표준 방법입니까?

도움 주셔서 감사합니다.

# Ignore all logs files. 
*.log 

# Ignore the instance-based configuration. 
wp-config.php 

# Ignore cache, backups and uploaded files. 
wp-content/advanced-cache.php 
wp-content/backup-db/ 
wp-content/backups/ 
wp-content/blogs.dir/ 
wp-content/cache/ 
wp-content/upgrade/ 
wp-content/uploads/ 
wp-content/wp-cache-config.php 
wp-content/plugins/hello.php 

# Ignore some site-based root files. 
/.htaccess 
/sitemap.xml 
/sitemap.xml.gz 

# Ignore editor files. 
.idea 

# Ignore OS generated files. 
.DS_Store 
.DS_Store? 
._* 
.Spotlight-V100 
.Trashes 
ehthumbs.db 
Thumbs.db 
+0

이 답변보기 https://stackoverflow.com/a/20241145/6330106. 'git update-index --skip-worktree '도 비슷한 효과가 있습니다. '--no-skip-wortree' 또는'--no-assume-unchanged'는 변경 사항을 추적하고자 할 때 효과를 취소합니다. – ElpieKay

+5

[Git에서 추적했지만 현재 .gitignore에있는 파일을 잊어 버리는 방법] (https://stackoverflow.com/questions/1274057/how-to-make-git-forget-about) – phd

답변

0

당신은 git rm --cached path/to/file 커밋 할 필요가 : 여기

내 .gitignore 파일의 복사본입니다. git rm --cached $(git ls-files -i --exclude-from=.gitignore)

이 두 번째 명령은 .gitignore에 의해 처리로 무시 된 파일을 검색하고 git rm --cached 명령으로 그 경로를 삽입합니다 : 당신은 많은 파일이있는 경우, 인덱스에서 무시 된 파일을 제거 저장소 루트에서 다음을 실행할 수 있습니다 . 하위 디렉토리에 .gitignore을 중첩 한 경우 해당 개별 디렉토리를 세분화하여 정리하는 .gitignore 파일을 가리 킵니다.

.gitignore.gitignore 파일에 일치하는 패턴을 자동으로 추가 할 수 없기 때문에 파일을 본래 삭제하지 않는 이유가 있습니다. 색인에서 이미 추적 된 파일은 본질적으로 제거되지 않습니다.

+0

작업 트리에 보관하고 싶은 무시 된 파일이 *있는 경우 해당 파일을 제거합니다. 예외 추적을 유지하기 위해 각 파일을 커밋하기 전에'git reset '을 개별적으로 실행할 수 있습니다. –