추적되지 않은 다음 작업 트리 파일은 병합을 통해 덮어쓰지만 상관 없음
내 지점에 .gitignore에 있는 파일이 몇 개 있었습니다.
다른 분기에서는 이러한 파일이 없습니다.
저는 다른 분기를 제 것으로 병합하고 싶습니다. 그리고 저는 그 파일들이 더 이상 무시되지 않는지 신경 쓰지 않습니다.
불행하게도 나는 이것을 이해합니다.
추적되지 않은 다음 작업 트리 파일을 병합하여 덮어씁니다.
파일을 직접 찾거나 이동 또는 삭제할 필요 없이 파일을 덮어쓰도록 pull 명령을 수정하려면 어떻게 해야 합니까?
문제는 파일을 로컬로 추적하는 것이 아니라 동일한 파일이 원격으로 추적되므로 시스템에서 버전이 제어되지 않는 로컬 파일을 "풀"하도록 강제로 덮어쓰게 된다는 것입니다.
달려보기
git add *
git stash
git pull
이렇게 하면 모든 파일이 추적되고 해당 파일에 대한 모든 로컬 변경 사항이 제거된 다음 서버에서 파일을 가져옵니다.
로컬에서 추적되지 않은 파일을 지우는 명령을 시도할 수 있습니다.
Git 2.11 이상 버전:
git clean -d -f .
Git의 이전 버전:
git clean -d -f ""
에▁where디-d
다음으로 대체할 수 있습니다.
-x
Git에 알려지지 않은 파일뿐만 아니라 무시된 파일도 제거됩니다.-d
추적되지 않은 파일 외에 추적되지 않은 디렉터리도 제거합니다.-f
강제 실행에 필요합니다.
여기에도 도움이 될 수 있는 링크가 있습니다.
저에게 효과가 있었던 유일한 명령은 다음과 같습니다. (모든 로컬 파일을 삭제합니다. 주의하십시오.)
git fetch --all
git reset --hard origin/{{your branch name}}
번거로운 파일만 안전하게 제거/덮어쓰기
이 신이원할 하고 때.merge
:
git checkout -f donor-branch # replace bothersome files with tracked versions
git checkout receiving-branch # tracked bothersome files disappear
git merge donor-branch # merge works
이 신이원할 하고 때.pull
:
git fetch
git checkout -f origin/mybranch # replace bothersome files with tracked versions
git checkout mybranch # tracked bothersome files disappear
git pull origin/mybranch # pull works
이것만 알면 됩니다.다음은 설명입니다.
상세설명
제거할 성가신 파일:
- 브랜치에 의 경우).
git pull
지점), 스업림분기트),기), - 수신 분기에 존재하지 않습니다.
- 사용자의 작업 디렉토리에 존재하고 추적되지 않기 때문에 병합을 차단합니다.
git merge -f
그리고.git pull -f
존하지않만지재,git checkout -f
그렇습니다.
는 사합니다를 사용할 입니다.git checkout -f
+git checkout
추적 + 귀찮은 파일을 제거하면 병합이 정상적으로 진행됩니다.
1단계. 이 단계는 추적되지 않은 성가신 파일을 강제로 도너 분기의 추적된 버전으로 바꿉니다(도너 분기를 체크아웃하고 나머지 작업 디렉터리를 업데이트합니다).
git checkout -f donor-branch
2단계. 이 단계에서는 현재(기증자) 지점에서 추적되고, 다음 지점에는 없기 때문에 성가신 파일을 제거합니다.receiving-branch
우리는 전환합니다.
git checkout receiving-branch
3단계. 이제 성가신 파일이 없으므로, 도너 분기에서 병합하면 추적되지 않은 파일을 덮어쓰지 않으므로 오류가 발생하지 않습니다.
git merge donor-branch
추적되지 않은 모든 파일 제거:
git clean -d -fx .
주의: 파일을 추적하지 않는 한 IDE 파일 및 유용한 파일이 삭제됩니다.이 명령을 주의하여 사용합니다.
당신은 그 명령을 시도할 수 있습니다.
git clean -df
편집: 중요한 추적되지 않은 파일이 삭제됩니다.@preckaus 덕분에
일회성 작업인 경우 꺼내기 전에 작업 디렉터리에서 추적되지 않은 모든 파일을 제거할 수 있습니다.현재 Git 작업 트리에서 로컬(추적되지 않은) 파일을 제거하는 방법을 읽으십니까?추적되지 않은 모든 파일을 제거하는 방법에 대한 자세한 내용을 참조하십시오.
여전히 필요한 추적되지 않은 파일을 실수로 제거하지 마십시오;)
업데이트 - 더 나은 버전
이 도구(https://github.com/mklepaczewski/git-clean-before-merge) 는 다음과 같습니다.
- 되지 않은 파일 중 해당 파일과
git pull
가물등,, - 이 수정된 파일과 .
git pull
가물등,, - 되지 않은 을 보고합니다.
git pull
다운로드, - 그 도구는 다음과 같습니다.
--pretend
파일을 수정하지 않는 옵션입니다.
이전 버전
이 답변은 다른 답변과 어떻게 다릅니까?
여기에 제시된 방법은 병합으로 덮어쓸 파일만 제거합니다.디렉터리에 추적되지 않은 다른 파일(무시될 수 있음)이 있는 경우 이 방법은 해당 파일을 제거하지 않습니다.
해결책
이 스니펫은 다음에 의해 덮어쓰게 될 추적되지 않은 모든 파일을 추출합니다.git pull
삭제합니다.
git pull 2>&1|grep -E '^\s'|cut -f2-|xargs -I {} rm -rf "{}"
그런 다음 그냥 하세요.
git pull
이 명령은 git perciper 명령이 아니므로 항상 다음을 사용하여 수행할 작업을 두 번 확인합니다.
git pull 2>&1|grep -E '^\s'|cut -f2-|xargs -I {} echo "{}"
설명 - 라이너 하나가 무섭기 때문입니다.
다음은 이 솔루션의 기능에 대한 설명입니다.
git pull 2>&1
획포를git pull
출력하것을 stdout으로 할 수 .grep
.grep -E '^\s
그 의도는 추적되지 않은 파일의 목록을 캡처하는 것입니다.git pull
파일 이름 앞에 공백 문자가 많이 있으므로 파일 이름을 가져오는 데 사용합니다.cut -f2-
2에서 각을 제거합니다.xargs -I {} rm -rf "{}"
우리들xargs
파일에 한 후 "{}"를 호출합니다.rm
그들 각자에게.우리는 사용합니다.-rf
추적되지 않은 디렉토리를 강제로 삭제하고 제거합니다.
1-3단계를 도자기 명령으로 대체하면 좋겠지만, 그에 상응하는 것이 있는지 모르겠습니다.
클린/리셋/하드 체크아웃/리베이스 모두 작동하지 않았습니다.
그래서 git이 불만을 제기한 파일을 제거했습니다.
rm /path/to/files/that/git/complained/about
*새로운 repo를 별도의 폴더에서 확인하여 이 파일을 제거할 수 있는지 확인하였습니다(파일이 없었습니다).
문제는 추적되지 않은 파일을 병합하는 수신 변경사항이 있을 때 git이 불평합니다.다음 명령이 도움이 되었습니다.
git clean -dxf
git pull origin master
1단계: 작업 복사본 정리
로컬 변경사항을 스택에 저장 로컬 변경사항을 보존하려면 해당 변경사항을 스택에 안전하게 저장할 수 있습니다.나중에 원하는 경우에 사용할 수 있습니다.
$ git stash --include-untracked
로컬 변경사항 삭제 더 이상 필요하지 않은 경우 로컬 변경사항을 완전히 삭제할 수 있습니다.
$ git reset --hard
추적되지 않은 파일이나 새 파일도 있는 경우 "git clean" 명령을 사용하여 다음을 제거해야 합니다.
$ git clean -fd
2단계: 다시 당기기 덮어쓸 수 있는 로컬 변경 사항/추적되지 않은 파일을 모두 정리한 후에는 마침내 당기기가 작동합니다.
$ git pull
사을고경우를 사용하는 한다면,-f
실행으로 .에 어떤 P 단 당 다 음 신 이 에 것 상 있 알 는 다 미 고 리 될 지 처 지 게 -P.
-n
--dry-run
Don’t actually remove anything, just show what would be done.
파일이 더 이상 필요하지 않은 경우 승인된 답변 외에도 다음 파일을 지정하여 파일을 제거할 수 있습니다.
git clean -f '/path/to/file/'
git clean이 제거할 파일을 확인하려면 먼저 -n 플래그로 실행해야 합니다.이러한 파일은 삭제됩니다.저의 경우에는 어쨌든 그들을 신경 쓰지 않았기 때문에, 그것이 저에게 더 나은 해결책이었습니다.
이를 위한 한 가지 방법은 로컬 변경사항을 저장하고 원격 저장소에서 끌어오는 것입니다.이렇게 하면 파일이 저장소로 이동하므로 로컬 파일이 손실되지 않습니다.
git add -A
git stash
git pull
할 수 .git stash list
모르는 사용자를 위해 Git는 파일 및 폴더의 대/소문자 이름 차이를 무시합니다.이름을 대소문자가 다른 동일한 이름으로 바꾸면 악몽이 됩니다.
폴더 이름을 "Petstore"에서 "petstore"(대문자에서 소문자)로 변경할 때 이 문제가 발생했습니다..git/config 파일을 편집하여 대소문자 무시를 중지하고, 변경 사항을 변경하고, 커밋을 지웠으며, 변경 사항을 다른 지점으로 이동하기 위해 저장했습니다.저장된 변경 사항을 이 다른 지점에 적용할 수 없습니다.
제가 발견한 해결책은 .git/config 파일을 임시로 편집하여 케이스를 일시적으로 다시 무시하는 것이었습니다.이 이로인의 원인이 되었습니다.git stash apply
ignoreCase로 바꿨습니다.false
그런 다음 어떤 이유로든 git이 삭제되었다고 이상하게 주장하는 petstore 폴더의 새 파일을 제외한 모든 것을 추가했습니다.변경 사항을 커밋한 다음 실행했습니다.git reset --hard HEAD
추적되지 않은 새 파일을 제거할 수 있습니다.내 커밋이 예상대로 표시되었습니다. 폴더의 파일 이름이 변경되었습니다.
이것이 제 악몽을 피하는 데 도움이 되기를 바랍니다.
Git 2.23 이후(2019년 3분기) 답변은 Esteis 답변처럼 오래되고 혼란스러운 명령을 사용하지 않을 것입니다.
다음을 사용할 수 있습니다.
git switch
나뭇가지를 바꾸다git restore
파일을 복원하려면(여기에 설명됨)
그래서:
번거로운 파일만 안전하게 제거/덮어쓰기
병합할 경우:
git switch -f receiving-branch # -f is an alias for --discard-changes.
git merge donor-branch # merge works
당기고 싶은 경우:
git switch -f mybranch # automatically track origin/mybranch
git pull
피할 수 있는 기능:
- 그자리의
git clean
한 작전 - 머리가 떨어져 있는 것처럼
git checkout origin/myBranch
) - 명시적인 당김, 왜냐하면 그것과 동등한 추측 모드를 가지고 있기 때문입니다.
git switch -c <branch> --track <remote>/<branch>
것을 의미합니다.git pull
그러면 충분합니다.
이런 문제가 있었을 때의 저의 경우입니다.리모콘에서 이름을 바꾼 로컬 파일이 있었습니다.
하려고 할 때git pull
Git는 새 파일 이름이 추적되지 않았다고 말했습니다. 아직 로컬에 존재하지는 않지만 리모컨에 있었습니다.
지역적으로 할 수 없는 경우가 없었기 때문입니다.git pull
git rm
이전 파일 이름(처음에는 이름을 바꾸려는 멍청한 생각 때문에 명확하지 않았습니다).
.gitignore 아래에 파일을 작성한 경우 파일을 제거하고 git pull을 다시 실행합니다.그게 도움이 됐어요.
저도 같은 문제가 있습니다. 로컬 지점에서 마스터를 병합하려고 할 때마다 다음과 같이 표시됩니다.
"다음 추적되지 않은 작업 트리 파일은 M.xcworkspace/xcshareddata/swiftpm/Package.resolved를 병합하여 덮어씁니다."
하지만 위의 답변을 따르는 것은 저에게 효과가 없었습니다.가 할 처럼.git status
되지 않은 파일이 가 할 는 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠgit add .
스테이징된 파일이 없으므로 스테이징을 한다고 해서 문제가 해결되거나 위에서 답변한 것처럼 강제로 체크아웃되지 않습니다.
위에서 언급한 것처럼 다음 명령을 실행하여 해결할 수 있었지만, 더 중요한 것은 Xcode를 닫아야 했습니다(clean 명령을 실행한 후에도 문제가 발생한 파일을 생성하고 있었을 수 있습니다).
git clean -dfxn
할 수 합니다.)
git clean -d -fx .
에 나열된 을 제거합니다
언급URL : https://stackoverflow.com/questions/17404316/the-following-untracked-working-tree-files-would-be-overwritten-by-merge-but-i
'source' 카테고리의 다른 글
SQL의 이중 콜론 '::' 표기법 (0) | 2023.05.27 |
---|---|
컴퓨팅 시간 또는 비용/시간 구성 요소 (0) | 2023.05.27 |
VB.NET 디버그 오류: "현재 프로젝트 설정은 프로젝트를 디버그하도록 지정합니다.." (0) | 2023.05.27 |
Windows 및 Mac OS 모두에서 Python의 기본 OS 응용 프로그램으로 문서 열기 (0) | 2023.05.27 |
iOS DeviceSupport 디렉토리에서 데이터를 삭제할 수 있습니까? (0) | 2023.05.27 |