힘내 리플로그

git reflog라는 이름으로 - reflog 정보를 관리합니다. 로컬에서 수행하는 모든 작업을 추적합니다.

git reflog와 git log를 이해하자 👀


git reflog 로컬에서 수행한 모든 작업을 추적합니다.

예시:
  • 커밋 기록 추적,
  • 하드 리셋을 했다면
  • git commit --amend도 추적합니다.
  • 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 loggit 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


    🌟

    좋은 웹페이지 즐겨찾기