git mv 및 디렉토리의 대소문자만 변경
비슷한 질문을 찾았지만 문제에 대한 답을 찾지 못했습니다.
디렉토리 이름을 FOO에서 Foo로 변경하려고 할 때git mv FOO foo
알겠습니다
fatal: renaming 'FOO' failed: Invalid argument
네. 그래서 저는 노력합니다.git mv FOO foo2 && git mv foo2 foo
하지만 제가 약속을 하려고 할 때는git commit .
알겠습니다
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# foo
nothing added to commit but untracked files present (use "git add" to track)
▁via때▁▁the가▁할▁i추를 통해 디렉토리를 할 수 있습니다.git add foo
않고 아것도변않고지하무,고않,git commit .
다시 같은 메시지를 보냅니다.
내가 뭘 잘못하고 있는 거지?대소문자를 구분하는 시스템(OSX)을 사용하고 있다고 생각했습니다. 디렉토리 이름을 간단히 바꿀 수 없는 이유는 무엇입니까?
당신은 경우에 민감하지 않은 환경에 있습니다.또한, 다음을 제외하고 추가합니다.-A
는 제거 처않습니다지리하부은의 것입니다.mv
Git이 이해하는 바와 같이.경고! 이 작업을 수행할 때 다른 변경사항이나 추적되지 않은 파일이 없는지 확인하십시오. 그렇지 않으면 변경사항의 일부로 커밋됩니다. git stash -u
에 먼저, 을것하고그다음에이그다▁first에음하▁this▁do고▁then.git stash pop
이후. 계속:이 문제를 해결하려면 다음을 수행합니다.
mv foo foo2
git add -A
git commit -m "renaming"
mv foo2 FOO
git add -A
git commit --amend -m "renamed foo to FOO"
이것이 작업 디렉토리를 변경하고 커밋한 다음 두 커밋을 축소하는 도출된 방법입니다.인덱스에서 파일을 이동하기만 하면 되지만 처음 보는 사용자에게는 현재 진행 중인 작업에 대해 충분히 명시적이지 않을 수 있습니다.더 짧은 버전은.
git mv foo foo2
git mv foo2 FOO
git commit -m "changed case of dir"
중 interactive rebase)도 할 수 .git rebase -i HEAD~5
전에 를 합니다.5 커 밋 를 전 잘 에 못 된 사 잘 사 어 합 도 않 다 니 록 나 도 에 지 나 타 디 기 우 경이때부터 커밋 해시가 달라지고 다른 사용자가 최근 지점의 과거와 작업을 다시 결합하거나 다시 결합해야 하므로 주의해야 합니다.
이는 파일 이름 수정과 관련이 있습니다.Git는 대소문자를 구분하지 않습니까?
을 .core.ignorecase
거짓으로, 이는 Git가 기본적으로 지원하지 않는 파일 시스템의 사례에 주의를 기울이게 할 것입니다.레포에서 활성화하기
$ git config core.ignorecase false
그런 다음 파일 이름을 다음과 같이 변경할 수 있습니다.git mv
예상대로 작동할 겁니다
임시 파일 이름을 사용하여 git 1.7.7을 사용하여 이 문제를 해결할 수 있었습니다.
$ git mv improper_Case improve_case2
$ git mv improve_case2 improve_case
$ git commit -m "<your message>"
(git mv
variantfree variant.)
Giton Mac OS X 10.9에서 이 문제가 발생했습니다.저는 다음과 같이 해결했습니다.
git rm -r --cached /path/to/directory
Git에서 삭제를 위해 디렉토리를 준비하지만 실제 물리적 파일은 제거하지 않습니다.--cached
이렇게 하면 디렉터리가 추적되지 않은 파일에 표시됩니다.
이렇게 할 수 있습니다.
mv /path/to/directory /path/to/DIRECTORY
git add -A /path/to/DIRECTORY
하고 파일 이름을 한 것을 인식합니다.git status
당신은 많은 것을 봐야 합니다.renamed:
라인을 검사하여 올바르게 표시되는지 확인하고, 올바르게 표시되면 변경 내용을 정상적으로 커밋할 수 있습니다.
이것은 빠르고 버그를 방지하는 솔루션입니다.
git mv -f path/to/foo/* path/to/FOO/
경고! 폴더의 (항상이사변폴더변모의이경파든름일(된) 사용)/*
).
단일 파일의 이름을 바꾸지 마십시오.이로 인해 다음 답변에 설명된 버그가 발생합니다.
먼결과보다사음용을다니합려면를저다사▁if니▁use용합▁first,▁outcome▁want▁you.-n
:
git mv -f -n path/to/foo/* path/to/FOO/
에를 만든 mv
:
- 변경사항 커밋
- 다른 개정판 체크아웃
- 체크아웃백.
Git는 내부 파일과 파일 시스템에서 폴더 이름을 모두 바꿨어야 합니다.
-f 옵션으로 강제 적용:
git mv -f FOO foo
저는 한 가지 관련된 문제가 있었습니다.
이름이 'Pro'(먼저 생성)인 폴더와 다른 'Pro'(실수로 생성)인 폴더가 있습니다.Mac에서는 동일하지만 git에 따라 다릅니다.
$ git config core.ignorecase false
git 구성은 파일 이름을 올바른 폴더로 변경하고(감사합니다), 'pro'(아니오!!)에 고스트 파일을 생성했습니다.저는 고스트 파일 변경 사항을 트랙에 추가할 수 없었고, 그 파일을 가지고 다니지 않으면 다른 지점을 체크아웃할 수 없었고, 어떻게든 리셋할 수 없었습니다.
대신에, 저는 했습니다.
$ git rm -r --cached pro
$ git status // => pro files removed, new Pro files untracked
$ git add Pro
그것을 더 안전하게 하기 위해, 나는 그것을 분리된 수정 브랜치에서 했고, 그리고 나는 다시 메인 브랜치로 병합했습니다.
에 의해 생성된 유령 파일 문제에 대해 구루가 어떻게 그리고 왜 설명할 수 있습니까?잘 부탁드립니다.
이것은 Windows에서 제게 아주 잘 작동했습니다.파워셸은 다음과 함께 사용됩니다.
mv .\Folder-With-Wrong-Casing .\temp
git add -A
git commit -m "renamed folder with wrong casing to temp"
mv .\temp .\Folder-with-Correct-Casing
git add -A
git commit --amend -m "Renamed to proper casing"
- (으)로 표시됨)
git push
위의 아담의 답변 덕분입니다.
명시적으로 선택하지 않는 한 OS X에서 대소문자를 구분하는 파일 시스템을 사용하지 않습니다.HFS+는 대소문자를 구분할 수 있지만 기본값은 대소문자를 구분하지 않습니다.
여기 이 페이지의 모든 gitfoo에 대한 정말 간단한 해결책이 있습니다.
- 프로젝트에서 수동으로 파일을 복사합니다.
- 모든 파일을 gitm합니다.
- git commit 평소처럼.
- 파일을 수동으로 다시 추가합니다.
- git 모든 파일을 추가합니다.
- git commit 평소처럼.
- 이익.
여기 간단한 방법이 있습니다.
작업 디렉토리가 비어 있는지 확인합니다.
Git ignore 사례 일시적으로 비활성화 안 함
git config core.ignorecase false
- 디렉토리 이름 변경(예: 폴더 => 폴더)
- 작업 디렉토리에 변경사항 추가
git add --all
- 변경사항을 저장합니다.
git stash
- 이제 원래 디렉터리를 삭제해야 합니다.로컬 커밋을 수행합니다.
git add --all
git commit -m "Rename directories"
- 팝업 변경사항
git stash pop
- 이전 커밋으로 수정합니다.
git add --all
git commit --amend
- 이제 디렉터리 이름이 변경된 커밋이 있어야 합니다.이제 원래 ignorecase 구성을 복원할 수 있습니다.
git config core.ignorecase true
"git mv"를 사용하면 Adam Dymitruk의 답변을 개선할 수 있습니다(SO가 답변을 코멘트하지 못하도록 함). 이동된 파일을 정확히 준비합니다.스태킹이 필요하지 않으며 위험한 "Git add -A"를 피할 수 있습니다.
old="abc"; new="ABC";
tmp="$old-renamed";
git mv "$old" "$tmp";
git commit -m "Renamed '$old' to '$tmp'.";
git mv "$tmp" "$new";
git commit --amend -m "Renamed '$old' to '$new'.";
언급URL : https://stackoverflow.com/questions/3011625/git-mv-and-only-change-case-of-directory
'programing' 카테고리의 다른 글
Git의 빠른 전달이란 무엇입니까? (0) | 2023.05.08 |
---|---|
Xcode에서 NSZombie를 활성화하는 방법은 무엇입니까? (0) | 2023.05.08 |
어떻게 하면 항상 특정 지점에서 끌어낼 수 있을까요? (0) | 2023.05.08 |
포스트그레스가 배열에 없음 (0) | 2023.05.08 |
nvm을 사용하여 npm 버전을 변경하려면 어떻게 해야 합니까? (0) | 2023.05.08 |