2016-11-02 4 views
0

git 저장소에서 rebased 커밋을 모두 찾아야합니다. 이동하려면 git reflog이 필요합니다. 그러나 git reflog은 로컬 저장소의 모든 참조를 표시하고 광산은 새로 복제 된 저장소이므로 git reflog의 출력은 대부분 비어 있습니다. 이 문제를 해결할 방법이 있습니까?새로 복제 된 저장소에서 rebase 된 git 커밋을 찾는 방법은 무엇입니까?

+0

여기서 "rebased commits"를 정의하십시오. rebase는 단순히 커밋을 복사합니다. 원본을 가지고 본 적이 없다면, 왜 어떤 사본을 원하니? * 원본을 가지고 있다면, "가지고있는 원본, 즉 이전에 가지고 있던 사본을 버리고 버린 원본"과 일치 시키려고합니까? 그렇다면 어떻게 가져 왔습니까 ("원본"과 "사본")? (이들은 모두 효율적인 대답을 찾는 것과 관련이 있습니다.) – torek

+0

"rebased commits"은 무엇을 의미합니까? – kaitoy

+0

Rebase 된 단어가 맞는 단어가 아닐 수도 있습니다. 오히려 찌그러진 커밋을 찾고 있는데 rebasing이 비슷한 일을하는 것 같습니다 (나는 잘못 될 수 있습니다). 상황은 이것입니다. 스쿼시가 많은 커밋을 하나의 커밋으로 결합했기 때문에, 커밋 된 커밋 중 하나의 커밋으로 변경된 내용을보고 싶다면 먼저 커밋 된 커밋을 확인해야합니다. . 이런 이유로'git reflog'를보고있었습니다. – user97468

답변

0

git 저장소를 복제 할 때 리베이스 한 커밋 기록을 가져 오지 않습니다. 리베이스 된 커밋을 확인하는 가장 좋은 방법은 리베이스 된 리포지토리의 reflog를 살펴 보는 것입니다.

EDIT : 원격지에 존재하는 매달려있는 커밋 목록을 원하는 것처럼 보입니다. repo. 단지 git clone을 사용하여 리포지토리를 끌어 내려하면 찾고자하는 것을 얻을 수 없습니다. git repo를 복제하면 git은 어딘가에서 참조 된 객체 만 복사합니다. 매달려있는 객체는 다운로드되지 않습니다. 매달려있는 커밋 목록을 얻으려면 원격 저장소에서 해당 정보를 가져와야합니다. 리모컨이 Github 인 경우이 오브젝트를 전혀 얻을 수 없을 가능성이 높습니다. 액세스 할 수있는 서버 인 경우 repo의 원격 서버에서 git fsck 또는 을 실행하는 것이 좋습니다. 그러나, 나는 당신이 접근 할 수 없다는 것을 내기를 기꺼이 할 것이다. (나는 왜 당신이 복제하는지).

+0

나는 더 분명해야했다; 기본적으로 프로젝트의 일환으로 수많은 임의의 저장소를보고 있으므로이 저장소에 대한 커밋을 리베이스하지 않았습니다. 나는 그 (것)들에서 약간 정보를 추출하는 것을 시도하고있다 그리고 저것을 위해 나는 분실 또는 rebasing에 의하여 그들과 같은 "분실 된"투입을 확인할 수 있고 싶다. 이 경우, 'git reflog'가 새로 복제되거나 분기 된 저장소에서 작동하지 않으면 어떻게 식별 할 수 있습니까? – user97468

+0

@ user97468 이것을 반영하여 내 대답을 업데이트했습니다. 원격 저장소에 액세스 할 수 있다면 훨씬 쉽게 작업 할 수 있습니다. –

+0

네, 맞습니다. 불행히도 .. 기본적으로 여러 저장소에서 일부 통계를 얻으려고하고 있는데 그 중 일부에 액세스 할 권한이 없습니다. 내가 궁금해 할 것은 .. 객체 저장소에서와 같이 프로젝트를 복제 할 때 어떤 정보를 가질 수 있습니까? 나는 'squashed'커밋이 더 이상 프로젝트 히스토리에 존재하지 않지만 중간 'squashed'커밋의 SHA를 사용하여 GitHub API를 쿼리함으로써 GitHub에서 커밋에 액세스 할 수 있다는 것을 알고 있습니다. 이것은 쉽게 액세스 할 수없는 경우에도 객체 저장소에 존재 함을 의미합니까? – user97468