2011-03-02 2 views
22

SVN과 바자를 주로 사용했기 때문에이 동작에 대해 궁금합니다. (나는 우수한 github에와 인터페이스 자식을 배우는 중이에요.)git가 기본적으로 병합 된 후에 커밋되는 이유는 무엇입니까?

그것은 나에게 카운터 직관적 보인다처럼하면은

git merge [branch] --no-commit

더 나은 만들기 위해 사람을 격려하는 기본값으로하는 것 병합이 커밋되기 전에 원하는대로 병합되었는지 확인하십시오.

+2

그런데 git 병합은 문제가 발생하면 충돌로 끝납니다. 또한 특정 이유로 인해 커밋되지 않은 병합에 의해 도입 된 변경 사항을보고 싶다면 성공적인 "자식 병합"바로 다음에 "git reset HEAD ^"를 수행하면 마지막 커밋 변경 사항을 모두 남겨두고 한 커밋으로 되돌아갑니다. 병합 커밋) 커밋되지 않은. –

답변

25

리누스 토발즈가 힘내를 만들 때 설정 한 목표는 자동으로 해결할 수있는 모든 병합을 만드는 것이 었습니다 ... 빨리. 그의 2007 Google Tech Talk: Linus Torvalds on Git (transcript)
을 참조하십시오. 몇 초 안에 수백 가지의 병합이 가능합니다.

기본적으로 "--no-commit"은 그 목적을 거의 상쇄합니다. --no-commit

는 병합을 수행하지만 사용자에게 검사 및 추가 커밋하기 전에 병합 결과를 조정할 수있는 기회를 제공하기 위해 병합 실패 및 자동 커밋하지 않는 척. Linus's talk (video)에서

추출 :

중요한 유일한 것은 당신이을 병합 할 수 있습니다 얼마나 빨리이다.
git에서 병합 할 수 있습니다 ... 하루에 여러 번 22,000 개의 파일을 병합합니다. 병합에 5 초 이상 걸리면 불행 해지고 그 5 초 모두가 모든 diff를 다운로드하는 중입니다. 하지만 두 나무 사이의 삼각지는 합병 자체가 0.5 초도 채 걸리지 않습니다.
그리고 그것에 대해 생각할 필요가 없습니다.
[...] 실제로 작업 방식을 변경하는 성능의 종류입니다.

+0

아 좋아 그럼 기본적으로 당신이하고 싶은 일을 병합하고 그것을 가능한 한 빨리 끝내고 싶다면 asumption 무엇입니까? – Will

+2

@Will : 네,하지만 다른 워크 플로를 잊지 마십시오. 병합하기 전에 작업을 리베이스하십시오 (그러면 빨리 감기 병합이됩니다) : http://stackoverflow.com/questions/804115/git-rebase-vs -git-merge/804178 # 804178) – VonC

+0

이 답변에서 참조하는 대화의 비디오 http://www.youtube.com/watch?v=4XpnKHJAok8&feature=player_detailpage#t=3118s – Will

관련 문제