programing

Git 저장소에 이미 커밋된 파일 무시

newstyles 2023. 4. 9. 21:15

Git 저장소에 이미 커밋된 파일 무시

초기화 되어 있는 Git 를 가지고 .Git 저장소를 했습니다..gitignore파일링 합니다.무시하려는 파일이 무시되도록 파일 인덱스를 새로 고치려면 어떻게 해야 합니까?

저장소에 이미 추가/초기화된 단일 파일의 추적을 해제하려면(즉, 파일 추적을 중지하되 시스템에서 삭제하지 않음) 다음 절차를 따릅니다.git rm --cached filename

현재 에 있는 모든 파일을 추적 해제하려면.gitignore:

먼저 미결 코드 변경을 커밋한 후 다음 명령을 수행합니다.

git rm -r --cached .

이렇게 하면 인덱스(스테이징 영역)에서 변경된 파일이 모두 제거되고 다음 작업만 실행됩니다.

git add .

커밋:

git commit -m ".gitignore is now working"

git rm --cached filename하다, 사용하다git add filename.

후 실행해 .git add .그렇지 않으면 다른 파일의 변경 내용이 손실됩니다.

이 파일을 저장소로 푸시하고 다른 곳에서 파일을 계속 추적하는 상태로 가져오면 파일이 삭제됩니다.

저장소에서 이미 추적된 파일(예를 들어 로컬 환경에서 변경은 필요하지만 이러한 변경은 체크인하지 않는 dev.properties 파일)에 대한 변경을 무시하려면 다음 작업을 수행합니다.

git update-index --assume-unchanged <file>

변경 내용 추적을 다시 시작하려면:

git update-index --no-assume-unchanged <file>

git-update-index (1) " " 페이지를 참조하십시오.

,, 이, 이도 보세요.skip-worktree ★★★★★★★★★★★★★★★★★」no-skip-worktreeupdate-index 옵션(git-index를 통해 git-index를 지속할 필요가 있는 경우)


업데이트: 로컬 작업 공간에서 현재 "무시"(--전제 변경 없음)된 파일을 확인할 수 있는 편리한 별칭이 있습니다.

git config --global alias.ignored = !git ls-files -v | grep "^[[:lower:]]"

즉, 하지 않는 경우) 다음과 같이 .git rm --cached filename

- 네 -.gitignore시스템은 git에서 현재 버전 제어되지 않은 파일만 무시합니다.

를 들어,한 경우, 은 「」입니다.test.txt를 사용합니다.git-add그 후 를 추가합니다.test.txt로로 합니다..gitignore여전히 변화를 일으킬 것이다test.txt추적해야 합니다.

해야 될 것 같아요.git rm test.txt우선 그 변화를 커밋합니다. 그만, only, 다 to다다 to to to to to to로 바뀝니다.test.txt★★★★★★★★★★★★★★★★★★▼

.gitignore에서 후행 공백을 제거합니다.

또한 .gitignore에는 후행 공백이 없어야 합니다.답을 찾고 있었기 때문에 이 질문을 하게 되었습니다.그러면 .gitignore를 캐치하는 대신 에디터를 열어야겠다는 이상한 생각이 들었습니다.끝에서 여분의 공간을 1개 삭제하여 동작하게 되었습니다.

나는 이 단계를 따랐다.

git rm -r --cached .
git add .
git reset HEAD

그 후 무시해야 할 모든 파일(내 경우 *.swp)을 삭제합니다.

복잡한 답은 어디에나 있습니다!

다음 항목만 사용하세요.

git rm -r --cached .

무시하려는 파일이 컴퓨터의 마스터가 아닌 원본에서 제거됩니다.

그러고 나서 그냥 밀고 나가!

, 이은 「」를 무시하는 것이 .config/database.yml★★★★

git rm --cached config/database.yml
# this will delete your file from git history but not from your local system.

이 을 이 해 주세요..gitignore파일링하여 변경을 커밋합니다.git.yml은 gityml git에 의해 .

$ echo config/database.yml >> .gitignore

감사해요.

일부 특정 파일만 추적에서 제거하려면 다음 절차를 따릅니다.

git update-index --assume-unchanged path/to/file

추적을 다시 시작하려면 다음 절차를 따릅니다.

git update-index --no-assume-unchanged path/to/file                      

dav_i가 말한 것처럼 파일을 리포에 보관하고 추가 커밋을 작성하지 않고 변경에서 제거하려면 다음을 사용할 수 있습니다.

git update-index --assume-unchanged filename

나는 어떤 대답도 통하지 않았다.

대신:

  1. git 제어 디렉토리에서 파일을 이동합니다.
  2. git에 대한 제거를 확인합니다.
  3. 디렉토리 "」로 되돌립니다.

기트

!디토!

'답변' 명령어가 무엇을 했는지 잘 몰라서, 나는 매우 실망스럽게도 그것을 실행했다.git repo에서 모든 파일을 재귀적으로 삭제합니다.

구조 스택오버플로우...git rm -r ?를 되돌리는 방법

git reset HEAD

덮어쓰고 싶지 않은 로컬 파일을 커밋하지 않았기 때문에 문제가 해결되었습니다.

저처럼 느린 사람을 위한 또 다른 제안이 있습니다=) .displayignore 파일을 .display 폴더가 아닌 저장소 루트에 넣으십시오.건배!

파일이 이미 버전 관리 상태에 있는 경우 수동으로 제거해야 합니다.

또 다른 문제는 인라인 댓글을 달았다는 것입니다.

tmp/*   # ignore my tmp folder (this doesn't work)

이것은 효과가 있다

# ignore my tmp folder
tmp/

당신의 답변 덕분에 저는 이 작은 원라이너를 써서 개선할 수 있었습니다. 문제 띄는 코멘트해 .gitignore와 repo로 실행해 보았지만, 문제가 있는 것을 발견하면 코멘트를 주세요. 하면 될 것 같아요.git rm -r --cached부터.gitignore:

cat $(git rev-parse --show-toplevel)/.gitIgnore | sed "s/\/$//" | grep -v "^#" | xargs -L 1 -I {} find $(git rev-parse --show-toplevel) -name "{}" | xargs -L 1 git rm -r --cached

많은 정보를 얻을 수 있습니다.fatal: pathspec '<pathspec>' did not match any files수정되지 않은 파일만 해당됩니다.

.gitignore에서 이상한 문제가 발견되었습니다.모든 것이 제자리에 있고 올바른 것처럼 보였다..gitignore가 "무시"된 유일한 이유는 행의 끝이 Mac 형식(\r)이기 때문입니다.따라서 올바른 줄 바꿈(vi 단위:set ff=setting 사용)으로 파일을 저장하면 모든 것이 잘 작동됩니다!

여기서 언급되지 않은 다른 문제는 Windows 메모장에서 .gitignore를 작성했다면 다른 플랫폼에서는 횡설수설처럼 보일 수 있다는 것입니다.여기서 중요한 것은 메모장에서 인코딩이 ANSI로 설정되어 있는지 확인하는 것입니다(혹은 파일을 Linux 상에서 작성하는 경우).

제 답변부터 https://stackoverflow.com/a/11451916/406592

무시된 파일의 추적을 중지해야 하는 경우 다음 명령을 조합할 수 있습니다.

git ls-files -i --exclude-standard | xargs -L1 git rm --cached

그러면 무시된 파일의 추적이 중지됩니다.파일 시스템에서 파일을 실제로 삭제하려면--cached선택.다음과 같이 검색을 제한할 폴더를 지정할 수도 있습니다.

git ls-files -i --exclude-standard -- ${FOLDER} | xargs -L1 git rm

서버 Linux 서버(로컬 dev mac에서는 true가 아님)에서는 아스타리스크를 추가하지 않는 한 디렉토리는 무시됩니다.

www/flash/*

왜 그랬는지 모르겠지만 몇 시간 정도 여유가 생겨서...

또 하나 유의해야 할 것은.gitignore추적되지 않은 파일을 무시하지 않는 것처럼 보이는 것은 무시와 같은 행에 코멘트를 두지 않는 것입니다.그러니까 이건 괜찮아

# ignore all foo.txt, foo.markdown, foo.dat, etc.
foo*

하지만 이 방법은 작동하지 않습니다.

foo*   # ignore all foo.txt, foo.markdown, foo.dat, etc.

.gitignore를 " named named 、 자자 named 、 named named named named named named named named named named named named named named named named named named named named named named named named named named"로하고 있습니다."foo* # ignore all foo.txt, foo.markdown, foo.dat, etc."물 、 당 、 가 、 고 、 신죠않않않않 。

언급URL : https://stackoverflow.com/questions/1139762/ignore-files-that-have-already-been-committed-to-a-git-repository