git rerere를 활성화하는 데 단점이 있습니까?


107

git의 rerere 기능에 대해 여러 가지를 읽었으며이를 활성화 할 것을 고려하고 있습니다. 그러나 나는 그것을 사용하는 동안 발생할 수있는 가능한 문제에 대해 언급 한 사람을 본 적이 없습니다. 단점이 있다고 가정하지 않으면 기본적으로 활성화 될 것입니다. 그렇다면 rerere를 활성화하는 데 단점이 있습니까? 그렇지 않으면 발생하지 않을 잠재적 인 문제는 무엇입니까?


자동 rerere이 사용 하고 이전의 해상도를 적용, 그것은 메시지를 표시합니까? 그렇다면 어떻게 생겼습니까? TIA!
joeytwiddle

1
@joeytwiddle, 당 이 문서 , 그것은 형태의 것Resolved 'index.html' using previous resolution.
sampablokuper

답변:


69

병합을 잘못 수행 한 다음 버리고 "동일한"병합을 다시 수행하면 다시 올바르지 않습니다. 하지만 기록 된 해상도는 잊어 버릴 수 있습니다. 에서 문서 :

git rerere forget <pathspec>

에서 현재 충돌에 대해 다시 기록 된 충돌 해결 방법을 재설정합니다 <pathspec>.

특정 경로에서 사용하도록주의하십시오. 기록 된 해상도를 모든 곳에서 날려 버리고 싶지는 않습니다. ( forget인수 없이는 명시 적으로 요청 하지 않는 한이 작업을 수행 할 수 없도록 더 이상 사용되지 않습니다git rerere forget . .)

하지만 그렇게 생각하지 않는다면 잘못된 병합을 기록에 쉽게 넣을 수 있습니다.


13
이것이 rerere여전히 파일을 병합되지 않은 것으로 표시된 충돌로 남겨 두는 이유 이므로 커밋하기 전에 수동으로 추가해야합니다 (검사 / 테스트 후). 항상을 (를) 사용 git checkout -m <path>하여 원래 충돌 버전을 확인하고 필요한 경우 해결 방법을 다시 실행할 수 있습니다.
Cascabel 2011

1
그것은 말이 될 것입니다! 새 별칭이 필요한 것 같습니다.
Cascabel

5
나는 이것이 아마도 주요 문제라고 생각합니다. rerere를 활성화하면 오류가 예기치 않게 몰래 들어올 수있는 또 다른 방법이 추가됩니다. 중단 한 병합 (또는 히스토리에서 삭제하여 실행 취소)은 나중에 다시 돌아올 수 있습니다. 기본적으로 실제 히스토리 그래프와 직교하는 두 번째 히스토리 메커니즘을 도입합니다.
Ryan C. Thompson

3
@RyanThompson 중단 된 병합은 rerere에 영향을주지 않습니다. (나는 종종 그들이 그렇게하기를 바랍니다. 잘못 설정했기 때문에 때때로 병합을 중단 한 다음 올바르게 설정했을 때 정확히 동일한 해결 방법을 수행해야했습니다.) 기록에서 병합을 삭제하려면 왜 그렇게 하시겠습니까? 그렇게?
Marnen Laibow-Koser 2014

40

JC 하마노 "는 그의 기사에서 언급 된 바와 같이 rerere과 재미를 "

  • Rerere는 분쟁 지역을 해결하기 위해 선택한 방법을 기억합니다.
  • Rerere는 또한 의미 적 변화에 적응하기 위해 충돌 영역 외부에서 어떻게 손을 댔는지 기억합니다.
  • Rerere는 이전에 해결 한 것과 내용이 다른 두 분기를 병합하더라도 이전 해결 방법을 재사용 할 수 있습니다 .

오랫동안 rerere를 사용해 온 사람들조차도 종종 마지막 요점을 알아 차리지 못합니다.

따라서 rerere너무 광범위한 콘텐츠에서 활성화 하면 마지막 요점으로 인해 놀랍거나 혼란스러운 병합 해결로 끝날 수 있습니다.


15
충돌하는 덩어리는 여전히 일치해야합니다. 오 탐지를 제공하는 것은 상당히 어렵습니다.
Cascabel 2011

3

전 세계적으로 활성화되었습니다. 나는 정말로 어떤 문제도 눈치 채지 못했으며 보통 내 삶을 편하게 만드는 것 같습니다.


4
여기도 마찬가지입니다. 2 년 이상 사용해도 문제가 없습니다.
Andrey Tarantsov 2012 년

3

이진 파일 만 포함 된 커밋 (gitk)을 선택했습니다. 체리 픽은 갈등으로 실패했고 (자연 스러웠던) 체리 픽을 유지하면서 갈등을 해결했습니다. 나중에 다른 리베이스 브랜치에서 내 dll이 작동하지 않는다는 사실을 발견하고 놀랐습니다. 단지 자동 충돌 해결로 리베이스에 포함되지 않았 음을 발견했습니다. 그래서 이것은 내가 (완전히 일관 적이라고 확신하지만) 반 직관적 인 행동을 만난 유일한 경우입니다.


1
치료 :git rerere forget path/to/compiled/bin.dll
Mr_and_Mrs_D

원래의 경우에는 체리 따기가 아니라 리베이스에 대한 갈등이 있었지만 차이가 없다고 생각합니다
Mr_and_Mrs_D
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.