코드의 변화


개발 과정에서 소스 코드는 수없이 수정됩니다.

소스코드를 수정하는 것은 주로 새로운 기능의 코드를 삽입하거나, 버그를 수정하기 위한 이동대체 입니다.
이러한 코드 수정은 개발 목적을 달성하는 작업들입니다.


코드변화 예시


코드의 수정과정을 예를 들어 봅시다.
다음과 같이 텍스트 코드가 존재합니다.

  • 변경 전
    안녕하세요.
    반갑습니다.
    

위의 코드를 좀더 개선하여 수정한다고 합시다.

  • → 변경후
    안녕하세요 지니입니다.
    이렇게 만나서 반갑습니다.
    

코드가 수정되었습니다. 한눈에 들어 오시나요?


인간의 기억력 한계


인간의 기억력에는 한계가 있습니다. 우리의 일상생활 모두를 기억을 할 수 없습니다.
이는 인간이 뇌를 최소한으로 사용을 하면서, 생존을 위한 활동을 분배하기 위한 시스템적 사고 과정입니다.

개발자가 코드를 작성을 할때도 마찬가지 입니다.
작업자는 개발 과정에서는 수정 내용을 단기 기억으로 쉽게 알 수 있지만, 시간이 흐르거나, 내용이 많어지면 이를 모두 기억하기 어렵습니다.


실수


이 세상에 완벽한 것은 없습니다. 사람이 다양한 기술을 적용하여 생산하고, 이 또한 생산과정에서 실수를 발생하게 됩니다.

프로그램 개발 또한 코드 작성 도중에 실수를 할 수 있습니다.
실수로 인하여 또는 잘못된 판단으로 변경 전 시점으로 되돌아가야 한다면 어떻게 해야 할까요?

단기기억으로 기억된 수정 작업들을 하나씩 되돌릴 것입니다.
또는 몇일 동안 수정한 작업이라면 좀더 어려울 것입니다. 몇일간의 코드의 수정과정을 모두 기억하기 힘들기 때문입니다.

이전의 코드로 되돌리기 위해서 기억을 못찾을 경우 어떻게 해야 할까요? 난감할 것입니다. 만일, 하나의 코드라도 잘못 되돌리면 또 다른 문제가 발생할 수 있기 때문 입니다.


코드의 변화를 기록


이러한 인간의 기억력의 한계와 실수를 위해서 인간은 오래동안 메모라는 기술을 응용해 왔습니다.
또한, 컴퓨터에서는 메모 대신에 복사라는 대비책을 만들어 사용하곤 했습니다.

직접 메모를 작성하거나 파일을 복사해 두는 것은 생산성이 좋지 못합니다. 간략하게, 코드의 변경되는 부분만을 기록하고 관리하기를 바랄 것입니다. 이러한 코드의 중간 변경 과정을 대신 기록해 주는 도구가 바로 깃의 커밋 입니다.

예를 들어 봅시다. 앞에서 우리는 다음과 같이 변경을 하였습니다.

  • 최종본
    안녕하세요 지니입니다.
    이렇게 만나서 반갑습니다.
    

그런데 수정하기 전의 상테로 되돌려야 하는 일이 발생되었다고 가정합시다.
어떻게 돌아가야 할까요? 일일이 텍스트를 다시 수정해 주어야 할까요?

깃의 커밋으로 변경전에 코드의 상태를 기록해 두면 쉽게 과거의 특정 시점으로 되돌아 갈 수 있습니다.

  • → 이전으로 복귀
    안녕하세요.
    반갑습니다.
    


코드의 변화를 기록하는 깃


이 처럼 깃의 커밋은 실수를 방지하고, 인간의 기억력의 한계를 넘어 보다 효율적으로 코드의 이력을 관리할 수 있습니다.
깃의 커밋은 코드의 버전관리하는 도구 입니다.

은 코드의 변경 이력시점을 커밋으로 기록합니다. 사용자가 일일이 기억하지 않아도 됩니다.