git pull 실행 취소, 저장소를 이전 상태로 가져 오는 방법
내 소스 / 리포지토리가 git pull을 수행하기 전의 이전 상태가되도록 git pull을 되돌 리거나 실행 취소하는 방법이 있습니까? 내가 원하지 않는 일부 파일을 병합했지만 나머지 파일 만 병합했기 때문에 이것을하고 싶습니다. 그래서, 그 파일을 되찾고 싶습니다. 가능합니까? 감사 :)
편집 설명을 위해 git merge를 실행 취소하고 싶습니다. 몇 가지 답을보고 나서 이렇게했습니다
git reflog
bb3139b... HEAD@{0}: pull : Fast forward
01b34fa... HEAD@{1}: clone: from ...name...
이제 어떻게해야합니까? 이렇게 git reset --hard
OK는? 다시 나사를 조이고 싶지 않아서 자세한 단계를 요청 하시겠습니까?
실행 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 reset --merge
주어진 것과 동일 하다는 것을 알아 차릴 가치 MERGE_HEAD
가 있습니다. 이것은 merge 명령에 대한 git 도움말에서 읽을 수 있습니다.
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가있는 경우 ( "git 명령 줄에서"gitk --all "을 실행 해보십시오) 간단합니다. 실행하고 롤백 할 커밋을 선택하고 (오른쪽 클릭) "Reset master branch to here"를 선택합니다. 커밋되지 않은 변경 사항이없는 경우 "하드"옵션을 선택합니다.
$COMMIT
수행하기 전에 마지막 커밋 ID 라고 가정 합니다 git pull
. 마지막 당김을 실행 취소하려면
git reset --hard $COMMIT
.
보너스:
당기기에 대해 흥미로운 트릭을 공유하고 싶습니다.
git pull --rebase
위의 명령은 많은 시간을 절약 한 git 생활에서 가장 유용한 명령입니다.
새로 커밋을 서버에 푸시하기 전에이 명령을 시도하면 최신 서버 변경 사항 (가져 오기 + 병합 사용)이 자동으로 동기화되고 커밋이 git 로그의 맨 위에 배치됩니다. 수동 당기기 / 병합에 대해 걱정할 필요가 없습니다.
Find details at: http://gitolite.com/git-pull--rebase
you can do git reset --hard ORIG_HEAD
since "pull" or "merge" set ORIG_HEAD to be the current state before doing those actions.
This is the easiest way to revert you pull changes.
git reset --hard 9573e3e0
Where 9573e3e0
is your {Commit id}
If there is a failed merge, which is the most common reason for wanting to undo a git pull
, running git reset --merge
does exactly what one would expect: keep the fetched files, but undo the merge that git pull
attempted to merge. Then one can decide what to do without the clutter that git merge
sometimes generates. And it does not need one to find the exact commit ID which --hard
mentioned in every other answer requires.
참고URL : https://stackoverflow.com/questions/1223354/undo-git-pull-how-to-bring-repos-to-old-state
'program story' 카테고리의 다른 글
다중보기 유형으로 RecyclerView를 만드는 방법은 무엇입니까? (0) | 2020.09.29 |
---|---|
pip install mysql-python이 EnvironmentError와 함께 실패 : mysql_config not found (0) | 2020.09.29 |
작은 따옴표로 묶인 문자열에서 작은 따옴표를 이스케이프하는 방법 (0) | 2020.09.28 |
zlib, gzip 및 zip은 어떤 관련이 있습니까? (0) | 2020.09.28 |
유효한 이메일 주소의 최대 길이는 얼마입니까? (0) | 2020.09.28 |