source

"gitrm --dll x" vs "git reset head --x"?

ittop 2023. 6. 26. 23:11
반응형

"gitrm --dll x" vs "git reset head --x"?

GitRef.org - 기본:

git rm준비 영역에서 항목을 제거합니다.은 이은과는조다다릅니금것과 조금 .git reset HEAD파일을 "패키지화"할 수 있습니다."unstage"는 우리가 물건을 수정하기 시작하기 전의 준비 영역을 원래의 상태로 되돌린다는 것을 의미합니다. git rm다른 한편으로는 파일을 스테이지에서 완전히 제거하기 때문에 다음 커밋 스냅샷에 포함되지 않으므로 파일을 효과적으로 삭제할 수 있습니다.

기적으로agit rm file준비 영역에서 파일을 완전히 제거하고 디스크에서 >(작업 디렉토리)를 제거합니다.디렉터리에 파을작디리남면다사려다용니합음을겨두에일업렉을 사용하면 .git rm --cached.

하지만 정확히 무엇이 다른가요?git rm --cached asd그리고.git reset head -- asd?

파일은 (커밋된) 트리, 인덱스 및 작업 복사본과 같은 세 가지 위치가 있습니다.폴더에 파일을 추가하기만 하면 작업 복사본에 파일을 추가하는 것입니다.

당신이 어떤 것을 할 때.git add file인덱스에 추가합니다.그리고 그것을 커밋할 때, 그것을 트리에 추가합니다.

그것은 아마도 당신이 3개의 더 일반적인 깃발을 아는 데 도움이 될 것입니다.git reset:

reset git reset [---]<mode>] [<commit>]

를 이양은현분재기헤다드음재으로설니다합정를로 합니다.<commit>그리고 가능하면 인덱스를 업데이트합니다(의 트리에 추가).<commit>및에를 지정합니다.<mode>다음 중 하나여야 합니다.
--부드러운

인덱스 파일이나 작업 트리를 전혀 만지지 않습니다(그러나 헤드를 다음으로 재설정).<commit>모든 모드가 그렇듯).이렇게 하면 git 상태에 따라 변경된 모든 파일이 "Changes to committed"(커밋될 변경 사항)로 유지됩니다.

--혼합된

인덱스는 재설정하지만 작업 트리는 재설정하지 않습니다(즉, 변경된 파일은 보존되지만 커밋으로 표시되지 않음). 업데이트되지 않은 내용을 보고합니다.이것이 기본 작업입니다.

--힘든

인덱스와 작업 트리를 재설정합니다.이후 작업 트리에서 추적된 파일에 대한 변경 사항<commit>삭제됩니다.

이제, 당신이 뭔가를 할 때.git reset HEAD은 당이실제하있것는은입니다.git reset HEAD --mixed 파일을 를 "(" "파일"을 통해).git add). 이 경우 작업 복사본의 상태가 어떠하든 상관없이 한 번도 변경하지 않고 트리의 HEAD와 동기화되는 방식으로 인덱스를 변경했습니다.이전에 커밋되었지만 변경된 파일을 준비하는 데 사용되었는지 또는 이전에 추적되지 않은 새 파일을 추가하는 데 사용되었는지 여부는 와 정반대입니다.

git rm그러나 작업 디렉터리와 인덱스에서 파일을 제거하고 사용자가 커밋하면 트리에서도 파일이 제거됩니다. git rm --cached그러나 인덱스에서만 파일을 제거하고 작업 복사본에 보관합니다.경우 파일이 이전에 커밋된 경우 인덱스를 트리의 HEAD 및 작업 복사본과 다르게 만들어 HEAD에 이전에 커밋된 파일 버전이 있고 인덱스에 파일이 전혀 없으며 작업 복사본에 마지막 수정사항이 있습니다.지금 커밋하면 인덱스와 트리가 동기화되고 파일이 트리에서 제거됩니다(작업 복사본에서 추적되지 않음).이전에 추적되지 않은 새 파일을 추가하는 데 사용된 경우 와 (및 거의 동일)는 정반대입니다.

2경우를 명령인 Git 2.25를 했습니다.git restore그러나 Git 2.28 기준으로 행동이 바뀔 수 있다는 의미에서 man 페이지에서 "실험적"으로 설명됩니다.

예를 들어 다음과 같은 이점을 얻을 수 있습니다.

git rm --cached asd
git commit -m "the file asd is gone from the repository"

git reset HEAD -- asd
git commit -m "the file asd remains in the repository"

다른 을 변경하지 않은 경우 두 번째 커밋은 실제로 아무것도 수행하지 않습니다.

git rm --cached file스테이지에서 파일을 제거합니다.즉, 커밋하면 파일이 제거됩니다. git reset HEAD -- file준비 영역의 파일을 HEAD 커밋 상태로 재설정하기만 하면 됩니다. 즉, 마지막 커밋 이후에 변경한 내용은 취소됩니다.변경 사항이 파일을 새로 추가하는 경우 파일이 동일하게 됩니다.

언급URL : https://stackoverflow.com/questions/5798930/git-rm-cached-x-vs-git-reset-head-x

반응형