방금 자식 저장소를 복제하고 지점을 체크 아웃했습니다. 나는 그 일을 한 다음 원본을 원했기 때문에 모든 로컬 변경 사항을 제거하기로 결정했습니다.
즉, 로컬 변경 사항을 제거하려면 다음 두 명령을 수행해야했습니다.
git checkout .
git clean -f
내 질문은
(1) 지역 변경을 제거하는 올바른 방법입니까, 아니면 올바른 방법을 알려주십시오.
(2) git reset --hard
이 명령없이 재설정 할 수 있으므로 언제 사용합니까?
감사
* 솔루션 : Major Edit (s) : 03/26 : * 많은 모호한 용어를 git 특정 용어로 대체했습니다.
로컬 변경시 파일 범주는 세 가지뿐입니다.
유형 1. 준비된 추적 파일
형식화되지 않은 추적 파일
유형 3. Unstaged UnTracked files 일명 Untracked files
- Staged-준비 영역으로 이동 된 항목 / 색인에 추가 된 항목
- 추적 된 수정 된 파일
- 추적되지 않음-새 파일. 항상 무대에 있지 않다. 준비된 경우 추적됩니다.
각 명령의 기능 :
git checkout .
-스테이지되지 않은 추적 파일 만 제거 [유형 2]git clean -f
-준비되지 않은 추적되지 않은 파일 만 제거 [유형 3]git reset --hard
-단계별 추적 및 준비되지 않은 추적 파일 만 제거 [유형 1, 유형 2]git stash -u
-모든 변경 사항을 제거합니다 [Type 1, Type 2, Type 3]
결론:
우리가 둘 중 하나를 사용할 수 있음이 분명합니다
(1) combination of `git clean -f` and `git reset --hard`
또는
(2) `git stash -u`
원하는 결과를 얻을 수 있습니다.
참고 : Stashing은 단어가 '지정된 장소에 안전하고 비밀리에 보관'이라는 의미입니다. 항상을 사용하여 검색 할 수 있습니다 git stash pop
. 따라서 위의 두 가지 옵션 중 하나를 선택하는 것이 개발자의 요청입니다.
Christoph와 Frederik Schøning에게 감사합니다.
편집 : 03/27
나는 ' 주의 '노트를 넣을 가치가 있다고 생각했습니다.git clean -f
git clean -f
다시는 없습니다. -n
또는 --dry-run
을 사용 하여 수행 할 피해를 미리 봅니다.
디렉토리도 제거하려면 다음을 실행하십시오. git clean -f -d
무시 된 파일 만 제거하려면 다음을 실행하십시오. git clean -f -X
무시되거나 무시되지 않은 파일을 제거하려면 다음을 실행하십시오. git clean -f -x
참조 : 추가 정보 git clean
: 현재 Git 작업 트리에서 로컬 (추적되지 않은) 파일을 제거하는 방법은 무엇입니까?
편집 : 05/20/15
이 브랜치에서 모든 로컬 커밋 삭제 [로컬 커밋 제거]
이 브랜치의 모든 로컬 커밋을 버리고 로컬 브랜치를이 브랜치의 "업스트림"과 동일하게 만들려면 간단히 실행하십시오. git reset --hard @{u}
참조 : http://sethrobertson.github.io/GitFixUm/fixup.html
또는 git reset --hard origin/master
[지역 지점 인 경우 master
]
참고 : 2015년 6월 12일 입니다 하지 중복으로 표시 상대방의 SO 질문의 중복. 이 질문은 로컬 GIT 변경 사항을 제거하는 방법 [추가 된 파일 제거, 기존 파일에 추가 된 변경 사항 제거 및 다양한 접근 방법]을 설명합니다. 다른 SO 스레드에서 로컬 커밋을 제거하는 방법 만 해결합니다. 파일을 추가했는데 그 파일 만 제거하려면 다른 SO 스레드가 해당 파일에 대해 설명하지 않습니다. 따라서 이것은 다른 것과 중복되지 않습니다]
편집 : 06/23/15
이미 원격 저장소로 푸시 된 커밋을 되 돌리는 방법은 무엇입니까?
$ git revert ab12cd15
편집 : 2015 년 9 월 1 일
로컬 브랜치 및 원격 브랜치에서 이전 커밋 삭제
사례 : 방금 로컬 지점에 변경 사항을 적용하고 즉시 원격 지점으로 푸시했습니다. 갑자기 깨달았습니다. 이 변경이 필요하지 않습니다. 이제 무엇을합니까?
git reset --hard HEAD~1
[로컬 지점에서 커밋을 삭제하는 경우]
git push origin HEAD --force
[둘 다 명령을 실행해야합니다. 원격 지점에서 삭제]
지점은 무엇입니까? 현재 체크 아웃 된 지점입니다.
09/08/2015 편집 -로컬 git merge 제거 :
나는 오전 master
지사와 합병 master
새로 작업 지점과 지점을phase2
$ git status
# On branch master
$ git merge phase2
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 8 commits.
Q :이 병합을 제거하는 방법은 무엇입니까? 시도 git reset --hard
하고 git clean -d -f
둘 다 작동하지 않았습니다.
있는 유일한 일이 일이 사람 다음 중 하나를 수 있습니다 :
$ git reset --hard origin/master
또는
$ git reset --hard HEAD~8
또는
$ git reset --hard 9a88396f51e2a068bb7
[sha commit 코드-이것은 모든 병합 커밋이 발생하기 전에 존재했던 코드입니다]
git stash -a
[또는 --all]은 무시되고 추적되지 않은 파일도 숨 깁니다. git clean -x
무시 된 파일도 정리합니다. git clean -X
무시 된 파일 만 정리합니다.