itsource

git 풀 실행 취소, 저장소를 이전 상태로 되돌리는 방법

mycopycode 2023. 4. 17. 21:48
반응형

git 풀 실행 취소, 저장소를 이전 상태로 되돌리는 방법

git pull을 원래대로 되돌리거나 실행 취소할 수 있는 방법이 있나요? git pull을 실행하기 전 상태로 되돌리거나 실행 취소하거나 하고 싶지 않은 파일을 병합하고 나머지 파일만 병합했기 때문에 이 작업을 하고 싶습니다.그래서 그 파일들을 돌려받고 싶은데, 가능한가요?

EDIT: 설명을 위해 git merge를 취소하고 싶습니다.몇 가지 답을 보고 이렇게 했어요.

git reflog
bb3139b... HEAD@{0}: pull : Fast forward
01b34fa... HEAD@{1}: clone: from ...name...

하면 있어요?git reset --hard. 다시 망치고 싶지 않으니 자세한 절차를 물어보세요.

.git pull는 다음합니다.

  1. git fetch
  2. git merge

merge 스텝은 Configuration에서 Marge하도록 설정된 브런치를 결합합니다.Marge 스텝을 실행 취소하고 싶지만 fetch는 실행하지 않을 수 있습니다(큰 의미가 없고 필수는 아닙니다).

병합을 취소하려면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 --mergeMERGE_HEAD 내용은 에서 확인할 수 .합병하다

git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.

Marge 후 하지 않는 MERGE_HEAD은 "Marge"로 할 수 git reset --merge하지만 꼭 그렇지는 않다git merge --abort그래서 같은 구문을 사용하기 위한 오래된 구문일 뿐만 아니라 새로운 구문일 수도 있습니다.이게 내가 찾는 이유야git reset --merge일상에서 훨씬 더 유용하게 쓰입니다.

사용 : " " " : "git reflog

이전 사용자 상태의 SHA를 찾아서 만듭니다(HEAD@{1}이(가) 예입니다).

git reset --hard HEAD@{1}

가정하다$COMMIT 、 の 기 was 、 の was wasID の was was you를 실행하기 커밋 。git pull 풀은대로 되돌리기 위해

git reset --hard $COMMIT

.

보너스:

끌어당기는 것에 관해 말하자면, 흥미로운 요령을 공유하고자 합니다.

git pull --rebase

위의 명령어는 많은 시간을 절약한 제 git 생활에서 가장 유용한 명령어입니다.

새로운 커밋을 서버에 푸시하기 전에 이 명령을 실행하면 최신 서버 변경(fetch + merge)이 자동으로 동기화되어 커밋이 git 로그의 맨 위에 배치됩니다.수동 당김/머지 걱정은 없습니다.

자세한 것은, http://gitolite.com/git-pull--rebase 를 참조해 주세요.

gitk를 가지고 있다면(gitk --all을 git 명령줄에서 실행해 보십시오), 간단합니다.실행 후 롤백할 커밋을 선택하고(우클릭), "마스터 브랜치를 여기로 재설정"을 선택합니다.커밋되지 않은 변경이 없는 경우 "하드" 옵션을 선택합니다.

이것이 풀 변경 내용을 되돌리는 가장 쉬운 방법입니다.

** Warning **

새로 만든 파일과 폴더가 삭제되므로 변경된 파일을 백업하십시오.

git reset --hard 9573e3e0

서 ★★★★★9573e3e0id}가 사용자의 {Commit id}입니다.

수 있다git reset --hard ORIG_HEAD

"pull" 또는 "merge"는 이러한 작업을 수행하기 전에 ORIG_HEAD를 현재 상태로 설정하기 때문입니다.

마지막 머지를 에 되돌리기 위해custom-branch가장 쉬운 방법은 다음과 같습니다.

git reset --hard custom-branch@{1}

의 예main★★★★★★★★★★★★★★★★★★:

git reset --hard main@{1}

실행해 보다

git reset --keep HEAD@{1}

git pull do는 아래 작업을 수행합니다.

i.git fetch

ii.git merge

풀의 실행을 취소하려면 다음 작업을 수행합니다.

i.git reset --hard.--- 로컬 변경은 모두 되돌립니다.

또는

ii.git reset --hard master@{5.days.ago} 것)10.minutes.ago,1.hours.ago,1.days.ago 위해...)를 사용합니다.

또는

git reset --hard commitid

개선점:

에는 음다 next를 사용합니다.git pull --rebasegit pull동기화하다

current branch''를 공연한 곳git pull

git log

샘플 출력은 다음과 같습니다.

commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxa3dd0
Author: user <user@gmail.com>
Date:   Tue Nov 23 20:19:58 2021 +0530

    latest changes

commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxd697b
Author: user <user@gmail.com>
Date:   Tue Nov 23 17:45:44 2021 +0530

    latest changes includes account details api

commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxc0e6fa
Author: user <user@gmail.com>
Date:   Tue Nov 23 17:02:39 2021 +0530

    latest changes

ID가 "ID"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxc0e6fapull을 의 마지막 커밋 합니다).이이(「ID」, 「ID」, 「2」의 풀).

git reset --hard xxxxxxxxxxxxxxxxxxxxxxxxxxxxxc0e6fa

그러면 이 커밋 ID 위에 있는 커밋이 삭제됩니다.이렇게 하면 이전 변경 사항을 얻을 수 있습니다.

내가 가장 먼저 제안하는 것은 프로젝트의 복사본을 만드는 것이다.

새 지점(git checkout -b NewCopy)을 체크아웃하면 복사본을 가지고 체크아웃한 지점으로 돌아갈 수 있습니다.

git 참조를 보려면 이 명령을 실행합니다.

git reflog

그러면 참조 로그와 commit_Id {something e0371eb}이 표시됩니다.이러한 로그를 사용하여 특정 참조 지점으로 돌아갈 수 있습니다.

이 명령을 실행하여 포인트로 역추적합니다.

git reset --hard 7316f34  //replace that with your commit id

2개의 터미널을 열 것을 권장합니다. 하나는 로그를 표시하기 위한 것이고 다른 하나는 명령을 실행하기 위한 것입니다.

Marge 실패가 있는 경우, 이것이 가장 일반적인 이유이며,git pull,입니다.git reset --mergeImport된 파일은 그대로 유지하되 머지는 원래대로 되돌립니다.git pull병합을 시도했습니다.그러면 어떻게 해야 할지 결정할 수 있습니다.git merge가끔 발생하기도 합니다.또한 정확한 커밋 ID를 찾기 위해 필요한 ID는 없습니다.--hard필요한 다른 모든 답변에 언급되어 있습니다.

Marge 액션을 취소하려면 이 작업을 수행합니다.git merge --syslog

git reflog 다음과 같은 목록이 생성됩니다.

2cae310 (HEAD -> ArunJan, origin/ArunJan) HEAD@{0}: 체크아웃: a590c01f5c2b83adcb36049f3fd390a324fa745에서 ArunJan a590c01 HEAD@{1}: 체크아웃: ArunJan에서a01c로 이동
2cae310 (HEAD -> ArunJan, origin/ArunJan) HEAD@{2}: 리셋: HEAD로 이동
>origin/: 합니다. 크: 4 : 4a41a05b98b274f1477991c6a25313f38b1b2 ar ar ar ar ar444444Jan4a41a0fHEAD@{4}4: 크 arjan: ArunJan05ba05ba head head head head head head head head head head head head head 。
origin/ (HEAD -> ArunJan, origin/ArunJan) HEAD@{5}: 2cde310: 2cdae310으로 이동합니다.
f830534 HEAD@{6}: ArunJan: 'ort' 입니다.
HEAD creation taska590c01 HEAD@{7}: 커밋: a : a : a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
HEAD new HEAD@{8}: 밋 : 4 : 4 : 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 、 4 44a41a0f
HEAD@{9}: 크 b : b6cb3c5e82aea1f215c365f195c194f194f로 이동
HEAD HEAD@{10}: 크------에에에에에에에b6cb3c5c2a4c2a0c3c3e3c3c3c3c3c3c3c3c3c3c3e5d37e5d375d3c로
" URL 5eeaf3c(dev-server) HEAD@{11}: "URL" 을 되돌립니다.

되돌릴 버전을 선택합니다.예를 들어 '프로젝트 생성 태스크'로 되돌리려면 ID b0168ee를 선택합니다.그런 다음 다음 다음 명령을 실행하여 저장소를 해당 버전으로 되돌립니다.

git reset --hard a590c01

를 방금 pull' merge' 변경을 'filench pull'을 실행합니다.git reset --hard

이 명령어는 커밋되지 않은 모든 변경을 로컬 작업영역에서 제거하며 취소할 수 없습니다.따라서 아직 커밋되지 않은 중요한 작업을 백업해야 합니다.

언급URL : https://stackoverflow.com/questions/1223354/undo-git-pull-how-to-bring-repos-to-old-state

반응형