IT TIP

Git Stash Uncached : 모든 미 단계 변경 사항을 삭제하는 방법은 무엇입니까?

itqueen 2020. 11. 3. 19:33
반응형

Git Stash Uncached : 모든 미 단계 변경 사항을 삭제하는 방법은 무엇입니까?


git에 의해 버전이 지정된 프로젝트에서 두 가지 변경 사항이 있다고 가정합니다. 한 세트는 스테이징되고 다른 세트는 그렇지 않습니다.

이 상태 (커밋 전)에서 프로젝트를 실행하여 단계적 변경을 다시 확인하고 싶습니다. 모든 단계되지 않은 변경 사항을 제거하고 단계적으로 만 유지하는 간단한 방법은 무엇입니까? 따라서 프로젝트에서 사라지고 추가 작업을 위해 어딘가에 저장하려면 무단계 변경 사항이 필요합니다.

이것은 git stash명령 과 매우 흡사하게 들립니다 . 그러나 git stash내 프로젝트에서 단계적 및 단계적 변경을 모두 제거합니다. 그리고 나는 같은 것을 찾을 수 없습니다 git stash uncached.


업데이트 :
이것이 선택된 답변이지만 아래 답변 이 올바른 답변 이라고 많은 사람들이 지적 했으므로 확인하는 것이 좋습니다.

이전 답변 :
--keep-index옵션을 사용하면 이미 인덱스에 추가 된 모든 변경 사항이 그대로 유지됩니다.

git stash --keep-index

문서에서git-stash :

부분 커밋 테스트

git stash save --keep-index작업 트리의 변경 사항에서 두 개 이상의 커밋을 수행하고 커밋하기 전에 각 변경 사항을 테스트하려는 경우 사용할 수 있습니다 .

# ... hack hack hack ...
$ git add --patch foo            # add just first part to the index
$ git stash save --keep-index    # save all other changes to the stash
$ edit/build/test first part
$ git commit -m 'First part'     # commit fully tested change
$ git stash pop                  # prepare to work on all other changes
# ... repeat above five steps until one commit remains ...
$ edit/build/test remaining parts
$ git commit foo -m 'Remaining parts'

그러나 단계적 변경 사항 만 시각적으로 확인하려는 경우 다음을 시도 할 수 있습니다 difftool.

git difftool --cached

받아 들여진 대답은 또한 몇몇 사람들이 지적했듯이 단계적 변경 사항을 숨기고 추적되지 않은 파일을 숨기지 않습니다. 다음은 숨김에 단계적 변경 사항을 가져 오지 않고 추적되지 않은 파일을 제거하고 숨길 수있는 방법입니다.

아이디어는 단계적 변경을 임시 커밋 한 다음 단계되지 않은 변경 사항을 숨기고 임시 커밋을 해제하는 것입니다.

# temp commit of your staged changes:
$ git commit --message "WIP"

# stage your previously unstaged files before stashing (so you get untracked files):
$ git add .

$ git stash

# now un-commit your WIP commit:
$ git reset --soft HEAD^

이 시점에서 준비되지 않은 변경 사항은 숨겨지고 작업 복사본에는 준비된 변경 사항 만 표시됩니다.


나는 단계되지 않은 변경 사항 만 진정으로 숨겨 놓은 무언가가 필요했기 때문에 표시된 답변이 나를 위해 작동하지 않는다는 것을 알았습니다. 표시된 대답 git stash --keep-index은 단계적 및 비 단계적 변경 사항을 모두 숨 깁니다. --keep-index부분은 작업 복사본에서도 인덱스를 그대로 유지합니다. 그것은 OP에서 작동하지만 실제로 대답을 원했던 것과 약간 다른 질문을했기 때문입니다.

준비되지 않은 변경 사항을 숨길 수있는 유일한 방법은 숨김을 전혀 사용하지 않는 것입니다.

git diff > unstaged.diff
git apply -R unstaged.diff

git checkout -- .대신 apply -R.

작업 작업 작업 ...

git apply unstaged.diff
rm unstaged.diff

Git : 준비되지 않은 변경 사항 보관

그러면 git add하지 않은 모든 수정 사항이 숨겨집니다.

git stash -k

Note that newly created (and non-added) files will remain in your working directory unless you also use the -u switch.

git stash -k -u 

Also, your working directory must be clean (i.e. all changes need to be added) when you git stash pop later on.

http://makandracards.com/makandra/853-git-stash-unstaged-changes

참고URL : https://stackoverflow.com/questions/20028507/git-stash-uncached-how-to-put-away-all-unstaged-changes

반응형