커밋 사이에 이미 너무 오래 기다렸을 때 어떻게해야합니까?


100

나는 장난 꾸러기 ... 너무 많은 "카우보이 코딩", 충분하지 않은 커밋. 자, 여기에 엄청난 커밋이 있습니다. 그렇습니다, 나는 모든 것을 커밋해야했지만 지금 너무 늦었습니다.

더 나은 게 뭐야?

  1. 내가 바꾼 모든 것을 나열하는 매우 큰 커밋을 수행하십시오.
  2. 파일에 여러 수정, 변경, 추가 메소드 이름 등이 있으므로 컴파일되지 않을 작은 커밋으로 나누십시오.
  3. 적절한 커밋을 위해 파일을 부분적으로 되 돌린 다음 새로운 변경 사항을 다시 적용하십시오.

참고 : 현재로서는이 프로젝트를 수행하는 유일한 프로그래머입니다. 이 커밋 의견을 볼 유일한 사람은 적어도 우리가 더 많은 프로그래머를 고용 할 때까지는 나입니다.

그건 그렇고 : SVN과 Subclipse를 사용하고 있습니다. 이러한 변경을 수행하기 전에 새 분기를 만들었습니다.

추가 정보 : 처음 에이 상황에 어떻게 도달했는지와 관련하여 별도의 질문을 했습니다. 응용 프로그램의 접착제를 다시 작성하는 방법


2
어떤 버전 관리 프로그램을 사용하고 있습니까? 다수의 모듈에는 "행크스"(예 : 수정 된 줄 그룹)로 편집 내용을 분류 할 수있는 모듈이 있습니다. 즉, 원하는 방식으로 편집 내용을 그룹화하고 한 파일의 모드를 여러 변경 세트에 배포 할 수 있습니다. 예를 들어, 수은에는 "선반"확장이 있습니다. 물론 프로세스에 중요한 변경 사항이 있는지 확인해야합니다. 문제의 가치가 있는지 여부는 귀하와 귀하의 상점에 달려 있습니다.
Alexis

6
최소한 지점에서 체크인하면 변경 사항을 잃지 않습니다.
Rory Hunter

2
계속 질문을하고 더 오래 기다릴 수도 있고, 실제로 발생하는 혼란을 저지르고 처리 할 수도 있습니다. 그리고 ... 다시는하지 마십시오!
haylem

40
# 1, 용서를 구하고 나서 더 이상 죄를 짓지
마라

5
더 중요한 질문은 "이 문제가 다시 발생하지 않도록 나쁜 습관을 어떻게 바꾸는가"입니다. 하루에 한 번 이상 더 자주 커밋 이유 가 없어야합니다 .
Doc Brown

답변:


52

답을 얻으려면 앞으로 이러한 커밋 결과를 어떻게 사용할지 스스로에게 물어봐야합니다. 가장 일반적인 이유는 다음과 같습니다.

  • 어떤 릴리스의 버그가 도입되었는지 확인하십시오.
  • 왜 특정 코드 줄이 있는지 확인하십시오.
  • 다른 지점으로 합병
  • 고객 또는 테스터가 해당 버전에서보고있는 문제를 해결하기 위해 이전 버전을 체크 아웃 할 수 있습니다.
  • 릴리즈에서 특정 부품을 포함하거나 제외 할 수 있습니다.

첫 두 가지 이유는 변경된 코드의 각 줄에 동일하게 적용되는 체크인 메시지를 생성 할 수 있다고 가정하면 한 번의 큰 체크인으로도 제공 될 수 있습니다. 당신이 유일한 프로그래머라면, 작은 커밋은 병합을 더 쉽게 만들지 않을 것입니다. 제출되지 않은 변경 사항 중 일부만으로 릴리스 또는 테스트를 수행 할 계획이없는 경우 마지막 두 가지 이유는 적용되지 않습니다.

작은 커밋을 수행하는 다른 이유가 있지만 변경 중이고 그 시간이 지났기 때문입니다. 이러한 이유로 인해 실수 나 실험적인 변경 사항을 쉽게 철회 할 수있게되었고 무서운 합병없이 동료와보다 쉽게 ​​동기화 할 수 있습니다.

당신이 묘사 한 당신의 상황에 대한 나의 이해에서,이 시점에서 커밋을 나누는 데 아무런 이점이없는 것 같습니다.


훌륭한 답변! 작은 커밋을하지 않는 것에 대해 후회하지는 않지만, 가능한 한 생산적으로 좋은 행동을 되찾기 위해해야 ​​할 일에 대해 훨씬 나아졌습니다.
durron597

1
다른 것은 약 3 5 순서대로 지금 어떤 일이 그들이 당신이 일어날 수 있도록한다는 것입니다 수있는 당신이 실제로 필요할 때까지 기다린 후 동일한 작업을 수행. 당신이 한 일에 대한 기억이 사라졌기 때문에 아마도 미래에는 다소 어려울 것입니다. 그러나 다시, 당신은 아마 그것을 필요 없을 것입니다.
Steve Jessop

내 경험상 코드가 존재하는 이유 (즉, 이유 1과 2)를 이야기하기 위해 버전 제어 주석에 의존하는 것은 번거롭고 깨지기 쉽습니다. 분기와 함께 SVN을 사용하는 경우 어쨌든 커밋 기록이 병합에서 손실됩니다 (git과 같은 더 현대적인 것들을 사용하는 것이 좋습니다). 따라서 IMHO는 의견을 가장 잘 제공합니다.
Hans-Peter Störr

1
@hstoerr-Subversion 1.5 이상인 경우 병합시 --reintegrate 옵션을 사용하여 기록을 보존 할 수 있습니다.
더스틴 켄달

1
git add -p는 가장 친한 친구입니다. 나는 그 특징에 사랑에 빠졌다. 이렇게하면 코딩 표준 수정 사항을 별도의 커밋으로 커밋하고 관련 코드 변경 사항을 격리시킬 수 있습니다.
Spidey

39

난 당신이, 당신이 코드에서 검사를 피하려고 할 어떤 생각 을 알고 컴파일되지 않습니다.

세 번째 옵션이 실현 가능하다고 생각되면 커밋 시퀀스가 ​​컴파일 할 수없는 시스템을 만들지 않는 한 이것이 좋은 방법 일 수 있습니다. 그렇지 않으면 하나의 큰 커밋을 수행하십시오. 추악하지만 간단하고 빠르며 완료됩니다. 앞으로 더 자주 커밋하십시오 .


옵션 셋이 가능하지만 것 매우 많은 시간이 소요. 난 그냥 옵션 1을 할 것 같아요
durron597

3
"무엇을 하든지"피하도록 누군가를 강요 할 정도로 끔찍한 기능 브랜치 (또는 유사한 기능)에서 컴파일 또는 빌드하지 않는 코드 커밋의 단점은 무엇입니까 ? 나는 정말로 끔찍한 커밋을 다른 사람들이 피할 수 있다고 상상할 것입니다. 이것이 내가 처음부터 피할 수있는 유일한 이유입니다 (물론 커밋이 해제 되지 않았다고 가정 ).
Kenny Evitt

3
"컴파일되지 않습니다 코드에서 검사를 피하기" 만 공유 코드 기반 / 지점에 적용됩니다. 일인 프로젝트 또는 일인 개발 브랜치에서 변경 사항을 VC로 가져 와서 물건을 잃지 않도록하는 것이 더 중요하다고 주장합니다.
Stephen C

3
예를 들어 @StephenC는 git-bisect와 같은 도구를 중단하기 때문에. 코드가 항상 컴파일 / 실행되고 항상 컴파일되면 회귀를 찾아야하는 경우 이진 검색을 수행 할 수 있습니다 (코드에 회귀가있는 경우 좁히지 않고 크게 변경해야 함) 아래로).
Maciej Piechotka

@MaciejPiechotka-개인 브랜치에서 특정 도구를 사용해야하고 해당 코드를 컴파일 할 수 있어야하는 경우 분명히하십시오. 그러나 이는 1 인 프로젝트 / 지점에는 일반적이지 않습니다.
Stephen C

19

자주, 작고 의미있는 커밋을 만드는 가장 중요한 이유는 코드의 역사를 이해하는 데 도움이되기 때문입니다. 특히 이해하기 쉬운 diff를 생성하기 어려운 경우 코드가 어떻게 변경되었는지 이해하기가 매우 어렵습니다.

옵션 1 은 변경 한 이력을 난독 화하지만 그렇지 않으면 아무런 문제가 발생하지 않습니다.

옵션 2 는 옵션 1보다 약간 적은 변경 내역을 난독 처리하지만 커밋이 다른 것으로 가정하거나 결론을 내리면 다른 문제가 발생할 수 있습니다 (예 : 독립적으로 다른 브랜치로 병합 가능). 이것이 옵션 1보다 선호되는 강력한 실질적인 이유가 없다면, 이는 그보다 덜 이상적입니다.

옵션 3 이 가장 좋습니다. 다른 방법도 동일하지만 다른 곳에서 설명했듯이 "최고"의 시간이 필요하거나 다른 상당한 비용이 발생하는 경우 예상되는 이점과 비교하여 해당 비용을 측정해야합니다. 더 깨끗한 커밋 만들기.

제공 한 정보를 바탕으로 옵션 1을 선택했습니다. 변경 내용을 커밋하라는 알림을 설정해야합니까?

프로토 타이핑 및 재 작성

명심해야 할 또 다른 고려 사항은, 특히 유일한 프로그래머라는 메모에 비추어 볼 때 상대적으로 새로운 코드베이스로 작업하고 있다는 내 생각에 의문을 가질 때 변화를 저지르는 것과 관련하여 다른 습관을 개발하는 것이 좋을 것입니다 '새로운 코드를 프로토 타이핑하고 기존 코드를 유지하거나 확장하는 것입니다. 아마도 둘 사이에 굉장히 뚜렷한 구분은 없지만 여전히 유용한 구분이라고 생각합니다.

새 코드를 프로토 타이핑 할 때는 변경 사항을 거의 확실하게 브랜치에 저장하거나 별도의 프로젝트에 저장할 때마다 커밋하십시오. 또는 버전 관리 외부에서 모두 작동 할 수도 있습니다. 대신 고려중인 다양한 가설이나 설계의 실현 가능성에 대한 증거를 수집하는 데 집중할 수 있습니다. 필자는 종종 Visual Studio for C # 코드 대신 LINQPad와 같은 다른 도구를 사용하여 작은 프로토 타입을 작성합니다.

특정 가설이나 디자인의 유효성을 검증하면 기본 프로젝트, 이상적으로는 지사에서 다시 작성하고 변경의 본질에 대해 다른 사람 (미래를 포함하여)에 대한 이해를 도울 수있는 작고 의미있는 커밋을 만드십시오. 당신은 만들고 있습니다.


1
좋은 답변; Kenny 프로토 타이핑에 대한보다 구체적인 세부 정보를 제공하는 좋은 기사 나 다른 기술 자료가 있습니까? 프로토 타입의 제 버전은 "노트북 또는 화이트 보드 스케치"
durron597

@ durron597, 나는 머리 꼭대기에서 어떤 링크 (찾을조차조차)를 생각할 수 없다. 나는 '프로토 타이핑 (prototyping)'이라는 아이디어가 참신하다고 생각조차하지 않는 충분히 해석 된 (동적으로 컴파일 된) 프로그래밍 언어를 가지고 놀았습니다! 그리고 나는 너무나 많은 C, C ++ 및 Java 프로그램을 (다시 반복해서) 다시 작성했는데, 이것이 드물거나 적어도 일부는 새로운 것이라고 생각하지 않았습니다.
Kenny Evitt

12

유일한 합법적 인 대답은 트렁크를 끊지 않는 것이지만 때로는 불가능한 경우도 있습니다. 예를 들어, 너무 많이 커밋하면 svn이 커밋을 중단 할 수 있습니다 (옵션 또는 기능 일 수도 있습니다). 이러한 특별한 경우에는 체크인 만하면됩니다. 당신은 단일 프로그래머이기 때문에 다른 사람을 방해하지 않을 것입니다.

따라서 옵션 1을 선택하겠습니다. 가능하지 않으면 옵션 2를 선택하십시오.

옵션 3에는 많은 노력이 필요하며 그만한 가치가 없습니다.


1
또는 비 컴파일 버전을 "DOES N'T COMPILE"로 태그 지정하십시오.
ratchet freak

2
@ratchetfreak : 태그가 트렁크에서 "코멘트"로 작동하지 않기 때문에 SVN의 "태그"가별로 도움이되지 않는다고 생각합니다.
Doc Brown

@DocBrown 나는 커밋 메시지에 그것을 추가하는 것을 의미했다
ratchet freak

5
@ratchetfreak 나는 "PART X / N : ABC에서 확인-DOESNT COMPILE"
BЈовић 님이 그것을

옵션 3에는 많은 노력이 필요하지 않습니다. 또 다른 대답은 사용하여 빠르고 쉽게 작업을 수행하는 방법에 대해 설명 git add --patch하고 git stash. 구식 소스 제어 도구와 지식 때문에 상황이 어려워 보입니다.
Ron MacNeil

7

파일에 여러 수정, 변경, 추가 메소드 이름 등이 있으므로 컴파일되지 않을 작은 커밋으로 나누십시오.

비슷한 상황에서 자신을 발견했을 때 다음 기술을 사용했습니다.

  1. 특정 기능과 관련된 코드 만 추가하십시오. git add --patch
  2. 다른 모든 변경 사항을 보관하십시오. git stash save --keep-index
  3. 테스트 실행 / 컴파일 시도
  4. 모든 것이 괜찮다면 변경 사항을 커밋하십시오.

SVN에 익숙하지 않으므로 이것이 특정 상황에 적용 가능한지 모르겠지만 기본은 동일해야합니다. 작은 코드 부분을 분리하여 개별적으로 테스트하십시오.


나는 이것을 좋아하지만 불행히도 내 할 일 목록에있는 많은 것들 중 하나입니다 (회사의 유일한 기술 담당자 일 때 많은 것이 있습니다)는 SVN에서 git으로 전환하는 것입니다. .
durron597

1
사용하기에 충분하지 않기 때문에 --patch다양한 편집기 창에서 Undo를 사용하여 이전 작업 상태에 도달하고 커밋합니다. 그런 다음 다음 커밋을 다시 실행합니다. 실행 취소 상태에있을 때 코드를 약간 추가하려는 유혹 때문에이 프로세스를 시작하기 전에 항상 백업을 수행 합니다!
joeytwiddle

git을 사용하면 커밋하기 전에 대화식으로 추가 (-i 추가)하고 나중에 커밋을 독립적으로 확인할 수 있습니다.
riezebosch

3

방법 4 : 어쨌든 리포의 현재 상태를 임시 장소에 백업하고, 리포지를 원래 상태로 되돌리고, 모든 변경 사항을 목록으로 작성하고 (임시 백업을 볼 수 있음) 수동으로 다시 구현 (및 컴파일) 그리고 테스트!) 별도 커밋으로.

이미 코드를 작성 했으므로 임시 백업에서 복사하여 붙여 넣을 부분을 파악하는 것입니다.

모든 변경 사항을 깨끗하게 다시 구현하여 커밋이 자체 포함되고 작고 컴파일되도록 보장하면 임시 백업을 삭제할 수 있으며 모든 것이 커밋 시간 / 날짜를 제외하고 거의 동일합니다. 처음부터 제대로했다면


이것은 옵션 # 3을 수행하는 방법입니다. 아마도 가장 좋은 방법은 사실이지만 여전히 시간이 많이 걸립니다.
durron597

하나의 큰 커밋을 수행했을 때 메시지 추가 / 삭제 / 보내기의 149 줄이있었습니다. 이 작업을 수행하는 데 적어도 반나절이 걸립니다.
durron597

@ durron597 동의하지 않습니다. # 3과 다른 것 같습니다. 149 줄과 관련하여 깨끗한 커밋 기록을 얼마나 중요하게 생각하십니까? 반나절을 쓸만한 가치가 있습니까? 어쨌든 다른 방법은 어떤 행이 어떤 커밋에 있어야하는지 파악하지 않아도되므로 149 줄을 어느 쪽이든 통과해야합니다. 시간의 차이는 작습니다.
Superbest

허. 나는 버전 제어를 사용하는 것을 알기에 충분히 경험이 있지만 내 엉덩이를 구할만큼 충분히 경험이 없었습니다.
durron597

전체 저장소 를 백업 할 필요는 없습니다 . "백업"커밋을 만든 다음로 HEAD를 롤백 할 수 있습니다 git reset HEAD~. git reflog나중에 필요하다고 결정하면 커밋이 계속 진행 됩니다. 재설정하기 전에 분기를 분기 한 다음 작업 분기로 다시 전환하여 "백업"커밋에 이름을 지정할 수도 있습니다. 필요하지 않은 경우 나중에 분기를 삭제하십시오. 편집 : 죄송합니다 OP는 svn에 몰랐어요!
joeytwiddle

3

당신은 유일한 프로그래머입니다. 당신이 한 일의 중요한 부분을 자세히 설명하는 단일 체크인을 수행하십시오.

수행 한 작업의 "부분"을 롤백 할 가능성이 있습니까? 그렇지 않은 경우 옵션 1로 진행하십시오.

코드를 버전 관리 시스템에 체크인해야하는 몇 가지 이유가 있습니다. 그리고 여러분 모두가 유일한 개발자 인 경우 안전을 중심으로 돌립니다. 즉, 나사를 조이거나 기계가 죽는 등의 경우 항상 마지막 체크 포인트로 돌아갈 수 있습니다.

나중에 프로젝트에 들어온 프로그래머는 컴파일되지 않은 버전으로 롤백하지 않을 것입니다. 따라서 IMHO의 옵션 2는 미치광이입니다.

옵션 3은 그런 시간 싱크처럼 들립니다. 내가 당신의 상사이고 당신이 이것을하는 데 시간을 낭비한다면, 나는 당신의 시간이 가치있는 것에 대해 약간 이야기 할 것입니다.

반복하려면 : 코드를 체크인하여 시스템 장애시 엉덩이를 덮거나 저장합니다. 한 사람 팀의 다른 모든 것들은 창 드레싱입니다.


1
롤백이 작은 커밋을 사용하는 유일한 이유는 아닙니다. 특히 좋은 이유는 아닙니다. 주된 이유는 변경 사항이 언제 , 왜 도입 되었는지 확인할 수 있고 출처를 알 수없는 문제에 직면했을 때 문제 해결을 용이하게하기 위해서입니다. 나중에 프로젝트에 들어온 다른 프로그래머 는 적어도 "WTF"로 이동하고 커밋을 처음 작성했거나 마지막으로 수정 한 커밋을 참조하는 코드 줄을 보게 될 것 입니다. 그 커밋이 500 가지를 바꾸는 거대한 커밋이라면 역사에서 유용한 정보를 얻는 것은 불가능합니다.
Aaronaught

우연히, 이것이 Git을 사용하는 팀이 일반적으로 병합 커밋을 싫어하고 리베이스를 요청 / 요청하는 이유입니다. bisect많은 변경 사항이 하나의 큰 커밋에 채워지기 때문에 병합 커밋이 중단 되고 문제를 격리하는 데 일반적으로 사용되는 다른 기술이 사용됩니다.
Aaronaught

1
개인적으로 저는 코드베이스를 근본적으로 바꾸지 않는 한 큰 커밋을하지 말아야한다는 것에 동의합니다. 그러나 우리는 본질적으로 연결이 끊어졌고 이제는 옳은 일을하기 위해 노력하고있는 단일 프로그래머에 대해 이야기하고 있습니다. 이 경우 하나의 큰 커밋이 바람직하다고 생각합니다.
NotMe

1
@Aaronaught 저는 3 개월 후 자신이 '다른 프로그래머'를 구성 할 수 있다고 덧붙였습니다.
Maciej Piechotka

1
또한 아키텍처 변경이나 다른 "파괴적인"변경에 대한 실행 가능한 전략으로 분기에 동의하지 않아야합니다. 그것은 단지 병합 충돌과 병합 후 버그의 악몽으로 이어집니다. 장기적으로는 주요 변경 사항을 더 작고 이전 버전과 호환되는 변경 사항으로 나누거나 최악의 시나리오에서는 Fowler, Humble 및 나머지가 Branch 라고 부르는 것을 사용하는 방법을 찾는 것이 훨씬 덜 고통 스럽습니다. 추상화 (실제로 지점이 아님). 이 두 가지 전략 모두 작고 집중적 인 커밋을 의미합니다.
Aaronaught

2

내 규칙은 : 심각한 코드 검토 없이는 체크인하지 않습니다. 난 내 자신에있어 경우에, 나는 코드 나 자신을 검토해야 할 것이다, 그러나 그것은 것입니다 검토. 다른 사람이 검토 할 수없는 많은 양의 코드 변경이있는 것 같으므로 직접 검토 할 수 없습니다 (자신의 코드를 검토하는 것은 더 어렵고 더 많은 규율이 필요합니다. ).

완전히 깨지지 않는 규칙은 다음과 같습니다. 빌드조차하지 않는 코드를 체크인하지 말고 작동하지 않는 코드를 체크인하지 마십시오.

해결 방법 : 변경된 코드를 복사하고 원래 지점으로 돌아갑니다. 한 번에 하나의 변경 사항을 원래 코드로 병합하고, 검토하고, 테스트하고, 체크인하십시오. 설명한 프로그래밍 방법을 사용하면 심각한 버그를 발견 할 수 있습니다.

또한 좋은 프로그래밍 습관을 훈련시키는 좋은 방법이기도합니다.


이것은 논리적으로 위 (힘내 기반의 대답과 같은 일이 git add --patchgit stash)과 현대 DVCS 년대 쉽게 처리 할 수 있지만, 오래된 시스템이 할 수없는 시나리오의 좋은 예.
Ron MacNeil

1

당신이 너무 걱정하고 있다고 생각합니다. 당신이 유일한 프로그래머이고 작업 할 스펙 시트가 없다면 전적으로 당신이하는 일에 달려 있습니다. 큰 커밋을 한 사람을 아무도 처벌하지 않기 때문에 커밋 내에서 개별 파일 변경 사항을 롤백 할 수없는 것과 같은 기술적 문제 만 발생합니다. 이 시점에서 레포 만 제어 할 수 있기 때문에 큰 관심사는 아닙니다.

실용주의와 교의주의 사이에는 선이 그려져 있습니다. 당신이 한 일은 팀에서 좋은 생각이 아니며 앞으로 반복해서는 안되지만, 귀하의 상황에서 나는 큰 커밋을 제출할 것입니다.


1
이것은 이전 12 답변에 이미 게시 된 것보다 실질적인 것을 추가하지 않는 것 같습니다
gnat

-1

문제는 커밋 사이의 지연이 오래 걸리지 않고 코드를 컴파일 할 수없는 상태로 너무 오랫동안 유지한다는 사실입니다. 먼저 'long'에 대한 정의는 무엇입니까? 어떤 사람들에게는 과도기 상태에 대한 5 분이 너무 많지만 컴파일러를 실행하지 않고도 며칠 동안 코드를 연마 할 수 있습니다.

실제로 중요하지 않습니다. 중요한 것은 코드를 제어 할 수 없게되어 코드를 관리 할 수 ​​없게 된 것입니다. 이것은 정상입니다. 기술 부채가 있고 리팩토링에 대해 생각할 때입니다. 당신은 좌절합니까? 코드가 컴파일되지 않고 단위 테스트가 없습니까? 이 경우 리팩토링에 대해 어떻게 생각할 수 있습니까? 걱정 마. "카우보이 코딩"을 마치고 청소를 시작하십시오. 이상적으로 몇 가지 테스트를 작성하십시오. 그럴 시간 없어요? 좋아, 작은 개선부터 시작하십시오.

일부 변경에는 테스트가 필요하지 않습니다. 변수 이름을 더 적합하게 변경하고 반복 코드를 별도의 함수로 이동하는 등 ... 코드에 대해 더 잘 이해할 수 있습니다. 그 후에는 더 큰 변경을 수행 할 수 있습니다. 다시 가능하면 테스트를 작성하십시오. 코드를 관리하기 쉽게 만드십시오.

그 후 다음 변경으로 "너무 오래"걸리지 않는다는 것을 알 수 있습니다 (무엇이든).


2
그는 오랫동안 코드를 컴파일 할 수 없다고 말하지 않았다. 저장소의 코드는 오랫동안 수정되지 않았지만 여전히 컴파일 가능합니다. 작업 복사본의 코드는 자주 업데이트되었지만 커밋되지 않았습니다. 그의 코드가 리팩토링을 요구할 수도 있다는 것은 아무것도 없다. 여기서 "카우보이 코딩"은 실제 코드 품질이 아닌 그의 SCM 워크 플로우를 의미한다
Idan Arye

@IdanArye 원래 질문 ...Try to break it into smaller commits that likely won't compile...에서 코드를 커밋하지 못하는 것이 이미 노래보다 좋은 노래라면 코드를 관리하기가 어렵습니다. "커밋"은 작업을 유지하는 방법 중 하나 일뿐입니다. 우리는 좀 더 극단적 인 경우에 대해 생각할 수 있습니다. "소스 파일을 저장하지 못하게 막는 경우". 그래서 무엇이 될 수 있습니까? 나는 당신 자신의 변화에 ​​대한 두려움이라고 생각합니다. 왜 그렇게 될 수 있습니까? ... 당신이 요점을 알 것 같습니다
AlexT

2
나에게 그가 저 지르지 못하게 한 것은 단순한 게으름 같았습니다.
Idan Arye

@IdanArye 당신은 모든 계산에 정확합니다. 또한 TDD를 충분히 수행하지 않으면 별도의 문제입니다.
durron597

@AlexT는 두 가지 버그를 수정하는 시나리오를 고려하며 그 중 하나는 새로 개발 된 방법이 필요합니다. 제대로 커밋 한 경우 하나의 버그를 수정하고 커밋 한 다음 다른 버그를 수정합니다. 그렇지 않은 경우 커밋 할 때 커밋 된 버전에 새로운 메소드 호출이 없으므로 두 번째 변경 사항으로 동일한 커밋에 두 변경 사항을 모두 포함하거나 첫 번째 버그 수정을 커밋해야합니다. 컴파일하지 않습니다.
durron597
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.