• 형상 관리 시스템 (Configuration Management Systems)
• 버전 관리 시스템 (Version Control Systems)
• Source Data + History
• 협업, 작업 추적, 복구 등이 가능
• 내 컴퓨터에서 버전관리 가능 → 내 컴퓨터 하드가 날아가면 전체코드 사라짐
• 버전은 관리되지만, 협업은 여전히 어려움.
• 협업이 가능해짐
• commit 하는 순간 배포되어 다수에게 버그 유발 가능 (서버로 바로 Commit)
• 인터넷이 안되면 작업이 불가능
• 자신만의 version history 를 가질수 없음
• Commit 하더라도 개인저장소 내에 적용됨
• 원하는 순간에 배포(Push) 가능
• 오프라인에서도 작업 가능
• 자신만의 version history 를 가짐
• 1980년대 만들어진 형상관리툴
• Commit 중 오류 발생 시 Rollback 이 되지않는 등의 문제
이후 SVN 으로 대체됨
• https://subversion.apache.org/
• 2000년대 만들어졌고 현재까지 두루 사용 중
• https://git-scm.com/
• SVN 보다 빠른 속도와 많은 기능을 지원
• 요즘 기업들은 대부분 Git 을 사용 중
파일의 Diff 를 시간순으로 관리
버전이 증가할 때마다 수정된 파일의 diff을 가지고 관리를 해왔다.
↪️ 문제점- 원본을 가지고 있는게 아니라 diff을 가지고 있기 때문에 특정시점으로 돌아갔을 때 그 상태의코드를 얻으려면 계산량이 많았다.
- 파일을 저장하는 순간의 스냅샷을 저장
- 파일의 변경사항이 없는 경우, 파일을 새로 저장하지 않음
(성능을 위해)
- a를 수정 했을 때 a'라는 버전을 가지게 된다.
변경 사항이 있을 때 diff을 가지는 것이 아니라 그 버전에서의 스냅샷이라는 그 상태를 가지게 된다.
↪️ 많은 성능 상향
- Working Directory - 폴더에서 파일이 보이는 부분을 말한다.
- Staging Area, .git Directory - git이 관리하는 물리적인 구성요소들
- .git Directory - 버전이 매겨지고 관리하는 단계
📌 Working Directory에 파일을 수정을 하고 나면 git에 add를
해야 Staging Area라는 곳에 파일이 등록이 된다.
Working Directory에 있어야 커밋 가능
- Untracked 상태 - git에 아무 것도 등록되지 않은 상태 관리대상이 아닌 git한테 add를 해서 알려준다. 그러면 Tracked 상태가 된다.
Tracked 상태에서 커밋을 하면 버전이 매겨지게 된다.
또 수정을 하면 modified 상태가 된다.
이 상태에서는 커밋 불가능 staged상태가 되어야 가능