programing

.gitignore 및 "다음 추적되지 않은 작업 트리 파일은 체크아웃에 의해 덮어쓰게 됩니다."

subpage 2023. 4. 24. 23:12
반응형

.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 하겠습니다

이 두 가지 기능

  1. git rm --cached
  2. git 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를 기반으로 지점을 만들고 현재 버전으로 돌아간다고 가정합니다.다음의 순서로 실시합니다.

  1. 되지 않은 파일을 셋업 :.gitignore$ git rm -r --cached 및 합니다.합니다..gitignore 자체를 to에에.gitignore 꼭 해 주세요.$ git rm -r --cached .gitignore이렇게 하면 git의 무시 동작이 이전 커밋과 동일하게 유지됩니다.

  2. 방금 한 변경을 커밋합니다.

    $ git add -A
    $ git commit
    
  3. 현재 로그를 저장합니다. 그렇지 않으면 현재 버전으로 돌아가는 데 문제가 발생할 수 있습니다.

    $ git log > ../git.log

  4. 커밋 K로의 하드리셋

    $ git reset --hard version_k

  5. 커밋 K에 따라 브랜치를 만듭니다.

    $ git branch commit_k_branch

  6. 해당 지점에 체크 아웃합니다.

    $ git checkout commit_k_branch

  7. 당신의 일을 하고 그것을 약속하라.

  8. 마스터로 다시 체크아웃

    $ git checkout master

  9. 현재 버전으로 다시 재설정

    $ git reset current_version ★★★★★★★★★★★★★★★★★」$ git reset ORIG_HEAD

  10. 이제 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_branch
  • git pull origin master
  • git 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

반응형