"gitrm --dll x" vs "git reset head --x"?
git rm
준비 영역에서 항목을 제거합니다.은 이은과는조다다릅니금것과 조금 .git reset HEAD
파일을 "패키지화"할 수 있습니다."unstage"는 우리가 물건을 수정하기 시작하기 전의 준비 영역을 원래의 상태로 되돌린다는 것을 의미합니다.git rm
다른 한편으로는 파일을 스테이지에서 완전히 제거하기 때문에 다음 커밋 스냅샷에 포함되지 않으므로 파일을 효과적으로 삭제할 수 있습니다.기적으로a
git 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
'source' 카테고리의 다른 글
vuex 알 수 없는 작업(또는 변환) 유형 (0) | 2023.06.26 |
---|---|
Can I comment out a line in a .git/config file? (0) | 2023.06.26 |
c/c++에서 포인터의 주소를 얻는 방법은 무엇입니까? (0) | 2023.06.26 |
Sublime Text를 Git의 기본 편집기로 만들려면 어떻게 해야 합니까? (0) | 2023.06.26 |
What's the difference between "squash" and "fixup" in Git/Git Extension? (0) | 2023.06.26 |