git 형상 관리(버전 관리) - 1

json-kim·2021년 11월 1일
0

⛓ 형상 관리 (버전 관리)

  • 개발은 정리의 역사
  • 히스토리를 관리하는 것
  • 소프트웨어 구성 관리
  • 소프트웨어가 변화해 온 과정을 일기처럼 쓰는 것

버전이 필요한 상황

  1. 과거에 쓰던 방식이 필요할 때
  2. 이전에 쓰던 방식을 바꾸고자할 때
  3. 새로운 방식을 만들고 허락을 받고자할 때
  • 버전은 문서 혹은 기준이 '변경되어야 하는 필요'에 의해 탄생
  • 팀 혹은 구성원이 모두 사용하는 질서를 변경할 때 사용하기 위해서 버전이라는 새로운 정리정돈 방식 사용
  • 버전은 최신버전보다 과거버전으로 돌아가게 하는것이 핵심
    • 최신 버전이 아닌 버전을 '레거시'라고 부른다.
  • 버전은 최종 관리자를 통해서 최신으로 유지
    • 수정한 사람은 최종관리자의 허락을 통해 최신버전으로 등록한다.

버전 표기

버전 표기에 대한 정의는 없다.

<일반적인 예시>

Alpha ⇒ 내부 테스트

Beta ⇒ 일부 고객에게 테스트

Alpha, Beta ⇒ 0.1

출시는 ⇒ 1.0

사소한 수정이 있을 시 ⇒ 1.0.1 혹은 1.01

버그/기능추가 ⇒ 1.1

완전 리뉴얼 ⇒ 2.0


git : 형상관리 언어(툴)

형상관리가 이루어지는 장소

  1. 로컬 computer (local / 127.0.0.1)
  2. 저장소 (온라인)
    1. github
    2. gitlab
    3. codecommit
    4. sourcecommit

원격 저장소

네트워크 상에서 존재하는 저장소

repository와 같은 개념

github는 원격 저장소를 관리하는 플랫폼

처음 소스코드에서 히스토리(변경내역)이 쌓아나가는 방식으로 깃은 소스코드를 저장한다.

  • 소스코드 원본을 바꾸는 Rebase 기능도 있음

로컬

사용자의 개발하는 pc

local repository와 같은 개념

레포지트리 (repository)

git에서 저장하는 저장소의 기본 단위

형상관리는 레포지트리 기반으로 관리가 됨

git 시작하기

1. github 회원 가입 (https://github.com/)

2. git 설치 (https://git-scm.com/downloads)

위의 사이트에서 os에 맞게 다운, 설치

맥은 git이 기본적으로 설치되어 있음

git이 설치되었다면, 터미널에서 'git' 명령어 실행시 다음과 같이 어떤 결과를 출력합니다.

3. VSCode(개발 툴) 설치 (https://code.visualstudio.com/download)

위의 사이트에서 os에 맞게 다운, 설치

대부분의 ide에서는 형상관리를 쉽게 할 수 있도록 기능을 지원하고 있습니다.

💡 개발 툴

window : visual studio

mac : xcode

통합 :

  1. jet brain
  2. vscode

4. git user.name, user.email 등록하기(https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EC%B5%9C%EC%B4%88-%EC%84%A4%EC%A0%95)

git을 사용하기 전에 user.name과 user.email을 설정해주어야 합니다.


실습 1. - 터미널을 이용하여 git clone 명령어 사용하기

git 명령어

git {명령어} {옵션} {웹주소}

git clone

저장소의 파일을 복사해옵니다.

프로젝트 시작에 사용합니다.

이전 히스토리까지 가져온다.

1. github에 원격저장소(remote repository) 만들기

  • Repository의 이름,

  • public(공개)/private(비밀) 여부,

  • README.md 파일 추가여부,

  • .gitignore(git작업에서 제외할 파일 관리) 추가여부,

  • 라이센스 추가여부

를 상황에 맞게 체크해주고 repository를 만들어 줍니다.

2. 복제하고 싶은 폴더(위치)를 만든 다음, 터미널에서 해당 경로로 이동하기

맥에서는 'ls'(현재 디렉토리에 존재하는 파일 목록), 'cd 디렉토리'(디렉토리 이동) 명령어를 사용해서 해당 경로로 이동할 수 있습니다.

3. git clone 명령어를 찾아보고 사용방법대로 원격저장소를 복제하기

생성된 repository의 주소를 복사한 다음, 터미널의 복사할 경로에서 'git clone 주소' 명령어를 실행해 줍니다.

해당 경로를 확인해보면 remote repository에 있던 소스코드가 그대로 복제된 것을 확인할 수 있습니다.


실습 2. - 코드를 수정하고 add, commit, push 해보기

git add

수정한 파일을 올릴 준비(스테이징 상태로 만들어준다.)

git에게 수정했다고 알려준다.

git commit

로컬 레포지트리에서 수정된 파일을 한데 묶어 놓는다.

운송장 번호 붙여서 포장한다고 생각

1. 코드 수정하기

vscode를 실행시켜 이전 실습에서 clone(복제)한 폴더를 열어줍니다.

수정을 하고 나면 수정한 상태(Modify)라는 의미로 'M' 글자가 나타납니다.

2. 수정한 파일을 담는것 ⇒ '스테이징'

왼쪽에 '소스제어' 탭으로 이동하면 변경한 파일 목록과 변경 내용을 확인할 수 있습니다.

'변경 사항'에 있는 파일을 우클릭하여 '변경 내용 스테이징' 하거나, '+' 버튼을 눌러 스테이징 해줍니다.

이 작업은 'git add 파일명' 명령어와 같습니다.

스테이징이 완료되면 '스테이징된 변경 사항'으로 해당 파일이 이동합니다.

스테이징 된 상태는 소스코드의 변경사항을 하나로 묶기 위해서 상자에 담는다고 생각하시면 됩니다.

3. 포장하는 것 ⇒ '커밋'

이제 스테이징 된 변경사항을 '커밋'해 봅니다. 커밋 메시지(운송장)를 작성하고 위의 ✔️ 커밋(포장) 버튼을 눌러주면 됩니다.

💡 vscode 확장프로그램 'git history'

vscode의 확장 프로그램 중 하나인 'git history'를 설치하면 커밋 히스토리를 확인할 수 있습니다.

'커밋'은 변경사항의 묶음으로 하나의 버전이라고 생각하시면 됩니다.

Git hitsory에서 초록색 표시는 현재 로컬 repository에서의 현재 버전이고, 빨간색 표시는 원격 repository에서의 현재 버전을 나타냅니다.

git에서는 이러한 변경사항의 묶음(커밋)의 히스토리를 관리해줍니다.

4. 원격저장소에 올리는 것 ⇒ '푸시'

이제 로컬에서의 커밋 히스토리를 원격 저장소에 올리는 작업인 '푸시(push)' 를 수행합니다.

위쪽의 '점 세개 버튼' 을 클릭하고 푸시를 선택하면 원격 저장소에 변경사항을 반영하고 원격저장소의 버전이 최신 버전으로 맞춰집니다.

github로 들어가 레포지토리를 확인해보면 소스코드 변경사항이 반영된 걸 확인할 수 있습니다.

vscode의 'git history' 에서도 원격 저장소의 버전이 최신 버전으로 맞춰진 걸 확인할 수 있습니다.


실습 3. - 로컬 레포지트리 remote 하기

git remote

로컬 레포지트리를 우선 만들고 원격저장소에 연결할 때 사용

1. 깃허브에 Repository 만들기

실습 1. 에서와 같이 깃허브에서 새로운 repository를 생성해줍니다.

2. vscode 폴더열기 해당폴더 접근

vscode를 실행시켜 소스코드가 작성되어 있는 프로젝트 폴더를 열어줍니다.

여기서는 'remoteTest' 프로젝트를 열었습니다.

3. 레포지토리 초기화

왼쪽의 '소스 제어' 탭으로 이동하면 '레포지토리 초기화' 버튼을 눌러줍니다.

이 작업은 'git init' 명령어와 동일하게 동작합니다.

4. 스테이징, 커밋

다음으로 변경사항을 '스테이징' 해주고, 'first commit'이라는 메시지와 함께 '커밋' 해줍니다.

5. 원격 추가

이제 로컬 레포지토리를 원격 레포지토리에 연결 시켜주어야 합니다.

위쪽의 '점 세개 버튼' 을 클릭한 뒤, 원격 >> 원격 추가를 선택합니다.

remote 레포지토리의 url을 입력해주고,

원격(remote)의 이름을 지정해줍니다. 여기서는 'origin' 이라고 정했습니다.

이 작업은 'git remote 주소' 명령어와 동일하게 동작합니다.

6. push

현재 remote는 연결되었지만 커밋 히스토리가 원격저장소에 반영되지는 않았습니다. git history를 보면 초록색 표시만 나타나는 것을 확인할 수 있습니다.

'점 세개 버튼' 을 눌러 푸시를 선택합니다. 푸시를 실행시키면, 리모트에는 아무런 히스토리가 존재하지 않아 다음과 같이 '분기를 게시하겠습니까?' 라는 메시지가 뜨는데 '확인' 해주시면 됩니다.

github로 가면 커밋이 푸시된 것을 확인할 수 있습니다.

profile
Flutter 개발을 하고 있습니다.

0개의 댓글