2016-08-15 3 views
0

파일을 변경하고 git push를 실행했습니다. 내 지부가 원격 상대방 뒤에 있기 때문에 커밋이 거부되었습니다. 나는 그 다음 git pull을 실행했고 그것은 Merge made by the 'recursive' strategy.이라고 말했다. 그러나, 그것은 또한 내 텍스트 편집기를 뽑아 내게 커밋 메시지를 입력했다. git pull을 실행했을 때 git이 자동으로 커밋을 생성 한 이유는 무엇입니까? 결과 커밋에는 부모가 두 개 있지만 파일을 변경하면 전혀 변경되지 않습니다. 이제 내가 진짜로 내용이없는 무언가를 합쳤다고 말하는 바보 같은 커밋이 있습니다.강제 종료 후 Git이 자동으로 변경하지 않고 커밋했습니다.

+0

읽어보기 : http://stackoverflow.com/a/34503873/1401351 – Peter

+0

@Peter 그래서 기본적으로 리베이스 했어야합니까? – AlexMA

+0

예, 대부분의 워크 플로에서 일부 다른 지점으로 푸시되거나 다른 사용자와 공유되지 않았고 실제 병렬 작업을 기록하지 않으려는 작은 변경 집합에 대해서는 "pull --rebase"를 선호합니다. – Peter

답변

2

git pull을 실행하면 git은 실제로 git fetch에 해당하는 명령을 실행 한 다음 git merge을 실행합니다. 이 경우 병합은 중요하지 않지만 커밋이 이루어지기 전에 통합되어야하는 분기가 두 개인 분기에 커밋됩니다. 간단히 말하면, git는 각 지점의 역사의 정확성을 유지하면서 통합을 처리하기 위해 "병합 커밋"을 수행했습니다.

지사의 기록을 유지하는 것이 중요하지 않은 경우 this question이 중요합니다.

+0

커밋이 변경되지 않은 이유에 대해서는 여전히 혼란 스럽습니다. – AlexMA

+0

게시자가 게시 한 질문은 기본적으로 제 중복이며이를 설명합니다. 나에게 이상하게 보였지만, 안녕하세요. \ _ (ツ) _/¯ – AlexMA

+0

@AlexMA 파일이 변경되지 않았습니까? * 확실한 것은 아니지만 추측을 위험하게 할 것입니다. 파일은 병합 (부모 커밋의 참조를 체리 선택)이 아닌 각 상위 커밋에서 실제로 변경됩니다. "변경된 파일"이 없습니다 = 출력이 없습니까? – Conduit