PlayData 백엔드 부트캠프 정리

PlayData 백엔드 부트캠프 Start 1일차

효건 2024. 8. 7. 21:27

Git 1일차

 

● Git 이란 분산 버전 관리 시스템 (DVCS)중 하나로 속도, 데이터 무결성, 분산시스템지원을 포함한 비선형 작업흐름을 지원하는 프로그램입니다.

하는 일은 다음과 같습니다.

 

1. 버전관리 : 쉽게 이야기해서 게임에서 세이브 포인트를 만드러주는 거라고 생각하면 편합니다. commit이라는 단위로 특정 시점의 세이브 포인트를 만드는 것을 말합니다.  

2. 협업 도구 : branch 기능은 개발자가 독립적으로 작업하는 공간을 만들어 주어 다른 부분에 영향을 주지 않도록 합니다.이후에 변경사항들은 병합을 통해 메인코드에 반영하여 쌓아갈 수 있습니다.

3. 코드의 안정성 유지 :  위에서 말한 commit이라는 단위를 통해 언제든 돌아갈수있습니다.(사용자가 지우지만 않는다면...)

4. 코드 리뷰 및 추적 : 변경사항을 추적관리 할수있습니다.

5. 배포 관리 : 여러버젼 관리가 가능하여 CI및 CD파이프라인과 함께 사용되어 효율적입니다.

                      * CI : countinous integration CD : countinuous Deployment 

 

● Git과 Github

Git과 Github는 로컬에서 주로 사용하는가 웹에서 주로 사용하는가에 있습니다. 그리고 Github는 결국 Git 기반의 프로그램입니다.

 git은 2가지 방법으로사용할 수 있습니다.          

1) CLI 명령어 기반 버전관리 ( 터미널 작업 ) → 리눅스에서도 쓰이는 명령어이므로 중요하게 알아야함.

2) GUI 그래픽 기반 버젼관리 툴  → 생산성이나 효율적 측면에서 월등함. 

●Git(리눅스) 에서  자주 쓰이는 명령어 

pwd : 현재 위치한 디렉토리 경로 출력

ls : 현재 위치한 디렉토리 안에 있는 폴더와 파일 목록 보기

ls -a : -a 옵션을 주면 숨김폴더 및 파일의 정보가 추가로 출력됩니다.

cd : 폴더 이동하기

cd .. : cd 뒤에 .. 을 붙이면 상위 폴더로 이동할 수 있습니다.

clear: 현재 터미널 출력 내용 깨끗하게 지우기

start . : 현재 위치한 폴더를 엽니다. - for Windows

mkdir : 폴더 생성하기

touch : 파일 생성하기

rm 파일명 : 파일 삭제하기

rm -rf 폴더명: 폴더 삭제하기 (주의!! - 폴더 안에 모든 내용까지 함께 삭제됨)

 

● Git Repository

Git에 의해 관리되는 프로젝트 디렉터리

  1. Working Directory: 현재 작업 중인 프로젝트의 파일들이 위치하는 디렉토리입니다.
  2. Staging Area (Index): commit하기 위해 선택한 파일들의 정보를 저장하는 영역입니다. 이 영역을 통해 원하는 파일들만을 커밋에 포함시킬 수 있습니다.(잠깐저장하는곳)
  3. .git Directory (Repository): Git의 메타데이터와 객체 데이터베이스를 저장하는 디렉토리입니다.이 디렉토리를 복사하면 프로젝트의 모든 버전 정보와 히스토리를 복사하는 것과 같습니다.

 

● Git Repository 사용법

 

  1. $ git init 명령어를 사용하여 레포지토리를 생성 (버전관리 시작) → .git 파일이 생성된것을 확인해야함.
  2. $ git add 명령어를 사용하여 변경사항을 스테이징 영역에 추가
  3. $ git commit 명령어를 사용하여 변경사항을 레포지토리에 저장

● Git Branch

브랜치(Branch)는 'master' 또는 'main'이라는 이름의 기본 브랜치 → master & slave란 표현이 옳지 않다는 의견이 있으므로 main으로 업데이트 되고 있다고 합니다. 

 

용도 : 개발자들은 새로운 기능이나 버그 수정 등의 작업을 별도의 브랜치에서 수행한 뒤, 그 변경 사항이 안정적이고 배포 가능하다고 판단되면 'master' 또는 'main' 브랜치에 병합(merge)합니다.

  switch 명령어는 브랜치를 전환하는 기능만을 담당하는 것을 인지해야합니다.

 

1. 병렬 개발

각 브랜치는 독립적인 작업 공간이므로, 여러 사람이 동시에 다른 작업을 진행할 수 있습니다.

2. 버전 관리

각 브랜치는 특정 버전의 코드를 가리킵니다. 이를 통해 과거의 어떤 시점으로도 쉽게 돌아갈 수 있습니다.

3. 안정성

'main' 브랜치는 항상 안정적인 버전의 코드를 유지하면서, 다른 브랜치에서는 새로운 기능이나 실험적인 변경을 시도할 수 있습니다.

4. 병합과 충돌 관리

브랜치 간의 변경 사항을 병합하는 과정에서 발생할 수 있는 충돌을 더 쉽게 관리할 수 있습니다.

 

 

● 실습내용 추가 (1)

cd 명령어를 이용하여 desktop에 들어갔습니다. 이후 mkdir을 이용하여 shopping이라는 파일을 생성하였고 역시 cd명령어를 통해 파일에 들어갔습니다. 이후 git init 이라는명령어로 git에 저장을 시작하였고 touch명령어를 이용하여 txt문서를 만들었고 git add . 와 git commit을 이용하여 커밋(세이브포인트)을 만들었습니다. 마지막으로 잘되었는지 git status명령어를 이용하여 확인까지 했습니다^^

 

start 명령어를 이용하여 txt파일을 열었고 수정했습니다. 이후 git add와 git commit , git stauts를 이용하여 커밋을 만들고 확인하까지 완료했습니다.
start 명령어를 이용하여 txt파일을 열었고 수정했습니다. 이후 git add와 git commit , git stauts를 이용하여 커밋을 만들고 확인하까지 완료했습니다. 중간에 명령어가 헷갈려서 git ls를 사용했는데 이는 파일내에 있는 (디렉토리 내에 있는) 파일을 확인하는 명령어 입니다. 비슷한 것으로는 git ls -a가 있는데 이명령어는 숨김파일까지 확인하는명령어 입니다.
git log 명령어를 이용하여 지금까지 실습한 커밋의 로그들을 확인한 내용입니다.

 

● 실습내용 추가 (2)

 

처음 main branch까지는 같으나 harry branch를 만들어서 하는 동안 snape branch에 영향을 미치지 않는 것을 확인할수있었다. 같은 파일명이라도 영향을 미치지 않는다.
lily branch는 snape branch 기반에서 이루어지므로 snape branch에 영향을 미치지는 않지만 snaoe에서 시작하므로 snape branch에서 저장된 곳에서 시작할수있다 또한 git log --oneline --all --graph를 통해서 각 branch별로 어떻게 개발되고 있는지 확인할수있다..

ps. 여담으로 Github의 고양이 모양은 문어가 고양이 탈을 쓰고 있는 거라고 합니다.