programing

git에서 삭제된 파일의 스테이징 해제

lastmoon 2023. 4. 17. 22:18
반응형

git에서 삭제된 파일의 스테이징 해제

통상, 파일의 변경을 파기하려면 , 다음의 순서에 따릅니다.

git checkout -- <file>

취소하고 싶은 변경 내용이 파일을 삭제하는 경우 어떻게 해야 합니까?위의 행은 에러를 나타냅니다.

error: pathspec '<file>' did not match any file(s) known to git.

다른 변경을 취소하지 않고 단일 파일을 복원하는 명령어는 무엇입니까?

보너스 포인트:또한 삭제하고 싶은 변경이 파일 추가일 경우에는 어떻게 해야 합니까?저는 그 변경도 어떻게 풀어야 하는지 알고 싶습니다.

그 결과를 되돌리고 싶다고 가정해 보세요git rm <file>또는rm <file>이어서git add -A또는 이와 유사한 것:

# this restores the file status in the index
git reset -- <file>
# then check out a copy from the index
git checkout -- <file>

되돌리다git add <file>위의 첫 번째 행은 아직 커밋하지 않은 것으로 가정할 때 충분합니다.

양쪽 질문에 대한 답변은 다음과 같습니다.git status.

새 파일 추가 작업을 해제하려면git rm --cached filename.ext

# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#   new file:   test

파일 삭제를 해제하려면git reset HEAD filename.ext

# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   deleted:    test

다른 한편으로는git checkout --디지타이징을 해제하지 않고 변경 내용을 폐기할 뿐입니다.

이 파일이 스테이징되어 커밋된 경우 다음과 같이 파일이 리셋됩니다.

git reset COMMIT_HASH file_path
git checkout COMMIT_HASH file_path
git add file_path

이것은 이전에 몇 번의 커밋이 발생한 삭제에 적용됩니다.

두 가지 질문에 대한 답변은 관련이 있습니다.두 번째부터 시작하겠습니다.

파일을 스테이징한 후 (대부분의 경우)git add단, 일부 다른 명령어는 암묵적으로 변경을 스테이징합니다.git rm)를 사용하여 이 변경을 취소할 수 있습니다.git reset -- <file>.

당신의 경우, 당신은 다음을 사용하셔야 합니다.git rm파일을 삭제하는 것은 단순히 파일을 삭제하는 것과 같습니다.rm그 변화를 준비합니다.처음에 이걸 풀면git reset -- <file>그런 다음 를 사용하여 복구할 수 있습니다.git checkout -- <file>.

git v2.23부터는 다른 옵션이 있습니다.

git restore --staged -- <file>

저는 위의 해결책을 시도했지만 여전히 어려움을 겪고 있었습니다.실수로 삭제된 두 개의 파일로 다른 파일을 준비했습니다.

삭제된 2개의 파일을 원래대로 되돌리려면 모든 파일을 분리해야 했습니다.

git reset HEAD .

그 시점에서 삭제된 아이템을 체크 아웃 할 수 있었습니다.

git checkout -- WorkingFolder/FileName.ext

마침내 나머지 파일을 다시 저장하고 약속을 계속할 수 있었습니다.

매뉴얼 페이지에서

git-reset - Reset current HEAD to the specified state
git reset [-q] [<tree-ish>] [--] <paths>...
In the first and second form, copy entries from <tree-ish> to the index.

예를 들어, 우리가git reset HEAD~1현재 HEAD를 HEAD로 리셋~1

그래서 사용할 때git reset 'some-deleted-file-path'

git은 'some-deleted-file-path'를 커밋 포인트로 가정하고 현재 HEAD를 리셋합니다.

그리고 그것은 결국 실패한다.

fatal: ambiguous argument 'some-deleted-file-path': unknown revision or path not in the working tree.

언급URL : https://stackoverflow.com/questions/9591407/unstage-a-deleted-file-in-git

반응형