[DE] Git and Conda

Data Engineering

  • 데이터 직군(DS, DA, DE, ML)에서 일반적으로 사용하는 데이터 엔지니어링
  1. 환경, 관계형 DB(RDB)
  2. 데이터 수집, NoSQL
  3. API개발, 대시보드

Terminal & CLI

  • Termainal : 글자 기반 명령 전달 APP
  • CLI(Command Line Interface) : 글자 기반 명령과 결과가 진행되는 것
    • why? 컴퓨터와 소통하기 위해

Top 5 명령어

  • $ pwd : 현재 경로를 나타내는 명령어
  • $ mkdir {폴더명} : 폴더(디렉토리)를 생성하는 명령어
  • $ cd {폴더명} : 폴더에 들어가는 명령어
  • $ ls : 현재 디렉토리 안에 파일 및 폴더 목록을 출력
    • 옵션 $ ls -l : 상세정보출력, $ ls -a : 숨긴파일까지 표시 -> $ ls -al : 숨긴파일까지 상세정보 포함해서 출력
  • $ cat {파일명} : 파일을 터미널에 출력합니다.
  • Reference

Python 가상환경

가상환경의 필요성

  • 파이썬 패키지 간의 충돌을 막기 위함이다.
  • 개발 당시에 작동이 되었다면 배포 환경에서도 개발 환경과 비슷하게 만들어 최대한 잘 작동하게 도와주는 역할이다.
  • 문제가 발생할 수 있는 부분
    • 패키지들이 저장되는 방법(HOW)
    • 패키지들이 저장되는 장소(WHERE)

가상환경 설정(Conda)

  • 아나콘다 : 데이터 과학에서 사용되는 툴들을 모아놓은 툴킷
  • 버전확인
1
2
$ conda --version
conda 4.10.3
  • 가상환경 목록
1
2
3
4
5
$ conda env list
# conda environments:
#
base                  *  /Users/6mini/opt/anaconda3
hello_conda              /Users/6mini/opt/anaconda3/envs/hello_conda
  • conda의 가상환경은 중첩되서 실행 될 수 있기 때문에 새로운 가상환경을 실행 할때는 conda deactivate를 이용해서 중지해야 한다.

  • 새로운 환경 생성 및 사용

1
2
$ conda create --name 'practice' python=3.8
$ conda activate 'practice'
  • 가상환경 삭제
1
$ conda env remove --name 'practice'

Git

명령어

  • git add : 어떤 파일들을 기록할 지 지정해주는 명령어
  • git status : 깃의 현재 상태(어떤 파일 추적, 파일의 상태, 어떤 브랜치 작업)
  • git remote -v : 어떤 원격 레포 주소와 연결되어있는지 확인
    • git remote add : 원격 주소 추가
  • git log
  • git add : 저장할 요소 선택
  • git branch : branch 확인
  • git checkout : Branch로 이동, clone 된 repo에 있을 시 바로 이동됨
  • git reset HEAD^ : 최근 commit 취소

Issue

오늘 정말… 밤낮 뒤바껴서 2시간 밖에 못자고 그나마 평소에 많이 다뤄본 터라 일찍 끝날거라 생각했는데,
main PR에 하루종일 목숨 걸었다.
결국 branch 끼리의 뿌리가 맞지 않아서 merge되지 않는 증상인데, 어떻게든 해보려한 것 같다😭
그래도! 5시간 동안 서칭하면서 Github 협업에 관해 빠삭하게 익히게 된 것 같아서 뿌듯하다.

Branch 끼리 PR되지 않았던 증상에 대한 나의 이해를 적어보자면,
원래 main에 pull request를 하는 이유는 새로운 버전을 수정하고 pull을 요청하면 main branch가 update되는 협업을 위한 도구인데,
현재 사용하는 레포는 main branch가 오늘 아침에 새로 commit되어서 서로 다른 commit뿌리가 되어서 안된다고 생각한다.
예를 들어 원래 협업을 진행하기 위해선

1
2
3
1 main
ㄴ 1.1 branch1
ㄴ 1.2 branch2

로 된다면 1.1의 수정 내용을 pr할 수 있지만,
현재 다루는 레포는

1
2
3
4
1.1 branch1
1.2 branch2

2 main (오늘 아침에 새롭게 commit됨)

이렇게 남아서 main <- main 끼리 가능
branch1 <- 2 / branch2 <- 1 가능이라고 생각한다.
여기서 main에 pr을 하기 위해선 branch를 만들때 새로 만들어진 main commit을 뿌리로 두고 생성되어야 가능할 것이다.

Reference

0%