준비 영역에서 단일 파일을 제거하려면 어떻게 해야 합니까(추가 취소)?
상황:인덱스에 이미 파일이 있는 Git 저장소가 있습니다.여러 파일을 변경하고 Git을 열고 "Git add"를 사용하여 이러한 파일을 준비 영역에 추가합니다.
질문:이러한 파일 중 하나를 준비 영역에서 제거하면서 인덱스에서 제거하거나 파일 자체의 변경 내용을 실행 취소하지 않는 방법은 무엇입니까?
만약 내가 질문을 올바르게 이해한다면, 당신은 단지 "실행을 취소"하고 싶을 뿐입니다.git add
그것은 그 파일에 대해 행해졌습니다.
준비 영역에서 단일 파일을 제거해야 하는 경우
git reset HEAD -- <file>
준비 영역에서 전체 디렉토리(폴더)를 제거해야 하는 경우,
git reset HEAD -- <directoryName>
수정 사항은 유지됩니다.을 할 때git status
파일이 수정되었지만 아직 준비되지 않은 것으로 다시 표시됩니다.
자세한 내용은 man 페이지를 참조하십시오.
git rm --cached FILE
,
git rm -r --cached CVS */CVS
git reset <file>
이전의 커밋이 있는지 여부에 관계없이 작동합니다.
그래서, 팀 헤니건의 대답을 약간 수정했습니다. 파일 이름 앞에 사용해야 합니다.다음과 같이 표시됩니다.
git reset HEAD -- <file>
git reset filename.txt
파일 이름에 수정 사항이 있는 경우.txt, 실수로 스테이징에 추가했으며 스테이징에서 파일을 제거하려고 하지만 변경 사항을 잃지는 않습니다.
Git의 최신 버전에는 다음이 있습니다.git restore --staged <file>
.
를 할 때.git status
버전 Git와 함께.2.26.2.windows.1
또한 다음과 같이 준비하지 않는 것이 좋습니다.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
(이 게시물은 이전 버전에서는git reset HEAD
되었습니다).
사이의 차이점을 설명하는 이 게시물을 강력하게 추천할 수 있습니다.git revert
,git restore
그리고.git reset
추매 개수변에 대한 변수:git restore
.
파일에 대한 변경사항의 일부만 제거하려는 경우 다음을 사용할 수 있습니다.
git reset -p
또는
git reset -p <file_name>
▁reverse▁is▁basically의 역순입니다.git add -p
선택한 변경 사항만 준비 영역에서 제거됩니다.실수로 추가한 것을 "추가 취소"하는 데 매우 유용합니다.
@CB Bailey가 언급했듯이 지수의 개념과 혼동했을 것이라고 생각합니다.
준비 영역이 인덱스입니다.
준비 디렉터리와 인덱스를 동일한 것으로 간주할 수 있습니다.
그래서, @Tim Henigan의 대답처럼, 나는 생각합니다:
당신은 그저 "해방"하고 싶을 뿐입니다.
git add
그것은 그 파일에 대해 행해졌습니다.
제 이 있습니다: 답대은이렇니다습제다니습▁here렇이:.
일반적으로 이미 언급한 다른 답변과 같이 두 가지 방법으로 스테이지 작업을 실행 취소할 수 있습니다.
git reset HEAD <file>
그리고.
git rm --cached <file>
하지만 무엇이 다른가요?
파일이 준비되어 작업 디렉토리에도 있다고 가정합니다.git rm --cached <file>
파일을 준비 디렉토리에서 제거하고 작업 디렉토리에 보관하려는 경우.그러나 이 작업은 준비 디렉토리에서 파일을 제거할 뿐만 아니라 파일을 다음과 같이 표시합니다.deleted
준비 디렉토리에서, 사용하는 경우
git status
이 작업 후 다음과 같은 내용이 표시됩니다.
deleted: <file>
준비 디렉토리에서 파일을 제거한 기록입니다.해당 레코드를 유지하지 않고 파일의 이전 단계 작업만 실행 취소하려면 다음을 사용합니다.git reset HEAD <file>
대신.
의 끝 -------------------------------------------------------------------------------
PS: 다음과 같은 답변이 언급되었습니다.
git checkout -- <file>
이 명령은 파일이 준비되었지만 준비된 후 작업 디렉터리에서 파일이 수정된 경우를 위한 것입니다. 이 작업을 사용하여 준비 디렉터리에서 작업 디렉터리의 파일을 복원합니다.즉, 이 작업 후에는 준비 디렉토리가 아닌 작업 디렉토리에서 변경사항이 발생합니다.
전이후 이후2.23
Git는 다음을 소개했습니다.git restore
명령을 실행할 수 있습니다.공식 문서 인용:
복원 원본의 일부 내용을 사용하여 작업 트리에서 지정된 경로를 복원합니다.경로가 추적되지만 복원 원본에 없는 경우 원본과 일치하도록 경로가 제거됩니다.
이 을 " 또이명내수있복습다니원할을용인의한덱"로 복원하는 데 사용할 수도 .
--staged
작 업 트 스 를 리 와 복 니--staged --worktree
.
호할수있다니습출다▁invoke니▁so▁can있습▁you를 호출할 수 있습니다.git restore --staged <path>
파일의 스테이징을 해제하고 변경한 내용을 유지합니다.파일이 준비되지 않은 경우 변경한 내용이 모두 손실됩니다.
때 git rm --cached
파일 압축 패턴도 사용할 수 있습니다.
여기 보세요.
을 할 때는.git status
Git는 스테이징을 해제하는 방법을 알려줍니다.
Changes to be committed: (use "git reset HEAD <file>..." to unstage).
그렇게git reset HEAD <file>
저를 위해 일했고 변화는 변하지 않았습니다.
원하는 항목:
단일 파일에 영향을 줍니다.
준비 영역에서 파일 제거
인덱스에서 단일 파일 제거 안 함
변경 내용 자체를 취소하지 않음
그리고 해결책은.
git reset HEAD file_name.ext
또는
git reset HEAD path/to/file/file_name.ext
당신은 파일의 디렉토리에 있어야 하고 터미널에 다음을 입력해야 합니다.
git checkout -- <file>
제 생각에 당신은 할 수 있을 것 같습니다.
git restore --staged <path/to/file_name>
추적된 많은 파일을 변경했지만 일부 파일만 준비하려는 경우
git add .
추적된 모든 파일을 스테이징하기 때문에 항상 적합하지는 않습니다(변경 사항을 자신에게만 보관하고 원격 저장소에 스테이징하지 않으려는 경우도 있습니다).
여러 가지를 하는 것도 이상적이지 않습니다.
git add path/to/file1 path/to/file2
중첩된 디렉토리가 많은 경우(대부분의 프로젝트에서 해당됨) - 성가시게 됩니다.
이때 Git GUI가 도움이 됩니다(아마도 제가 사용할 때만).Git GUI를 열기만 하면 준비된 파일 섹션과 준비되지 않은 파일 섹션이 표시됩니다.스테이징 해제할 준비된 섹션에서 파일을 선택하고 를 누릅니다.
Ctrl+U
(창용)
그들의 무대를 해체하는 것.
내 샘플:
$ git status
On branch feature/wildfire/VNL-425-update-wrong-translation
Your branch and 'origin/feature/wildfire/VNL-425-update-wrong-translation' have diverged,
and have 4 and 1 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: ShopBack/Source/Date+Extension.swift
modified: ShopBack/Source/InboxData.swift
modified: ShopBack/en.lproj/Localizable.strings
아시다시피
> Changes to be committed:
> (use "git reset HEAD <file>..." to unstage)
당신은 파일의 디렉토리에 있어야 하고 터미널에 다음을 입력해야 합니다.
git reset HEAD .
하나의 파일만 재설정하면 된다고 가정합니다.
모든 항목을 한 번에 분할하려면 이 명령을 실행합니다.
git reset HEAD -- .
git checkout -- <file>
준비 영역에서 파일을 제거하는 것이 완벽하게 작동합니다.
언급URL : https://stackoverflow.com/questions/1505948/how-do-i-remove-a-single-file-from-the-staging-area-undo-git-add
'programing' 카테고리의 다른 글
Windows에서 원격/대상 리포지토리 URL을 변경하려면 어떻게 해야 합니까? (0) | 2023.05.16 |
---|---|
비동기 방식으로 코드를 디버깅할 수 없는 이유는 무엇입니까? (0) | 2023.05.16 |
EPLUS 사용 시 Column Type 설정 방법 (0) | 2023.05.16 |
텍스트에 따라 UI 레이블 높이 조정 (0) | 2023.05.16 |
사용자 정의 함수에 도구 설명을 추가하는 방법 (0) | 2023.05.16 |