병합 된 변경 사항을 즉시 커밋하지 않는 이유는 무엇입니까?


16

내 사무실은 버전 관리를 위해 Git과 SourceTree를 사용합니다. 내가 가입했을 때 버전 관리가 없었고 SourceTree가 내가 사용한 유일한 시스템이기 때문에 발생했습니다. 나는 어떤 방법으로도 전문가가 아니지만 동료들 중에서 가장 경험이 많으므로 모든 사람들이 Git을 올바르게 사용하고 실수를 수정하도록 가르치는 사실상의 전문가입니다.

Git과 SourceTree를 거치고 프로세스의 모든 단계를 설명하는 자습서 문서를 작성 중입니다. 풀 프로세스에서 SourceTree 대화 상자에서 "병합 된 변경 사항을 즉시 커밋"옵션을 선택할 수 있습니다. 이것이 무엇을하며 왜 유용한 지 이해합니다. 내가 이해하지 못하는 것은 누군가이 기능을 사용 하지 않는 이유 입니다.

병합 된 변경 사항을 자동으로 커밋하지 않으려는 이유를 누군가가 설명 할 수 있습니까? 나는 추론을 이해하려고 노력하여 기능의 유용성을 더 잘 설명하고 향후 어떤 함정을 알아낼 수 있는지에 대한 아이디어를 얻을 수 있습니다.

편집 : 내 질문이 연결된 질문의 사본이라고 생각하지 않습니다. 관련 질문은 얼마나 자주 커밋해야하는지 묻는 것입니다. SourceTree에서 병합 커밋과 관련된 특정 기능을 사용하지 않는 이유를 묻습니다.



1
좋은 이유를 원하십니까? 사람들이 야생에서 말하는 것을 들었을 때 코드 확인을 지연시키는 다양한 이유를 제공 할 수 있기 때문에 그 중 몇 가지가 좋은 이유입니다.
whatsisname

내가 생각할 수있는 유일한 이유는 병합 충돌로 인해 병합이 실패하는 것입니다. 그러나 SourceTree는 어쨌든 커밋하지 않습니다.
Robert Harvey

참고 : 왜 당신은 당신의 자신의 자습서를 작성합니까? bitbucket에는 이미 훌륭한 자습서가 있습니다. confluence.atlassian.com/bitbucket/…
winkbrace

@winkbrace 우리는 Bitbucket을 사용하지 않습니다. 우리는 모든 것을 로컬 네트워크에 보관합니다. Atlassian의 훌륭한 튜토리얼을 참조 하지만 Git 및 버전 제어를 처음 접하는 사람들에게 좀 더 간결한 것을 원했습니다. "이것은 왜 그리고 왜 당신이 커밋 / 푸시 / 풀 / 기타"인지에 대한 소개와 절차입니다.
David K

답변:


26

이 기능을 사용하고 싶지 않습니다.

충돌이 없다는 사실은 내 브랜치에서 병합되는 변경 사항이 내가 만든 것과 거의 동일한 코드 줄에 있지 않음을 의미합니다. 그 변경 사항이 내 변경 사항과 호환되는 것은 아닙니다. 코드가 컴파일되거나 코드가 작동하거나 테스트가 통과된다는 의미는 아닙니다.

다시 말해,이 옵션을 사용하면 상태가 좋지 않을 수 있고 수정을 위해 새로운 커밋이 필요한 가짜 코드 커밋이 발생할 수 있습니다. 나는이 가짜를 밀어해서는 안 나는 어쨌든이 일을하고 있어요으로 (세상에 사람이 다음 병합 수, 금조차 실수로, 상류 커밋 다른 지점으로!), 나는 처음에 커밋이를 생성 할 이유가 없다 장소.


아마도 기능 분기를 작성하고 있으며 모든 작은 변경 사항을 기본 분기에 병합하지는 않습니다. 여러 사람이 동일한 기능 분기에서 동일한 클래스에서 작업하지 않는 한 병합은 기능 분기에서 충돌을 일으킬 가능성이 없습니다.
Robert Harvey

4
@RobertHarvey 예. 메인 분기를 자주 분기로 병합합니다. 의견에 다른 기능이 다른 클래스 / 모듈에 자연스럽게 영향을 줄 것이라는 숨겨진 가정이 있지만 모든 사람이 운이 좋은 것은 아닙니다. 운에 의해 당신은 어떤 일을하는 모든 사람들이 만질 필요가있는 어딘가에 신 수업을 가지고 있으며, 그것에 대해 많은 것을 할 수 없습니다. 또한 교차 절단 기능이 있습니다 (10 줄의 코드 중 하나를 변경해야하기 때문에 일부 라이브러리를 업그레이드하십시오 ...). 죄송합니다보다 더 안전.

2

병합 후 로컬 리포지토리의 파일이 변경 될 수 있습니다. "병합 된 변경 사항을 즉시 커밋"으로 설정하지 않으면 이러한 변경 내용이 로컬에 자동으로 커밋되지 않습니다.

이 옵션을 설정하지 않으면 파일이 커밋되지 않은 변경 사항으로 SourceTree에 나타납니다.

그것은 명시 적으로 지시하지 않는 한 Git 자체가 커밋하지 않기 때문에 SourceTree는 Git GUI입니다. "병합 된 변경 사항을 즉시 커밋" 옵션 은 명령 바로 가기이므로 그다지 많은 옵션 이 아닙니다.

따라서이 기능을 사용 하지 않으려 는 이유 는 자명합니다. 커밋을 수동으로 수행하거나 전혀 수행하지 않으려 고합니다.

피처 지점으로 마스터를 가져 간다고 가정 해 보겠습니다. 동료가 다른 기능 지점에서 작업하고 있습니다. 이 동료는 일을 끊는 역사를 가지고 있습니다. 병합에는이 동료가 작성한 공통 공통 코드에 대한 변경 사항이 포함됩니다. 따라서 다른 팀원과 함께이 동료가 작업에 영향을 줄 변경 사항이 없을 때까지 병합 된 변경 사항을 커밋 하지 마십시오 .

이론 상으로는이 기능을 사용하지 않을 정당한 이유가 없기 때문에 실제로는 여러 가지 정당한 이유가있을 수 있습니다. 당신의 튜토리얼과 관련하여, 나는 "100에서 99 번, 이것은 당신이 사용하기 원하는 옵션"이라고 말합니다. 특히 다른 사용자가 버전 관리를 처음 사용하는 경우 사용하지 않는 것에 대해 자세히 설명 할 필요는 없다고 생각합니다. 이 모든 것은 튜토리얼의 깊이에 달려 있습니다.


2

/programming//a/7925891/6781678 과 같이 커밋을 자동 푸시하기 위해 사후 커밋 후크를 사용하는 경우 의심스러운 품질의 커밋을 푸시하지 않으려면이 옵션 이 필요할 수 있습니다 .

나는 어느 쪽도 사용하지 않을 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.