Environment & Database (1) - Virtual Environment & Git / Github

2021. 5. 16. 17:34[AI]/Data Engineering

New Stuff

  • Python Virtual Environment
  • Git & Github

Learned Stuff

[Python Virtual Environment]

anaconda를 쓰는 이유

  • 프로젝트를 진행할 때 package 별 버전에 따라 수행할 수 있는 일이 있고 없는 일이 있습니다.
    • ex) Tensorflow 2 버전 같은 경우 Python 3.5~3.8 버전을 지원한다고 합니다.

 

  • Local 환경에서 프로젝트를 진행할 경우 상황에 맞게 매번 패키지를 Upgrade / Downgrade 해아합니다.

 

  • 이를 가상환경에서 구축하게 된다면 이런 번거러움을 해소할 수 있고 anaconda가 이를 가능케 합니다.
    • anaconda 뿐 아니라 pipenv, virtenv 도 있습니다.

 

anaconda prompt 사용법

 

conda 버전 확인

$ conda --version
  • 버전이 출력된다면 conda가 설치되어 있음을 의미하고 가상환경을 만들 수 있다는 것을 의미합니다.

 

가상환경 확인

$ conda env list
  • 생성한 가상 환경들이 출력되고 위치도 함께 출력됩니다.
  • base 는 기본 환경을 의미합니다.

 

새로운 환경 만들기

$ conda create -n new_project
  • 'new_project' 라는 이름으로 가상 환경을 만들었고 conda env list 로 가상 환경이 잘 만들어졌는지 확인할 수 있습니다.
  • 생성할 때 'y' + ENTER 또는 바로 ENTER 를 누르면 가상 환경이 만들어집니다.

 

가상 환경에 들어가기

$ conda activate new_project
  • 가상 환경이 기본 환경 (base) 에서 'new_project' 이라는 가상 환경으로 변경된 것을 알 수 있습니다.
  • 이 가상 환경에서 다양한 패키지를 다운 받아서 프로젝트를 수행하면 됩니다.
    • pip install / conda install

 

가상 환경에서 나오기

$ conda deactivate
  • 가상 환경에서 다시 기본 환경 (base) 로 돌아온 것을 알 수 있습니다.

 

가상 환경 지우기

$ conda env remove -n new_project
  • 다시 conda env list 를 치고 보면 'new_project' 라는 가상 환경이 사라진 것을 알 수 있습니다.

 

[Git & Github]

Git

  • 버전 관리 시스템 (Version Control System) 의 한 종류입니다.
    • 버전 관리 : 여러 파일을 하나로 묶어서 관리한다는 의미

 

  • 여러 사람들과 팀 프로젝트를 진행할 때 유용합니다.
    • 하나의 파일에서 여려명이 같이 진행하다보면 누가 / 언제 / 어떤 작업을 / 어떻게 수행했는지 알기 어렵습니다.
    • 업무를 수행하면서 자신이 진행한 부분을 기록으로 남긴다면 이후에 변경 사항이 생길 때 다시 되돌아 올 수 있습니다.
    • Git이 이것을 가능케 합니다.

 

Github

  • 원격 코드 저장소
  • 하나의 프로젝트에서 보통 하나의 Repository를 사용합니다.

 

Git Commands

버전 확인

$ git --version
  • 버전이 출력된다면 git 이 설치되어 있다는 것을 의미합니다.

 

Github Repository에서 Local로 가져오기

  • 아래와 같이 Github에 있는 Repository를 Local 환경으로 불러오겠습니다.
    • 불러올 Repository의 주소를 복사합니다.

 

  • 작업할 폴더에 들어간 후 아래와 같이 코드를 입력하면 Local 환경으로 불러올 수 있습니다.
$ git clone https://github.com/taeyoonnoh/Battery.git

 

버전 관리 시작하기

$ git init
  • 버전 관리를 시작한다는 것을 선언합니다. 해당 폴더에 .git 이라는 폴더가 생성되고 이 폴더에 버전 관리를 한다는 의미입니다.

 

Git 지우기

  • 해당 폴더에서 .git 폴더를 삭제하겠다는 의미입니다.
$ rm -rf .git

 

Git add

  • 어떤 파일을 기록에 남길 것인지 지정합니다.
    • 예시로 'Battery' 폴더 안에 hello_world.txt 파일을 만든 후 저장하고 git add 를 수행하겠습니다.
$ git add hello_world.txt
  • 만약 작업한 파일들을 모두 기록에 남기고 싶다면 $ git add all 를 치시면 됩니다.

 

Git status

  • 현재 어떤 파일들을 추적하고 있는지 확인할 수 있습니다.
$ git status

 

Ex) hello_world.txt add 하기 전의 상태

Ex) hello_world.txt add 한 뒤의 상태

 

Git commit

  • git add 한 것을 기록에 남기는 것을 의미합니다.

 

Ex) first commit 이라는 이름으로 기록에 남기기

$ git commit -m "first commit"

 

Git push

  • 작업한 파일들을 Github Repository에 보내는 것을 의미합니다.
$ git push origin main
  • origin : Github Repository 주소의 이름
  • main : main 브랜치에서 보내겠다는 의미
  • 해당 개념은 아래에서 다시 다뤄보겠습니다.

 

  • Github Repository 에 hello_world.txt 파일이 추가된 것을 확인할 수 있습니다.

 

그 외 알아두면 좋은 Git Commands

Git log

  • 프로젝트를 진행하면서 git commit 한 과거 기록들을 볼 수 있습니다.
$ git log

 

Git remote

  • Github Repository 의 주소를 추가 및 삭제할 수 있습니다.
    • 다른 주소를 추가해 줌으로써 다른 Github Repository 에도 저장할 수 있습니다.

 

Ex) 전체 주소 보기

$ git remote -v
  • origin 이라는 이름으로 처음 git clone 했을 때의 주소가 저장됩니다.

 

Ex) address 라는 이름으로 주소 추가하기

$ git remote add address "주소가 들어갑니다"
  • 이 상태에서 address 라는 이름의 주소로 Github Repository에 저장하고 싶다면 git push address main 을 치시면 됩니다.

 

Ex) address 라는 이름의 주소 삭제하기

$ git remote remove address

 

Git pull

  • Github Repository 에서 저장된 파일들을 Local 환경에서 최신화하는 것을 의미합니다.

 

Ex) origin 이라는 이름의 주소의 파일들을 main branch 에 최신화하기

$ git pull origin main

 

Git branch

  • main branch 뿐만 아니라 다양한 branch에서 작업할 수 있습니다.
    • 다른 branch 에서 작업한 것을 바탕으로 다시 main branch 에 merge (합치기) 할 수도 있습니다.

 

Ex) test 라는 branch 추가하기

$ git branch test

 

Ex) 만들어진 branch 확인하기

$ git branch
  • main branch 와 test branch 가 있다는 것을 알 수 있습니다.
    • branch 왼쪽에 * 는 현재 branch의 위치를 의미합니다.

 

Ex) test branch 로 들어가기

$ git checkout test
  • 다시 git branch 를 입력하면 아래와 같이 test branch 로 옮겨진 것을 알 수 있습니다.

 

Ex) test branch를 main branch 에 merge 시키기

  • git checkout 으로 main branch에 다시 돌아온 후 아래와 같이 입력하시면 됩니다.
$ git merge test
728x90