힘내 리플로그
git reflog와 git log를 이해하자 👀
git reflog
로컬에서 수행한 모든 작업을 추적합니다.예시:
git log
의 경우 위의 커밋(예: reset 및 --amend)을 추적하지 않습니다.git reflog
모든 시행착오를 보여줍니다. git log
작업 기록의 깨끗하고 세련된 버전을 보여줍니다.커밋을 수정했다고 가정해 보겠습니다. 따라서 새 커밋이 생성됩니다. 재설정을 수행하고 기록에서 몇 가지 커밋을 뒤로 건너뛰면 건너뛴 커밋이 로그에 표시되지 않습니다.
할 얘기가 더 있으니 의논하자 😂
repo 작업 중, 코드를
main
브랜치로 푸시하는 습관 😅main
브랜치에 변경 사항을 푸시하려고 할 때 변경한 후 main
브랜치에서 pull을 수행하지 않고 한 기능에 대한 작업을 시작했습니다. 다음 오류가 발생했습니다.$ git push origin main
// I got to know I had to take pull from main (which some how I missed)
// and without taking pull I pushed forcefully
그리고는 생각지도 못한 일을 했네요 😂
$ git push origin main -f
// successfully pushed to main branch
나중에 내 동료 중 한 명이 본점에서 가져갔고 그녀는 😳😳🤯🤯였습니다.
그런 다음 강제로 내 변경 사항을 푸시하여 원격 지점에서 그녀의 커밋을 제거했으며 케이크에 장식이 된 것은 그녀가 변경 사항을 가져 와서 이제 그녀의 작업도 로컬 시스템에서 사라졌다는 것을 알게되었습니다! 🙈
git log
를 사용하여 커밋을 볼 수 없었습니다(거의 5-6개의 커밋 ID가 누락됨) 😥커밋을 되돌리려면 커밋 기록에서 제거된 마지막 커밋 ID를 찾아야 했습니다. 터미널 탭을 닫지 않았다면 마지막 커밋 ID를 얻을 기회가 있었습니다.
터미널 탭을 닫지 않았다면 얼마나 도움이 되었을까요 🤔
따라서 강제로 푸시하는 동안 다음 메시지가 표시됩니다.
+ aauuii1...789011 HEAD -> branchname (forced update)
여기에서
aauuii1
는 이전 HEAD이고, 789011
는 방금 강제로 누른 새입니다.따라서 해당 커밋 ID로 쉽게 되돌릴 수 있습니다 🙌🏻
하지만 이미 터미널 탭을 닫았기 때문에 운이 좋지 않은 것 같습니다 🤦♀️
🔍 이후
git log
와 git reflog
에 대한 맥락을 알게 되었습니다.git reflog
당신이 한 일의 시간적 기록을 알려줍니다.나는 이 👇 명령을 찾았습니다.
$ git reflog show remotes/origin/branchname
강제 업데이트(
789011
) 및 이전 커밋( aauuii1
)을 보여줍니다.마지막 커밋 ID를 얻은 후 새 분기를 만들고 커밋 ID로 재설정했습니다.
$ git checkout -b branch_name
$ git reset --soft aauuii1
// yayy! Its done 😍
git reflog
커밋 ID를 제공하므로 돌아가서 해당 커밋을 찾을 수 있습니다. 정말 생명의 은인입니다 🥁이야기의 도덕 🥇
약간의 인내심과 약간의 인터넷 검색 기술로 작업 시간을 절약할 수 있습니다.
🌟
📚 Ebooks
🌟
Reference
이 문제에 관하여(힘내 리플로그), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/suprabhasupi/git-reflog-4gd9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)