나는 git pull
이 내 커밋을 삭제하는 사례가 있습니다. 여기 쉽게 사건을 재현하는 방법은 다음과 같습니다git pull 삭제 커밋
- 로컬 브랜치 하나는이
git update-ref -d refs/heads/<branch> <branch>~1
이 이루어집니다 원격 REPO에 원격 추적 브랜치 git push
- 앞서 놓는다 커밋하고있다. 그래, 나도 알아. 왜 그런지 물어 보지 마라. 그렇지 않아야한다고 말하지 마라. 이 스레드 방식을 주제와 연관시킬 수있는 백엔드 자동화와 관련이 있습니다. 어쨌든 ... 다시 지역의 repo에서 ,
- 선도가 사라졌다 커밋
git pull
기본적으로 무엇이 일어나고있는 것은 내가 true로 branch.<branch name>.rebase
세트를 가지고 있고,이 버전이 단계에이의 의미에 디폴트 점이다 --fork-point
(나는 생각한다) 기본적으로 로컬 브랜치의 reflog 맨 위에서 아래로 반복하고 SHA가 원격 추적 브랜치의 reflog에 있는지 확인한다. 일단 이것이 둘 다 존재하면, 그것은 포크 포인트입니다. 그러나이 작은 경우에는 이 아니며 실제 포크 지점입니다. 원격 추적 분기와 로컬 분기 인수가 명령 줄에서 스왑 된 경우 올바른 포크 지점이 실제로 반환됩니다.
리베이스의 기본값으로
--no-fork-point
을 설정할 수 있습니까? 나는 git config documentation 쳐다 보면서 내가 자식 앨리어싱을 사용하여 시도--fork-point
- 켜고 끌 것이 분명 아무것도 찾을 수 없습니다,하지만 어색하고 틀에 얽매이지 않는 명령
AFAIK는 어떤 종류의'git pull'을 수행해도 커밋을 삭제할 수 없습니다. 가장 극단적 인 경우에,'git pull --rebase' 명령은 여러분의 커밋 중 일부를 _rewritten_으로 만들고 리모컨의 일부 항목 위에 재생하지만,이 경우에도 삭제되지는 않을 것입니다. –
@TimBiegeleisen : 아아,'git pull' 명령으로'git rebase'를 실행하면 (' .rebase'를'true'로 설정했을 때처럼), fork-point 코드를 얻게됩니다. –
torek
@torek 나는 이것이 일어날 수 있다는 것을 전혀 모르고있다. 기분이 좋으면 답에 약간의 정보를 추가하십시오. –