git pull을 되돌 리거나 취소하여 git pull을 수행하기 전에 이전 소스 / 레포지토리가 이전 상태가되도록하는 방법이 있습니까? 그렇게하고 싶지 않은 파일을 병합했지만 나머지 파일은 병합하기 때문에이 작업을 수행하고 싶습니다. 그래서 그 파일을 다시 가져오고 싶습니다. 가능합니까?
편집 : 설명을 위해 git merge를 실행 취소하고 싶습니다. 몇 가지 답변을 본 후 나는 이것을했다.
git reflog
bb3139b... HEAD@{0}: pull : Fast forward
01b34fa... HEAD@{1}: clone: from ...name...
이제 어떻게해야합니까? 이렇게 git reset --hard
OK는? 다시 나사로 고정하고 싶지 않으므로 자세한 단계를 요구합니까?
답변
Running git pull
은 다음 작업을 순서대로 수행합니다.
git fetch
git merge
병합 단계는 구성에서 병합되도록 설정된 분기를 결합합니다. 병합 단계 를 실행 취소하려고 하지만 가져 오기 는 수행하지 않을 것입니다 (많은 의미가 없으며 필요하지 않아야 함).
병합 을 취소하려면을 사용 git reset --hard
하여 로컬 저장소를 이전 상태로 재설정하십시오. git-reflog 를 사용 하여 이전 상태의 SHA-1을 찾은 다음 재설정하십시오.
경고
이 섹션에 나열된 명령은 커밋되지 않은 모든 변경 사항을 제거하여 잠재적으로 작업 손실을 초래합니다.
git reset --hard
또는 다음과 같은 특정 시점으로 재설정하십시오.
git reset --hard master@{"10 minutes ago"}
답변
jkp의 답변과 동일하지만 다음은 전체 명령입니다.
git reset --hard a0d3fe6
a0d3fe6은 다음을 수행하여 찾을 수 있습니다.
git reflog
실행 취소하려는 지점을보고
답변
병합을 취소하는보다 현대적인 방법은 다음과 같습니다.
git merge --abort
그리고 조금 오래된 방법 :
git reset --merge
이전 답변에서 설명한 구식 방법 (경고 : 모든 로컬 변경 사항을 버립니다) :
git reset --hard
그러나 실제로는 그것이 주어진 git merge --abort
것과 동등한 것에 주목할 가치 가 있습니다. 이것은 git help for merge 명령에서 읽을 수 있습니다.git reset --merge
MERGE_HEAD
git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.
더있을 때 실패한 병합 한 후 MERGE_HEAD
, 실패한 병합으로 취소 할 수 없다 git reset --merge
반드시으로하지만 git merge --abort
, 그들은 같은 일에 대한 이전 및 새 구문뿐만 아니라 그래서 . 이것이 git reset --merge
제가 일상 업무에서 훨씬 더 유용한 이유 입니다.
답변
그것은 처음 사용합니다 : git reflog
이전 상태의 SHA를 찾고 확인하십시오 (HEAD @ {1}은 예입니다)
git reset --hard HEAD@{1}
답변
gitk ( “gitk –all from git command line”을 실행 해 보자)가 있다면 간단하다. 실행하고 롤백하려는 커밋 (마우스 오른쪽 버튼 클릭)을 선택하고 “마스터 브랜치를 여기로 재설정”을 선택하십시오. 커밋되지 않은 변경 사항이 없으면 “하드”옵션을 선택하십시오.
답변
$COMMIT
수행하기 전에 마지막 커밋 ID 라고 가정하십시오 git pull
. 마지막 당김을 취소하려면
git reset --hard $COMMIT
.
보너스:
끌어 당김에 대해 흥미로운 트릭을 나누고 싶습니다.
git pull --rebase
이 위의 명령은 내 자식 생활에서 가장 유용한 명령으로 많은 시간을 절약했습니다.
새로 커밋을 서버에 푸시하기 전에이 명령을 시도하면 최신 서버 변경 사항 (페치 + 병합)을 자동으로 동기화하고 커밋을 git log의 맨 위에 놓습니다. 수동 풀 / 병합에 대해 걱정할 필요가 없습니다.
답변
변경 사항을 가져 오는 가장 쉬운 방법입니다.
** Warning **
새로 만든 파일과 폴더가 삭제되므로 변경된 파일을 백업하십시오 .
git reset --hard 9573e3e0
9573e3e0
{커밋 ID}는 어디에 있습니까