단일 파일을 제외한 모든 파일을 커밋에 추가 하시겠습니까? main/plzcheckmein.c # deleted: main/plzcheckmein2.c … 내가 할

변경 세트에 많은 파일이 있지만 수정 된 단일 파일을 구체적으로 무시하고 싶습니다. 다음과 같이 보입니다 git status:

# modified:   main/dontcheckmein.txt
# deleted:    main/plzcheckmein.c
# deleted:    main/plzcheckmein2.c
...

내가 할 수있는 방법이 git add있지만 만지고 싶지 않은 텍스트 파일을 무시하십시오. 다음과 같은 것 :

git add -u -except main/dontcheckmein.txt



답변

git add -u
git reset -- main/dontcheckmein.txt


답변

1) 이미 버전이 지정된 단일 파일에 대한 변경 사항을 무시하려면

git update-index --assume-unchanged "main/dontcheckmein.txt"

그리고 그것을 취소 git update-index --no-assume-unchanged "main/dontcheckmein.txt"

파일을 무시하는 github 문서

2) 특정 단일 파일을 완전히 무시하여 리포지토리에서 파일을 만들 수 없음

먼저이 stackoverflow 게시물을보십시오 : Git global ignore not working

에서 .gitignore선행없이 파일에 상대 경로를 추가하십시오 ./.

그래서, 당신의 파일에있는 경우 MyProject/MyFolder/myfile.txt(여기서, .git에 또한 MyProject폴더) 추가 MyFolder/myfile.txt귀하에 .gitignore파일.

를 통해 무시와 관련된 규칙을 확인할 수 있습니다 git check-ignore "MyFolder/myfile.txt"

글로벌 무시에 대하여

이 링크는에 대해 이야기 ~/.gitignore_global하지만 파일은 프로젝트와 관련이 있습니다. 따라서 제외 패턴을 MyFolder/myfile.txt에 넣으면 ~/.gitignore_global작동하지만 의미가 없습니다 …

반면, git config core.excludesfile .gitignorewhere .gitignoreis in으로 프로젝트를 설정 MyProject하면 로컬 파일이 재정의 ~/.gitignore_global되어 매우 유용한 규칙을 가질 수 있습니다

현재로서는 at .gitignore과 혼합 할 스크립트를 만드는 것이 가장 좋습니다 .~/.gitignore_global.gitignore

마지막 경고 하나
무시하려는 파일이 이미 리포지토리에있는 경우이 방법을 수행하지 않으면이 방법이 작동하지 않습니다. git rm "MyFolder/myfile.txt"그러나 로컬에서 제거되기 때문에 먼저 백업하십시오! 나중에 다시 복사 할 수 있습니다 …


답변

파일

git add -u
git reset -- main/dontcheckmein.txt

폴더

git add -u
git reset -- main/*


답변

이제 pathspec 마술 과 짧은 형식으로 git지원합니다 . 따라서 다음 명령으로 쉽게 달성 할 수 있습니다.exclude certain paths and files:(exclude):!

git add --all -- :!main/dontcheckmein.txt
git add -- . :!main/dontcheckmein.txt

실제로 더 지정할 수 있습니다.

git add --all -- :!path/to/file1 :!path/to/file2 :!path/to/folder1/*
git add -- . :!path/to/file1 :!path/to/file2 :!path/to/folder1/*


답변

Ben Jackson은 정확하지만 그 솔루션을 어떻게 사용했는지 추가 할 것이라고 생각했습니다. 아래는 내가 사용하는 매우 간단한 스크립트 (gitadd라고 함)는 파일에 나열된 일부를 제외하고 모든 변경 사항을 추가하는 데 사용되는 매우 간단한 스크립트입니다 ( .gittrackignore.gitignore 작동 방식과 매우 유사).

#!/bin/bash
set -e

git add -A
git reset `cat .gittrackignore`

그리고 이것이 나의 현재 .gittrackignore모습입니다.

project.properties

배포 할 때 명령 줄에서 컴파일하는 Android 프로젝트에서 작업하고 있습니다. 이 프로젝트는 SherlockActionBar에 의존하므로 project.properties에서 참조해야하지만 컴파일과 엉망이므로 이제는 gitadd매번 project.properties를 추가하지 않고 git에 대한 모든 변경 사항을 입력 하고 추가하기 만하면 됩니다.


답변

파일의 변경 사항을 유지하지만 커밋하지 않기 위해이 작업을 수행했습니다.

git add .

git reset -- main/dontcheckmein.txt

git commit -m "commit message"

파일이 제외되었는지 확인하려면

git status


답변

사용하다 git add -A 한 번에 모든 수정 및 새로 추가 된 파일을 추가 할 수 있습니다.

git add -A
git reset -- main/dontcheckmein.txt