.gitignore 및 "다음 추적되지 않은 작업 트리 파일은 체크아웃에 의해 덮어쓰게 됩니다."
그래서 .gitignore 파일에 폴더를 추가했습니다.
가 ★★★★★★★★★★★★★★★★★★★★★.git status 수 있다
# On branch latest
nothing to commit (working directory clean)
다만, 브랜치를 변경하려고 하면, 다음과 같은 메세지가 표시됩니다.
My-MacBook-Pro:webapp marcamillion$ git checkout develop
error: The following untracked working tree files would be overwritten by checkout:
public/system/images/9/thumb/red-stripe.jpg
public/system/images/9/original/red-stripe.jpg
public/system/images/8/thumb/red-stripe-red.jpg
public/system/images/8/original/red-stripe-red.jpg
public/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpg
public/system/images/7/thumb/red-stripe-dark.jpg
public/system/images/7/original/red-stripe-dark.jpg
public/system/images/7/original/DSC07833.JPG
public/system/images/6/thumb/red-stripe-bw.jpg
public/system/images/6/original/website-logo.png
public/system/images/6/original/red-stripe-bw.jpg
public/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpg
public/system/images/5/original/logocompv-colored-squares-100px.png
public/system/images/5/original/Guy_Waving_Jamaican_Flag.jpg
public/system/images/4/thumb/DSC_0001.JPG
public/system/images/4/original/logo.png
public/system/images/4/original/DSC_0001.JPG
public/system/images/4/original/2-up.jpg
public/system/images/3/thumb/logo2.gif
public/system/images/3/original/logo2.gif
public/system/images/3/original/Guy_Waving_Jamaican_Flag.jpg
public/system/images/3/original/11002000962.jpg
public/system/images/2/thumb/Profile Pic.jpg
public/system/images/2/original/Profile Pic.jpg
public/system/images/2/original/02 Login Screen.jpg
public/system/images/1/original/Argentina-2010-World-Cup.jpg
Please move or remove them before you can switch branches.
Aborting
.gitignore 파일은 다음과 같습니다.
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*
파일을 삭제하지 않고 브랜치를 전환할 수 있도록 하려면 어떻게 해야 하나요?
변경 시 해당 파일에 영향을 미칩니까?다시 말하면, 그 후에 이 지점으로 돌아오면, 최근의 약속대로 모든 것이 완벽해질까요?
그 파일들을 잃어버리고 싶지 않아요 추적하고 싶지 않을 뿐이에요
경고: 추적되지 않은 파일이 삭제되므로 질문에 대한 좋은 답변이 아닙니다.
나도 이 메시지 눌렀어.저 같은 경우에는 파일을 보관하고 싶지 않았기 때문에 이 방법이 효과가 있었습니다.
git 2.11 이후
git clean -d -f .
오래된 git
git clean -d -f ""
git에 의해 무시된 파일도 삭제하려면 다음 명령을 실행합니다.
경고!!!이 때문에 프로젝트가 망가질 가능성이 높기 때문에, 자신이 하고 있는 일을 100% 알고 있는 경우에만 사용해 주세요.
git 2.11 이후
git clean -d -fx .
오래된 git
git clean -d -fx ""
http://www.kernel.org/pub/software/scm/git/docs/git-clean.html
-x무시된 파일뿐만 아니라 git에 알려지지 않은 파일도 제거됨을 의미합니다.-d추적되지 않은 파일뿐만 아니라 추적되지 않은 디렉토리도 삭제하는 것을 의미합니다.-f를 강제로 실행하기 위해 필요합니다.
경고:인덱싱되지 않은 로컬 파일이 삭제됩니다.
강요해 주세요 : 그냥강 just just just just just just just just just just just 。git checkout -f another-branch
해야 할 것 .을 주지 않기 에 repo를 사용하여 .git rm --cached . 。--cached작업 복사본에 영향을 주지 않고 다음 커밋 시 제거됨으로 표시됩니다.무시하다
그러나 .gitignore에 또 다른 문제가 있습니다.와일드카드를 과도하게 사용하고 있기 때문에 예상한 것보다 적게 일치합니다.대신 .gitignore를 변경하여 시도해 보겠습니다.
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/
public/system/images/
public/system/avatars/
OS X 를 사용하고 있는 경우는, 파일의 이름에 대소문자가 변경되어 있는 것이 원인일 가능성이 있습니다.다음 구성 옵션을 설정해 보십시오.
git config core.ignorecase true
이건 나한테 효과가 있었어.
1. git fetch --all
2. git reset --hard origin/{branch_name}
: Git)을 싶다고 .public/system/images/9/...Git에 의해 추적되지 않는 기존 파일이 이미 그 디렉토리에 있습니다.혹시 다른 사람이 Git 저장소에 파일을 추가했는데, 그 브랜치로 바꾼 것은 이번이 처음인가요?
의 파일 이유가 있다.develop현재 브랜치에는 없습니다.공동작업자에게 그 이유를 물어봐야 할 수도 있습니다.
파일을 삭제하지 않고 브랜치를 전환할 수 있도록 하려면 어떻게 해야 합니까?
어떻게든 파일을 없애지 않고는 할 수 없어요.을 바꿀 수 요.public로로 합니다.my_public지금으로서는요
나중에 이 지점으로 돌아오면 최근 약속대로 모든 것이 완벽할까요?
변경을 커밋하면 Git은 손실되지 않습니다.만약 당신이 변경을 하지 않는다면, Git은 당신이 한 일을 덮어쓰지 않기 위해 정말 열심히 노력할 것입니다.이것이 Git이 처음에 경고한 것입니다(브런치를 바꾸려고 했을 때).
이 중요한 작업에 대한 명령어가 있습니다(추적되지 않은 파일을 영구적으로 삭제).
git clean -i
★★★★★★★★★★★★★★★.git pull 하겠습니다
이 두 가지 기능
git rm --cachedgit checkout -f another-branch
통하지 않았다.
대신 Git이 지시하는 대로 파일을 물리적으로 삭제했습니다.
Please move or remove them before you can switch branches.
그리고 나서 추가/커밋했습니다.
그리고 당겼는데 작동했어!
스캇 쉐퍼의 대답보다 덜 큰 뭔가가 필요한 사람들을 위해,
git clean -f
효과가 있을 것 같습니다.도망갈 것을 강력히 권합니다
git clean --dry-run
이 는 Git을 합니다.git clean -f원치 않는 것을 실수로 제거하는 번거로움을 덜 수 있습니다.
자세한 내용은 이 Stack Overflow 응답 또는 문서를 참조하십시오.git clean.
도 둘 다 아니다git rm --cached ★★★★★★★★★★★★★★★★★」git clean -d -fx ""날 위해서 그랬어
이 솔루션은 지사를 리모트로 푸시하여 새로운 레포(repo)를 복제한 후 새로운 레포(repo)로 병합하는 것이었습니다.레포에 접속하는 다른 사람들도 똑같이 해야 했다.
:「 」를 합니다..gitignore처음부터 철하다.
이 문제를 신속하게 해결하려면다음 명령을 사용할 수 있습니다.
git checkout -f dev
이 명령어는 문제를 해결했습니다.
git add *
git stash
git pull
Windows 8 시스템에서 명령 프롬프트에서 Git을 사용하여 이 작업을 수행했습니다.나머지 팀원들은 TFS를 사용하고 있으며, 저는 Microsoft의 git-tf를 사용하여 TFS와 로컬 Git 저장소 사이에서 push/pull을 수행합니다.
이 문제는 일부 파일의 이름이 케이스만 변경되었기 때문에 발생했습니다.발생한 것으로 보이는 것은 다음과 같습니다.
- 그 파일들은 이름에 대소문자가 섞여 체크인 되어 있었다.
- 이후 커밋에서는 파일명이 모두 소문자로 변경되었습니다.
- git-tf는 처음에 파일을 혼합 케이스로 받았습니다.
- 파일명이 소문자로 바뀌었을 때 git-tf는 파일을 얻지 못했습니다.왜냐하면 Windows 8에서는 파일명이 같기 때문입니다.
- Git은 대소문자를 구분하기 때문에 소스 컨트롤에 없는 혼합 케이스 파일을 가지고 있다고 불평했습니다. ,, 을, 을, 용을
git statusWindows 명령어프롬프트에서는 파일명이 동일하기 때문에 변경을 볼 수 없었습니다.
가장 간단한 해결책은 다음과 같습니다.
git checkout이 파일들이 추가되기 훨씬 전에 프로젝트의 이전 버전입니다.- 그리고 올바른 파일 케이스를 가진 프로젝트의 최신 버전입니다.
이전에 약속했던 지점에서 체크아웃할 때도 같은 문제가 있었습니다.Git은 추적되지 않은 파일 때문에 체크아웃을 거부했습니다.
해결책을 찾았으니 당신도 도움이 되길 바랍니다.
을 받는 를 에 .gitignore 발행.$ git rm -r --cached이치노
몇 가지 테스트를 위해 이전 커밋 K를 기반으로 지점을 만들고 현재 버전으로 돌아간다고 가정합니다.다음의 순서로 실시합니다.
되지 않은 파일을 셋업 :
.gitignore$ git rm -r --cached및 합니다.합니다..gitignore자체를 to에에.gitignore꼭 해 주세요.$ git rm -r --cached .gitignore이렇게 하면 git의 무시 동작이 이전 커밋과 동일하게 유지됩니다.방금 한 변경을 커밋합니다.
$ git add -A $ git commit현재 로그를 저장합니다. 그렇지 않으면 현재 버전으로 돌아가는 데 문제가 발생할 수 있습니다.
$ git log > ../git.log커밋 K로의 하드리셋
$ git reset --hard version_k커밋 K에 따라 브랜치를 만듭니다.
$ git branch commit_k_branch해당 지점에 체크 아웃합니다.
$ git checkout commit_k_branch당신의 일을 하고 그것을 약속하라.
마스터로 다시 체크아웃
$ git checkout master현재 버전으로 다시 재설정
$ git reset current_version★★★★★★★★★★★★★★★★★」$ git reset ORIG_HEAD이제 HEAD로 하드 리셋할 수 있습니다.
git reset --hard HEAD
참고! 다음에서 마지막 단계(예: 예)를 건너뛰지 마십시오.$ git reset --hard ORIG_HEAD그렇지 않으면 위에서 불평한 추적되지 않은 파일이 손실됩니다.
또한 git이 불평한 파일들은 삭제되지 않았는지 확인했습니다.했습니다.$ for i in $(cat ../test.txt); do ls -ahl $i; done
을 할 잊지 발급해 .$ git status불필요한 변경이 발생하지 않도록 합니다.
제 경우 서브모듈에 문제가 있었습니다. master는 프로젝트에 새로운 서브모듈을 추가한 다른 브랜치와 병합되었습니다.제가 계산하려고 했던 브랜치에는 그것이 없었습니다.그래서 git은 추적되지 않은 파일에 대해 불평을 하고 있었고, 다른 제안 솔루션들은 나에게 효과가 없었습니다.나는 새 지점까지 계산을 강요하고 마스터를 불러냈다.
git checkout -f my_branchgit pull origin mastergit submodule update --init
같은 에는 ★★★★★★★★★★★★★★★★★★★★★★★.git rm --cached효과가 없었습니다.하지만 나는 그것을 얻었다.git rebase
저도 같은 문제에 직면하여 위의 모든 해결책을 시도해 보았지만 효과가 없었습니다.
이 문제는 내 이름을 바꾸었을 때 발생했습니다.onMusicUpdateListener.java로로 합니다.OnMusicUpdateListener.javadevelop★★★★★★ 。
, 이제master 있었다onMusicUpdateListener.java ★★★★★★★★★★★★★★★★★」develop 있었다OnMusicUpdateListener.java
이제 마스터로 전환할 때마다 오류가 발생했습니다.
The following untracked working tree files would be overwritten by checkout
나서 and음음 and andaborted.
이 문제를 해결하기 위해, 나는 강제로checked out master을 바꿨습니다.onMusicUpdateListener.java로로 합니다.OnMusicUpdateListener.java,committed 다음에merged와 함께 하다develop★★★★★★ 。
나서 저는 했습니다.developmerging을 에 it에 넣다master이제 모든 것이 정상으로 돌아와 문제가 해결되었다.
해결은 간단합니다.git은 양쪽 브랜치에 같은 파일이 있기 때문에 마스터 브랜치에서 특정 파일을 삭제한 후 병합할 수 있습니다.
git merge "your branch"
잘 됐으면 좋겠는데, 난 방금 내 실수를 해결했어. 내 실수는:
error: The following untracked working tree files would be overwritten by merge:
.vs/slnx.sqlite
Please move or remove them before you merge.
Aborting
제제작!!!!! 같은 에는 ★★★★★★★★★★★★★★★★★★★★★★★..vs/slnx.sqlite비주얼 스튜디오
이것은 허가상의 문제일 수 있습니다.
소유권 변경,
sudo chown -v -R usr-name:group-name folder-name
이름은 같지만 대소문자가 다른 파일 2개가 문제일 수 있습니다.
이러한 파일 중 하나를 삭제하거나 이름을 변경할 수 있습니다.예:
Pdf.html.twig (The GOOD one)
pdf.html.twig (The one I deleted)
삭제 대신 파일 이동
파일 삭제를 방지하는 한 가지 방법은 파일을 이동하는 것입니다.예를 들어 다음과 같습니다.
cd "`git rev-parse --show-toplevel`"
git checkout 2>&1 | while read f; do [ ! -e "$f" ] || mv "$f" "$f".bak; done
로 파일 후 " " " 를 합니다.pull에러 메세지가 표시됩니다.
이 에러는, 일반적인 오픈 소스 CMS 를 사용하고 있기 때문에, 문제의 원인이 되고 있는 디렉토리가 CMS 가 기입하는 업 로드 디렉토리였기 때문에 발생하고 있었습니다.
즉, 파일에는 없지만 버전 관리에서는 얻을 수 없는 파일이 있다는 것입니다.
라이브 사이트에서 로컬로 모든 파일을 가져오고 있습니다.이것으로 문제가 해결되기를 바라고, 이것을 레포에 체크인 합니다.
이 문제를 해결하려면 appname/gen/에서 .gitignore 파일을 삭제하십시오.
파일 시스템에 가서 파일을 직접 삭제한 후 git checkout을 계속하면 작동했습니다.
여러 번 문제가 발생했는데, 이는 개발자가 삭제, 푸시, 재추가, 푸시 등의 작업을 하는 것과 관련이 있을 수 있습니다.
대부분의 답변은 파일 삭제 또는 삭제를 고려하며, 이는 쉬운 방법입니다.그러나 로컬 파일을 삭제하지 않을 수도 있습니다.하지만 전략과 결합하면 git도 이에 대한 솔루션을 가질 수 있습니다.
git merge --strategy=ours master
파일을 삭제하거나 이름을 바꾸면 됩니다.
예.
$ git pull
Enter passphrase for key '/c/Users/PC983/.ssh/id_rsa':
error: Your local changes to the following files would be overwritten by merge:
ajax/productPrice.php
Please commit your changes or stash them before you merge.
error: The following untracked working tree files would be overwritten by merge:
ajax/product.php
Please move or remove them before you merge.
Aborting
Updating a04cbe7a..6aa8ead5
ajax/product.php와 ajax/produtPrice.php의 이름을 바꾸거나 삭제해야 했습니다.
걱정 마, 당기는 게 그들을 다시 데려올 거야.일부 변경 사항이 손실될 수 있으므로 삭제하는 대신 이름을 변경하는 것이 좋습니다.
문제가 해결되지 않으면 전체를 하고 다시 후 브랜치를 다시 .git pull origin remotebranch
수정된 파일을 저장하고 나중에 수정된 콘텐츠를 사용하기 위해.지점을 체크 아웃하고 기본을 변경하려고 할 때 이 오류가 발생했습니다.Git Stash 사용
git stash
'/' 또는 특수 기호가 있는 폴더 이름을 확인한 다음 해당 폴더의 이름을 바꿉니다.그런 다음 저장소를 다른 위치로 복제하면 됩니다.
방법은 다음과 .고객이 올바른 작업 디렉토리에 있는지 확인하는 것 뿐입니다.GitBash이 메시지는 사용자가 폴더 계층에서 너무 높은 디렉토리를 병합하려고 할 때 거의 매번 발생합니다.
예:
/workspace/git/myBashSourceFolder/myProjectSourcefolder
in " " " repo "git-folder그는 이클립스에서 새로운 자바 프로젝트를 만들고 복제된 레포(repo)를 Import했습니다.이클립스(Eclipse)는 myProjectSourceFolder(myProjectSourceFolder)를 했기 때문에 거기서부터 밀고 .따라서 는 git bash를 사용합니다. git 동기myProjectSourceFoldermyBashSourceFolder 따라서 myBashSourceFolder에서 push/pull/merge를 실행하면 이전에 작업했던 폴더가 아닌 다음 번에 동기화하려고 할 때 지정된 출력이 생성됩니다.
솔루션:올바른 폴더를 입력하고 다시 꺼냅니다.이 솔루션은 거의 매번 정상적으로 동작했습니다.
언급URL : https://stackoverflow.com/questions/4858047/gitignore-and-the-following-untracked-working-tree-files-would-be-overwritten
'programing' 카테고리의 다른 글
| Azure 테이블: 파티션/행 키 선택 베스트 프랙티스 (0) | 2023.04.24 |
|---|---|
| 외부 클릭 시 드롭다운을 닫으려면 어떻게 해야 합니까? (0) | 2023.04.24 |
| Windows 배치 스크립트에서 "@"는 무엇을 의미합니까? (0) | 2023.04.24 |
| __doPostBack() 사용방법 (0) | 2023.04.24 |
| 파라미터로서의 Objective-C 패스블록 (0) | 2023.04.24 |