소스코드 개발할때 예~전에 10여년전 신입사원때는 회사에서도 소스코드째 zip으로 압축해서 보관했었는데요.
그뒤로 대리쯤 되었을때는 SVN, 그리고 올해 들어서는 Git을 사용하게 되었습니다.
근데 아직 Git에 대해 잘 몰라요.. SVN은 이제 좀 익숙해졌는데 말이죠.
그래서 알아봤습니다.
SVN과 GIT의 차이점
저는 이런 게 있을때 잘 아는 사람이 간략하게 요약해놓은 그림부터 보고 시작합니다.
1. 소스코드 저장단계의 차이
SVN: 내 PC에서 작업한 코드(Working copy)를 개발이 완료되면 중앙서버 (Repository)로 업로드 (Commit) 하는 단순한 구조
GIT: 내 PC에서 작업한 코드(Working copy)가 내 PC에 있는 서버(Local repository)와 달라지면 staging된다 라고 표현합니다.
수정된 부분까지를 라벨링(인덱스 부여)하는 것을 Commit라고 하는데요.
Commit을 하면 Local repository에 저장된다고 봐야 합니다.
원격지 서버에 SVN기준의 Commit을 하려면 Push를 해줘야 하고,
SVN기준으로 Update를 하려면 Pull을 해야 한다!
2. Git에는 원래 코드로 돌리는 동작이 하나 더 있다! 바로 Reset
SVN에서 이전 Revision으로 되돌리는 것을 Revert라고 하고, 또 특정 시점의 Revision으로 넘어가려면 Update to revision을 사용하는데요.
Git의 Revert도 비슷한 개념이지만, 여기에 Reset이 하나 더 있네요
Reset을 하면 돌아가는 시점 이후의 Commit 들은 모두 삭제가 된다고 합니다.
SVN과 GIT의 차이점을 쉽게 정리해보자.
SVN | GIT | |
저장소의 종류 | Working copy -> Repository | Working copy -> Local repository -> Remote repository |
Local에서 수정한 코드 업로드 방식 | Commit 한방에 해결 | Staging: 수정된 것을 Commit 대상으로 선별해서 올릴 수 있게 "무대위에 세운다" Commit: Staging 된 것들을 묶어서 메시지와 라벨링 -> Local Repository에 저장 Push: Commit된 것을 Remote repository에 저장 |
서버의 코드를 Working copy와 동기화 | Update 한방에 해결 | Fetch: 서버의 변경사항과 Working copy 변경사항을 비교 Pull: 서버의 최신 버전을 Working copy와 Merge |
이전 버전으로 되돌리기 | Revert(서버의 최신 버전으로 복원) 또는 Update to revision (특정버전으로 되돌리기) |
Revert (서버의 특정 버전으로 복원) Reset (서버의 특정 버전으로 복원하고 그 사이 Commit 메시지 삭제) |
'전기차 개발자 > 임베디드시스템' 카테고리의 다른 글
소스코드 비교툴 Winmerge 백업파일 생성 안되게 하기 (0) | 2023.12.27 |
---|---|
자동차 ECU에서 *.pem 인증서(Root, Intermediate, Leaf)를 전송하기 위한 DER 인코딩 핵심 내용 요약 (0) | 2023.12.23 |
dev c++ 설치 후 hello world 예제부터 컴파일 에러가 발생할때 해결 책 (0) | 2023.05.15 |
bitnami redmine 서버가 망가졌을 때 백업, 복구 하는 방법 (0) | 2023.03.02 |
#include <헤더>와 #include "헤더"의 차이점 정리 (0) | 2023.03.02 |