[TIL 01: VCS & GIT]

Juhee Fred Lee·2023년 10월 7일
0

TIL

목록 보기
1/24

VCS

- 버전 관리 시스템 (Version Control System): 어떤 프로그램이 몇번 수정되었는지 관리하는 시스템.

  • 중앙 집중식 버전 관리 시스템: 서버에서만 몇번 수정되었는지 관리하는 시스템 LIKE 구글 스프레드 시트
    • 장점: 다른 사람들이 동시에 동일한 자료를 볼 수 있다. 이전 기록들에 대한 열람이 편하다.
    • 단점: 동시 접속 작업이 어렵다. 서버에 접속해야한 작업이 된다. 복구가 어렵다.
  • 분산 버전 관리 시스템
    • 장점: 서버에 접속 하지 않아도 작업이 가능하다. 복구가 비교적 용이하다. 동시에 같은 작업이 가능하다.
    • 단점: 관리가 어렵다.

GIT

기본적인 명령어 정리

명령어 기능 예시
git init 로컬 저장소에 git 저장소를 초기화
git add 변경된 파일을 스테이지 상태로 변경 git add doNotUse.jsp
git commit -m "메시지" 파일의 변경내용을 확정
git remote add <원격저장소 이름> <저장소 주소> 원격 저장소 추가 git remote add upstream "wow"
git clone <저장소 주소> 원격 저장소의 파일을 복제 gir clone "https://www.doNotUserJSP.com"
git push <원격저장소 이름> <브랜치명> 원격 저장소에 로컬 저장소의 변경사항을 업로드
git pull <원격저장소 이름> <브랜치명> 원격 저장소 브랜치의 최신 내용을 로컬 저장소로 불러옴
pull = fetch + merge / push를 하기 전 늘 pull을 먼저하는 습관을 가지자.
git diff/ git difftool 파일의 변경사항 확인 (difftool => GUI)
git status 현재 작업 중인 저장소의 상태 확인
git show 특정 커밋 내용 확인
git stash 최근 커밋과의 차이점을 전부 임시 저장 => conflict 발생 시 사용
git branch <브랜치명> 브랜치 생성
git branch -d(D) <브랜치명> 브랜치 삭제 (-d: merge 된 브랜치/ -D merge 안된 브랜치)
git checkout <브랜치명> 해당 브랜치로 이동

깃 브랜치 병합

명칭 명령어 특징 및 사용법 장점 단점
3-way merge git merge/ git merge --no-ff
  • 가장 일반적인 병합 방식
  • 병합할 두 브랜치와 두 브랜치의 공통 조상 커밋을 이용하여 병합 (브랜치 1 + 브랜치 2 + 둘의 공통 조상 커밋)
fast-forward merge git merge --ff (only) <브랜치명>
  • 새로운 브랜치를 만들고 해당 브랜치에만 commit을 한 뒤 메인 브랜치에 그대로 적용하는 방법
  • only 옵션의 경우 여러 브랜치가 있을 때 하나만 할 경우
  • main branch에 commit 내역이 없을 경우에 한하여 사용 가능
  • main branch에 commit이 분기된 branch에 Head Commit으로 이동한다는 개념
  • commit 히스토리가 깔끔하게 정리됨
  • 강의 상에서 커밋 내역이 사라질 수 있다고 하였으나 아직 이해를 못함. 추후에 추가 학습 후 이유를 작성하도록 하겠음
squash and merge git merge -squash <브랜치명>
  • 새 브랜치의 커밋 기록을 main 브랜치로 적용 => 새 브랜치는 삭제
  • 병합 대상 브랜치의 모든 변경 내용을 하나의 커밋(메인 브랜치)으로 압축해서 병합
rebase and merge
  • git checkout <병합될 브랜치명>
  • git rebase main
  • git checkout main
  • git merge
사용이유: 브랜치가 많아지지 않게 관리 할 수 있어서 UNLIKE 3-WAY MERGE main branch에 commit 내역이 있어도 병합 가능 conflict 가능성 존재 => 앤간하면 다른 merge들도 conflict가 뜰 수 있지 않을까?

GIT 복구 명령어 모음

명령어 기능
git retore <파일명> 커밋하지 않은 사항들을 마지막 상태로 돌림
git revert <커밋아이디> 커밋하지 않은 사항들을 마지막 상태로 돌리고 커밋함 (기록이 남음)
git reset -hard/-soft/-mixed <커밋아이디> 작업한 내용을 특정 시점으로 복구 (협업시에는 쓰지 말 것. 코드 유실 위험이 있음.)
profile
공릉동에 살며 백엔드를 공부하는 감자입니다.

0개의 댓글