수업 내용 정리
(3주차 16일) Git, Sourcetree
헨헨7
2024. 5. 28. 17:19
Git
> Git 설치
- git --version -> 설치된 깃 버전 확인
- brew upgrade git -> 설치된 깃 업데이트
- Sourcetree 설치
> Git 저장소 추가
- 터미널
- cd /Users/.../Develop/gittest
- git init
- Sourcetree
- 로컬 저장소 생성
- Clone: 원격 저장소의 내용을 로컬 저장소에 복제하는 것
- Index(Stage Area)
- Commit 하기 위해 추가하는 파일들이 저장되는 공간을 Index라고 한다.
- 사용자 입장에서는 Commit 대기 상태란 뜻으로 Staging Area라고 부르기도 한다.
> 커밋(Commit)
- 로컬 저장소에 파일이나 폴더의 변경 사항을 기록하는 작업
- Git은 Commit을 시간 순으로 저장하며 이전 Commit 상태부터 현재 Commit 상태까지 만들어 보관한다.
- 스테이지에 올라가지 않은 파일을 스테이지에 올린다.
- 다수의 파일을 하나의 커밋으로 저장할 수 있다.
> 브랜치(Branch)
- Branch: 저장소 내에서 다른 작업에 영향을 받지 않는 독립된 저장소 단위
- 새 브랜치를 생성하는 경우, 현재 커밋 상태를 기준으로 분기된다.(Default)
* 명시된 커밋을 선택하여 원하는 커밋 상태로부터 분기할 수 있다. - 브랜치가 분기되어 커밋되는 경우, 각 브랜치에서는 분기 이후 변경 사항을 확인할 수 없다.
- 새 브랜치를 생성하는 경우, 현재 커밋 상태를 기준으로 분기된다.(Default)
> 체크아웃(Checkout)
- 현재 Branch를 다른 Branch로 전환하는 것
- 새 브랜치를 선택해 현재 브랜치를 다른 브랜치로 전환할 수 있다(Checkout).
- 분기된 이후 작업한 내용을 커밋하지 않고 체크아웃을 시도하는 경우, 커밋이 필요함
* 커밋 없이도 이동 가능한 경우: 기존 파일이 수정되지 않고, 파일이 새로 생성되는 경우(각 브랜치에서 초기 파일인 경우)
주의) 추후 문제 발생 가능하므로, 커밋하고 브랜치 옮기기
> 병합(Merge)
- 특정 브랜치의 작업 내용을 다른 브랜치에 병합하는 것
- 하위 요소 대화식 재배치(rebase): 부모 커밋 로그에서 자식 커밋 로그들을 합칠 수 있다.
> 보관(Stash)
- 현재 작업 중인 변경 사항을 모두 보관하고 대기 중인 파일 상태를 청소함: 임시 공간에 넣고, 체크아웃하기 용이한 상태로 전환함
> 제거(Discard)
> 초기화
- 커밋 초기화: 선택된 커밋 로그로 브랜치 포인터를 옮김(적용한 커밋은 초기화된다.)
- Soft: 초기화하되 그동안 작업했던 내용은 유지, 스테이지에 작업파일이 올라간다.
- Mixed: 작업 상태는 그대로 두되, 인덱스는 리셋 -> 스테이지에 작업파일이 올라가지 않는다.
- Hard: 작업 상태 내 모든 변경 사항을 버림(삭제)
> 커밋 되돌리기(Revert)
- Revert한 커밋을 다시 Revert하는 경우, 수정 작업을 완료한 상태(최초 Revert하기 전 상태)로 돌아온다.