1. 터미널
터미널은 컴퓨터에 글자 기반 명령을 전달하는 어플리케이션. 이처럼 컴퓨터와 글자 기반으로 명령하는 것을 CLI(Command Line Interface)라고 한다. 그와 반대로 우리가 평소에 컴퓨터를 쓸 때처럼 그래픽 기반으로 명령하는 것은 GUI(Graphical User Interface) 라고 한다.
a. 기본 명령어
- pwd : 현재 경로 반환
- ls : 현재 디렉터리 내 파일명들 반환
- mkdir <디렉터리명> : 디렉터리 생성
- cd <경로> : 해당 디렉터리로 이동
* shell과 terminal의 차이
shell은 명령어를 실행시키는 역할을 하고, 터미널은 우리가 명령어를 입력하고 결과를 확인하는 창.
- shell : anaconda prompt, git bash
- terminal : Windows 명령 프롬프트, PowerShell
2. 파이썬 가상환경
많은 패키지를 설치하면 충돌이 일어날 수 있기 때문에 해당 프로젝트에 필요한 패키지와 버전만을 설치해 가상환경을 구축한다. 이렇게 구축한 환경은 다른 컴퓨터로 프로젝트를 복사하거나 웹에서 구현할 때도 유효해 편리하게 이용할 수 있다.
# 새로운 가상환경 생성 (Python 버전 3.8)
conda create -n <가상환경 이름> python=3.8
# 가상환경 삭제
conda env remove --name <가상환경 이름>
# 가상환경 활성화
conda activate <가상환경 이름>
# 현재 활성화된 가상환경 비활성화
conda deactivate
# 모든 가상환경 목록 출력
conda env list
3. Git & Github
- Git : 버전 관리 시스템
- Github : 원격 코드 저장소
a. Git과 Github
* 장점 3가지
①. 코드의 변경사항을 확인하기 좋다
② 코드를 되돌리기가 좋다
③ 협력하기 좋다
깃은 '버전'을 관리하는 도구. 개발자들이 말하는 버전이란, 유의미한 변화가 결과물로 나온 것. 버그를 수정하거나 없던 기능을 새로 만든 것, 있던 기능을 삭제한 것도 모두 버전. 프로그램 개발은 여러 버전들을 쌓아나가는 과정이다.
Github는 온라인에서 깃으로 쌓은 프로젝트를 관리해주는 서비스. tensorflow 라이브러리도 이처럼 만들어진 프로젝트이기 때문에 Github에서 그 프로젝트 페이지를 볼 수가 있다. tensorflow 계정에 들어가보면 13만개의 커밋이 있다. 13만번 버전이 업데이트 되었다는 뜻. 최근에는 개발자들의 SNS 역할도 한다. 프로젝트를 올리는 등 포트폴리오로 활용할 수 있다.
b. Git이 관리하는 3개의 저장소
① 작업 디렉터리 (= working directory)
버전 관리의 대상이 위치하는 공간 (.git이 있는 디렉터리)
② 스테이지 (= index)
작업 디렉터리에서의 작업을 마친, 다음 버전이 될 후보가 올라가는 공간
③ 저장소 (= repository)
버전이 만들어지고 관리되는 공간. 이 저장소에는 '로컬 저장소'와 '원격 저장소'(깃허브)가 있다. 스테이지에서 저장소로 파일이 올라오는 것을 '커밋'이라 부른다.
프로젝트의 새로운 버전이 되는 파일들은 이 세 공간을 차례로 거치게 된다. 먼저 작업 디렉토리에서 새 파일이나 수정사항을 만들고 유의미한 것들을 스테이지에 추가하고 그 중 선별하여 저장소에 커밋해 버전으로 만드는 것이다.
c. 다른 사람의 레포지토리를 수정할 경우 작업순서
① 해당 레포지토리를 Fork해 내 계정으로 가져온다 (Github)
- 'Copy the master branch only'에 체크를 풀어야 곁가지 브랜치들도 함께 가져올 수 있다.
② clone을 통해 내 로컬 저장소(개인 컴퓨터)로 가져온다 (git bash)
- 주소는 Fork해온 내 레포지토리에서 '<> Code' 버튼을 눌러 SSH 주소 복사
- 컴퓨터와 Github를 연결해야 SSH 주소를 쓸 수 있다
git clone <주소>
③ VS Code 등의 편집기로 파일을 열어 수정한다 (git bash)
# 현재 디렉터리 내 파일들을 VS Code로 열기
# VS code와 git bash가 연결되어 있어야 가능하다
code .
④ 현재 디렉터리 내 수정된 파일을 스테이지로 보낸다 (git bash)
git add .
⑤ commit을 통해 로컬 레포지토리로 보낸다 (git bash)
git commit -m '짧은 커밋메시지'
⑥ Github 원격 저장소로 push한다 (git bash)
git push origin <브랜치 이름>
⑦ Pull requests 탭에서 New pull request 버튼을 눌러 풀리퀘를 날린다 (Github)
d. 특정 branch를 수정할 경우 작업 순서
① c의 과정처럼 clone하면 main 브랜치만 가져올 수 있다. 해당 레포지토리의 원하는 branch를 clone해 내 로컬 저장소로 가져와야한다 (git bash)
git clone -b <브랜치명> <SSH 주소>
② c의 과정과 같이 수정, add, commit을 거친다. (VS code, git bash)
③ push할 때 수정을 원하는 브랜치를 입력해야한다 (git bash)
git push origin <브랜치명>
④ 확인 (Github)
Github에서 해당 브랜치에 들어가 수정사항을 직접 볼 수 있다.
e. 그 외 관련 명령어 모음
"pip install -r requirements.txt" : 해당 파일의 requirements에 명시된 패키지와 버전 준비
"git clone <URL>" : 원격 Git 저장소를 로컬에 복제
"git pull origin <branch_name>" : 원격 저장소의 특정 브랜치로부터 업데이트를 가져옴
"git add ." : 현재 디렉터리의 수정사항을 모두 스테이징
"git add <file_name>" : <file_name>으로 지정된 파일을 스테이징
"git status" : 스테이지 상태 확인. 빨간색 파일은 작업 디렉터리 / 초록색 파일은 스테이지 / 안보이는 파일은 로컬 레포지토리에 있다
"git commit -m '짧은 커밋메시지'": 스테이징한 변경 내용을 커밋
"git push origin <branch_name>" : 로컬 커밋을 원격 저장소로 푸시 (<branch_name>은 푸시할 원격 브랜치의 이름)
"git branch" : 로컬 브랜치 목록 확인. 초록색 브랜치가 현재 내가 머무는 브랜치
"git branch -r" : 원격 브랜치 확인
"git branch -a" : 로컬,원격 모든 브랜치 확인
"git branch <branch_name>" : 로컬 브랜치 생성
"git branch -d <branch_name>" : 로컬 브랜치 삭제
"git push <remote_name> --delete <branch_name>" : 원격 브랜치 삭제
"git checkout <branch_name>" : 브랜치 이동
"git fetch origin <branch_name>" : 특정 브랜치의 업데이트를 임시로 가져옴. 이후 원하는 브랜치에 merge를 해야 로컬 저장소에도 저장된다.
"git merge <branch_name>" : 현재의 브랜치와 <branch_name> 병합
"git branch --merged" : 브랜치에 이미 병합된 브랜치 목록
"명령어 > file.txt" : 기존 파일의 내용을 덮어씁니다
"명령어 >> file.txt" : 기존 파일에 결과를 추가합니다
* Tab키 1번은 문장 자동완성
Ex) cl이면 clear랑 clone이 있어서 실행이 안돼지만 clo에서 Tab키 누르면 clone 으로 자동완성됨
* Tab키 2번은 완성 가능한 명령어들 보여줌
Ex) cl하고 Tab을 2번 클릭시 clear랑 clone을 보여줌
'Codestates AI 부트캠프 > 4. Data Engineering' 카테고리의 다른 글
[데이터 엔지니어링] 2-2. Crawling (1) | 2023.06.03 |
---|---|
[데이터 엔지니어링] 1-4 파이썬으로 DB 불러오기 (0) | 2023.05.26 |
[데이터 엔지니어링] 1-3 SQL(2) (0) | 2023.05.26 |
[데이터 엔지니어링] 1-2 SQL (0) | 2023.05.26 |
[데이터 엔지니어링] 1-1 (1) 개발 환경 구축 (0) | 2023.05.26 |