git 에서 파일 이름을 바꿀 때 변경 사항을 커밋하고 이름을 변경 한 다음 이름을 바꾼 파일을 준비해야 한다는 것을 읽었습니다 . Git은 파일을 새로운 추적되지 않은 파일로 보는 대신 내용에서 파일을 인식하고 변경 기록을 유지합니다.
그러나 오늘 밤 에이 작업을 수행하면 결국으로 되돌아갔습니다 git mv
.
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
Finder에서 내 스타일 시트의 이름을 iphone.css
에서mobile.css
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: css/iphone.css
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# css/mobile.css
git은 이제 하나의 CSS 파일을 삭제하고 새로운 파일을 추가했다고 생각합니다. 내가 원하는 것이 아니라 이름 바꾸기를 취소하고 자식이 작업을 수행하도록하십시오.
> $ git reset HEAD .
Unstaged changes after reset:
M css/iphone.css
M index.html
내가 시작한 곳으로 돌아갑니다.
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
git mv
대신 사용할 수 있습니다 .
> $ git mv css/iphone.css css/mobile.css
> $ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# renamed: css/iphone.css -> css/mobile.css
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: index.html
#
우리가 좋아 보인다. 왜 Finder를 사용할 때 처음으로 이름 바꾸기를 인식하지 못했습니까?
git mv old new
색인을 자동으로 업데이트합니다. 당신이 망할 놈의 외부 이름을 변경하는 경우, 당신은을해야 할 것 git add new
및 git rm old
인덱스에 대한 변경 사항을 무대. 완료하면 git status
예상대로 작동합니다.
public_html
git에서 추적 되는 디렉토리 로 많은 파일을 옮겼습니다 . 수행 갖는 git add .
하고 git commit
, 아직 한 무리가 파일을 '삭제'했다 git status
. 나는 a를 수행 git commit -a
했고 삭제는 커밋되었지만 이제는 현재 존재하는 파일에 대한 기록이 없습니다 public_html
. 이 작업 흐름은 내가 원하는만큼 부드럽 지 않습니다.
add+rm
또는mv
동일한 결과를 생성합니다. 그런 다음 Git은 이름 변경 / 복사 감지 기능을 사용하여 이름이 변경되었음을 알립니다. 인용 한 출처도 정확하지 않습니다. 동일한 커밋에서 수정 + 이름 바꾸기 여부는 중요하지 않습니다. 수정과 이름 바꾸기를 모두 다르게 수행하면 이름 바꾸기 감지에서 이름이 변경 + 수정으로 표시되거나 수정이 전체 다시 쓰기 인 경우 추가 및 삭제 된 것으로 표시됩니다. 그것.