git reflog와 log의 차이점은 무엇입니까?
man 페이지에는 로그에 커밋 로그가 표시되고 reflog가 reflog 정보를 관리한다고 나와 있습니다.reflog 정보는 정확히 무엇이고 로그에는 없는 정보는 무엇입니까?로그가 훨씬 더 상세해 보입니다.
git log현재 HEAD와 그 조상을 보여줍니다.즉, 커밋 HEAD 점을 인쇄한 다음 상위, 상위 등을 인쇄합니다.그것은 각 약속의 부모를 재귀적으로 찾아냄으로써 레포의 조상을 거슬러 올라갑니다.
실제로 일부 커밋에는 두 개 이상의 부모가 있습니다.로그를 보대표인로보려다음같사다용니합명은령과 같은 합니다.git log --oneline --graph --decorate.)
git reflogHEAD의 조상과 전혀 교차하지 않습니다. reflog는 취소 입니다. reflog는 HEAD 파일입니다. repo 파일입니다자체의 자체에 , local입니다.reflog repo repo ("reflog" repo" ("reflog repo") ▁theo▁isn다수하▁ref게니log커컬입로▁rep순;▁repref▁itself,▁(▁local▁themitso▁purely,며또는▁fet
참고: 리프로그를 이해하면 리포가 커밋된 후에는 리포의 데이터를 손실할 수 없습니다.커밋으로 재배치를을 수행한 를 확인할 수 , 실로이커제재하를나, 거나거하재치커배는로밋시을으거다각적, 수작잘수못사을업행확한있경수위이치,를할인다우니습의및이전전용하여른된본기전하밋로설으정를log▁ref▁if▁that제하▁you,▁use▁an확위사▁youlog있,수치▁to할를인다수이의git reset --hard이전 상태를 복원하려면 해당 참조로 돌아갑니다.기억하세요, ref는 단순히 약속뿐만 아니라 그 뒤에 있는 전체 역사를 의미합니다.
git log참조(헤드, 태그, 원격)에서 액세스할 수 있는 커밋 로그를 표시합니다.git reflog언제든지 보고서에서 참조되거나 참조된 모든 커밋의 기록입니다.
그게 이유다git reflog(기본적으로 90일 후에 제거되는 로컬 기록)은 분기 삭제와 같은 "파괴" 작업을 수행할 때 해당 분기에서 참조한 SHA1을 다시 가져오기 위해 사용됩니다.
참조:
gc.reflogexpire
gc.<pattern>.reflogexpire
git reflog는 이을 제거하며 기본값은 90일입니다.
"와 함께"<pattern>"(예: "refs/stash") 중간의 설정은 다음과 일치하는 심판에만 적용됩니다.<pattern>.

git reflog종종 "당신의 안전망"으로 언급됩니다.
문제가 발생할 경우 Git log가 원하는 것을 표시하지 않는 경우 일반적인 조언은 다음과 같습니다.
"진정하고 사용하세요"

다시 말하지만, reflog는 SHA1의 로컬 기록입니다.
와 로.git log만약 당신이 당신의 레포를 업스트림 레포로 밀어넣는다면, 당신은 같은 것을 볼 것입니다.git log하지만 반드시 같지는 않습니다.git reflog.
Git가 작업하는 동안 백그라운드에서 수행하는 작업 중 하나는 헤드 및 지점 참조가 지난 몇 달 동안 어디에 있었는지 기록하는 리프로그를 보관하는 작업입니다.
다음을 사용하여 리필로그를 확인할 수 있습니다.
git reflog:$ git reflog 734713b... HEAD@{0}: commit: fixed refs handling, added gc auto, updated d921970... HEAD@{1}: merge phedders/rdocs: Merge made by recursive. 1c002dd... HEAD@{2}: commit: added some blame and merge stuff 1c36188... HEAD@{3}: rebase -i (squash): updating HEAD 95df984... HEAD@{4}: commit: # This is a combination of two commits. 1c36188... HEAD@{5}: rebase -i (squash): updating HEAD 7e05da5... HEAD@{6}: rebase -i (pick): updating HEAD어떤 이유로든 지점 팁이 업데이트될 때마다 Git는 이 임시 내역에 해당 정보를 저장합니다.또한 이 데이터를 사용하여 이전 커밋을 지정할 수도 있습니다.
그reflog명령을 사용하여 너무 오래된 항목을 reflog에서 삭제하거나 만료할 수도 있습니다.다음에 대한 공식 리눅스 커널 Git 설명서:
명령은 다음과 같습니다.
expire이전 reflog 항목을 제거하는 데 사용됩니다.하려면 reflog 명령을 합니다.
delete정한항지예니다합정을목확).git reflog delete master@{2}).
저는 이것에 대해서도 궁금했고 조금 더 자세히 설명하고 요약하고 싶습니다.
git log현재 지점에 대한 모든 커밋 기록이 표시됩니다.다른 분기를 체크아웃하면 다른 커밋 기록이 표시됩니다.분기에 모든분에대한기커록밋면려다같입다력니합이음과하을기를 입력합니다.git log --all.git reflog컵케이크가 말한 것처럼 참조 기록을 보여줍니다.커밋 또는 체크아웃할 때마다 항목이 있습니다.다음을 사용하여 두 분기 간에 몇 번 전환해 보십시오.git checkout그리고 실행git reflog체크아웃할 때마다매번 "체크아웃" 항목으로 업데이트되는 상단 항목을 볼 수 있습니다.은 에이한유항표않습다에 .git log.
참고 자료: http://www.lornajane.net/posts/2014/git-log-all-branches
저는 gitlog와 reflog의 차이를 개인 레코드와 공개 레코드의 차이라고 생각하고 싶습니다.
비공개 대 공개
Git reflog를 사용하면 로컬에서 수행한 모든 작업을 추적할 수 있습니다.당신이 저질렀나요?Reflog가 추적합니다.하드 리셋을 하셨나요?Reflog가 추적합니다.커밋을 수정했습니까?Reflog가 추적합니다.당신이 지역적으로 한 모든 일은 리필로그에 기재되어 있습니다.
이것은 로그에 해당되지 않습니다.커밋을 수정하면 로그에 새 커밋만 표시됩니다.재설정을 수행하고 기록에서 몇 개의 커밋을 건너뛰면 건너뛴 커밋이 로그에 표시되지 않습니다.다른 개발자나 GitHub 등에 변경 사항을 푸시하면 로그에 추적된 콘텐츠만 나타납니다.다른 개발자가 보기에는 재설정이 발생하지 않았거나 수정이 발생하지 않은 것처럼 보일 것입니다.
로그가 연마되었습니다.리필로그는 복강입니다.
그래서 네, 저는 '개인 대 공공'의 비유를 좋아합니다.또는 로그 대 레플로그의 더 나은 비유는 '윤활한 vs 복강'일 수 있습니다.리필로그에는 모든 시행착오가 표시됩니다.로그에는 작업 내역의 깨끗하고 세련된 버전이 표시됩니다.
이 이미지를 보고 포인트를 강조하십시오.리포지토리가 초기화된 이후 여러 가지 수정 및 재설정이 발생했습니다.리필로그는 모든 것을 보여줍니다.그러나 log 명령을 사용하면 repo에 대한 커밋이 단 한 번밖에 없었던 것처럼 보입니다.
'안전망' 아이디어로 돌아가기
또한 reflog는 수정한 내용을 추적하고 재설정한 내용을 커밋하므로 다시 돌아가서 커밋 ID를 확인할 수 있습니다.리포지토리에서 이전 커밋을 제거하지 않았다고 가정하면 로그에 더 이상 표시되지 않는 항목을 다시 활성화할 수 있습니다.그런 식으로 리필로그는 실수로 잃어버렸다고 생각했던 것을 되찾아야 할 때 때때로 누군가의 피부를 구하게 됩니다.
git log현재 HEAD(마스터와 같은)에서 시작하거나 직접 커밋 개체(sha 코드)를 가리키며, 각 커밋 개체 내부에 존재하는 상위 필드를 사용하여 커밋 후 실제로 .git/objects 디렉터리 커밋 내부의 개체 파일을 검색합니다.
커밋으로 . 실험 : 헤드직특커정가로리다니킵밋으접를▁exper다.git checkout a721d(새 레포를 만들고 커밋과 분기로 채웁니다.교체하다a721dcode의 ) 합니다.rm .git/refs/heads/*지금이다git log --onelineHEAD 및 해당 커밋 조상만 표시됩니다.
반면 git reflog는 .git/messages 내부에 생성된 직접 로그를 사용하고 있습니다.
실험:rm -rf .git/logs그리고.git reflog비어 있습니다.
어쨌든 모든 태그와 모든 분기 및 로그 폴더 내의 모든 로그를 손실하더라도 커밋 개체는 .git/objects 디렉토리 내에 있으므로 모든 매달린 커밋을 찾을 경우 트리를 재구성할 수 있습니다.git fsck
사실, reflog는 다음의 별칭입니다.
git log -g --abbrev-commit --pretty=oneline
그래서 답은: 그것은 특정한 경우입니다.
언급URL : https://stackoverflow.com/questions/17857723/whats-the-difference-between-git-reflog-and-log
'programing' 카테고리의 다른 글
| 외부 IP 주소에서 웹 서버에 액세스할 수 있도록 spring-boot을 설정하는 방법 (0) | 2023.07.11 |
|---|---|
| 일부 Excel 파일이 공유 경로에서 SQL Server로 이동하지 않음 (0) | 2023.07.11 |
| Oracle에 동등한 기능 포함 (0) | 2023.07.11 |
| Mongo 오류:토폴로지가 닫혔습니다. 데이터베이스 연결이 설정되었지만 연결하십시오. (0) | 2023.07.11 |
| Mongoose 삽입 많은 제한 (0) | 2023.07.11 |
