Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Altiora Petamus

2. GIt 과 Jupyter notebook 본문

SSAC X AIffel/FUNDAMENTALS_SSAC

2. GIt 과 Jupyter notebook

현석종 2021. 1. 7. 02:16

협업, 프로젝트 소개, 프로젝트 공유 등 개발자라면 알아야할 기본 교양에 대한 내용들을 이곳에 기록한다. 

 


GOAL 

  • Git과 github의 차이를 알아본다. 
  • Git을 활용하는 명령어와 그 의미를 알고 활용한다. 
  • GitHub를 활용해 소스코드 버전관리를 할 줄 안다.
  • Jupyter notebook을 활용해 자유자재로 코드/문서 작업을 한다.
  • 마크다운 문법을 활용해 자유롭게 문서를 작성한다. 

MAIN

 

1. 협업을 위한 툴 

개발자에게 가장 필요한 덕목은 당연 협업능력이다. 

협업능력은 어느 분야에서나 중요한 능력이 되겠지만 개발자의 경우 특히나 도드라진다. 

따라서 개발 분야에 종사하는 사람이라면 협업을 위한 도구들을 알고 이용할 줄 알아야할 필요가 있다.

 

협업을 위한 툴의 예시는 다음과 같다. 
▶ Slack slack.com/intl/ko-kr/

 

새 HQ에 오신 것을 환영합니다.

Slack은 여러분의 팀과 소통할 새로운 방법입니다. 이메일보다 빠르고, 더 조직적이며, 훨씬 안전합니다.

slack.com

▶ Notion https://www.notion.so/

 

Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.

A new tool that blends your everyday work apps into one. It's the all-in-one workspace for you and your team

www.notion.so

▶ Trello https://trello.com/

 

Trello

Infinitely flexible. Incredibly easy to use. Great mobile apps. It's free. Trello keeps track of everything, from the big picture to the minute details.

trello.com

▶ HangOut  https://hangouts.google.com/

 

Google 행아웃 - 데스크톱 또는 모바일에서 행아웃 시작하기

Google 행아웃을 사용하면 다른 사람과 일대일 또는 그룹으로 연락할 수 있습니다. 지금 바로 모바일이나 데스크톱에서 영상 통화 또는 음성 통화를 시작해 보세요.

hangouts.google.com

▶ Zoom https://zoom.us/

 

비디오 회의, 웹 회의, 웨비나, 화면 공유

Zoom은 모바일, 데스크톱 및 회의실 시스템에서 비디오 및 오디오 회의, 채팅 및 웨비나를 안전하고 편리하게 진행할 수 있는 클라우드 플랫폼을 제공하여 첨단 엔터프라이즈 비디오 통신을 선도

zoom.us

 

위 와 같은 도구들이 대표적이고 나 또한 Slack , Notion , Zoom 을 이용중이다. 

 

 

2. GitHub 

2-1. 잔디심기

 

위 이미지는 GitHub이라는 사이트의 활동 기록이다. 

활동 기록이 마치 잔디같이서 잔디심기라는 이름이 붙여졌다. 

사각형 한칸의 하루이며 많은 양의 commit을 하면 더 진한 색으로 표시된다. 

commit이라는 것은 아래에서 설명한다. 

 

2-2. Git과 GitHub 

앞서 개발을 하면서 코드를 짜는 데에는 협업이 중요하다. 

따라서 여러명이서 개발을 할때 버전관리를 편하게 해주는 도구가 바로 Git 과 GitHub이다. 

 

여기서 버전관리란 특정 시점의 진행 상황을 저장해두고, 언제 다시 돌아오더라도 그 시점으로부터 다시 시작할 수 있도록 관리하는 것이다. 

진행하는 프로젝트의 규모가 커질수록 버전관리는 필수적이라고 볼수 있다. 

 

Git 과 GitHub의 정의는 다음과 같다. 

더보기

Git - 개발을 진행하며 작성하는 소스코드가 업데이트 되는 버전을 기록해두고 관리할 수 있는 소스코드 버전 관리 시스템

GitHub - Git으로 관리하는 프로젝트를 호스팅하고, 시간과 공간의 제약 없이 협업할 수 있는 온라인 서비스 

 

즉, Git이 버전기록을 저장한다면, GitHub에서는 그 기록을 다른 사람과 함께 공유하며 협업할 수 있도록 한다. 

로컬(Local)에서 작업한 내용을 Git이 저장해 두었다면 , 그 기록을 온라인 작업공간인 GitHub에 올려 원격(Remote)으로도 작업할 수 있도록 한다. 

Git과 동기화를 해서 온라인으로 관리할 수 있는 원격저장소를 GitHub에서는 Repository라고 한다.

 

Local이란 개인 노트북 또는 데스크탑같은 Personal Computer를 뜻하고, Remote는 웹사이트와 같이 다른 사람과 함께 작업할 수 있는 공간을 뜻한다. 

 

2-3. Ubuntu에서 Git 시작하기 

1) Git 설치 

터미널을 열어 아래 명령어를 입력하면 Git의 설치여부를 확인할 수 있다. 

더보기

$ git --version

 

Git이 설치되어 있지 않다면 아래 명령어를 입력하여 설치한다. 

더보기

$ sudo apt-get install git

 

설치가 완료되고 git --version을 다시 입력해보면 자신이 설치한 버전을 확인할 수 있다. 

 

이제 Local환경에서 내 코드의 버전을 관리할 수 있는 툴인 Git의 준비가 완료된 것이다. 

 

2) GitHub 시작

2-1) GitHub 계정 생성 

먼저 GitHub에서 계정을 만든다. 

아래 링크는 GitHub에서 계정을 만드는 방법을 쉽게 설명한 글이다. 이를 참고하여 계정을 만든다. 

m.post.naver.com/viewer/postView.nhn?volumeNo=24622891&memberNo=42458017

 

2-2) Git과 GitHub 동기화

계정이 생성되고 나면 자신의 Local영역과 GitHub의 계정을 연결해 주어야 한다. 

우리가 Local영역에서 다양한 작업을 한 후, GitHub의 Repository에 전송하려면 Local Git이 나의 Github계정정보를 알고 있어야 하기 때문이다. 

 

아래 명령어를 입력하여 Git과 GitHub의 연결을 시작한다. 

더보기

$ git config --global user.email "my-email@gmail.com"

$ git config --global user.name "my-username"

이 명령어를 통해 Local Git이 어떤 계정의 Repository로 코드 정보를 전송해야할 지 기억한다. 

 

Git에 등록한 정보를 확인하고 싶다면 아래 코드를 입력한다. 

더보기

$ git config -l

 

2-3) Git으로 관리할 로컬 저장소 생성 

이제 내 컴퓨터에 로컬 저장소를 만든다. 

로컬 저장소란 파일을 관리할 때 쓰는 디렉토리를 말한다. 

Git은 이 디렉토리를 기준으로 그 하위에 있는 모든 폴더와 파일에 대한 버전을 기록한다. 

 

아래 명령어를 입력하여 home디렉토리에 workplace라는 파일을 만들어 이 파일을 Local 저장소로 만든다.

더보기

$ cd ~

$ mkdir workplace

 

$ cd workplace 

 

성공적으로 파일을 생성하였으면 그 파일로 디렉토리를 옮겨 아래 명령어를 실행한다.

더보기

$ git init

init은 initialization의 약자로 시작이라는 뜻이다.

이 라이브러리를 이용하여 workplace디렉토리에서 발생하는 모든 변화들을 기록한다. 

 

3)GitHub 사용

3-1) README.md 생성

README.md란 GitHub의 Repository의 대문과 같으며, 그 Repository가 담은 오픈소스 코드들에 대해 소개하는 역할을 한다. 

.md라는 확장자는 Markdown이라는 파일인데 개발자들이 가장 많이 사용하는 문서작업용 언어이다. 

Markdown에 대해서는 아래에서 살펴본다. 

 

아래 명령어를 입력하여 첫 번째 Repository에 담길 첫번째 README.md 파일을 만든다. 

더보기

$ echo "# first-repository" >> README.md

 

echo - 출력 명령어이며 >>을 통해 출력 타겟을 정한다. 위 의 경우는 타겟이 README.md이며 그 파일에 출력을 한다는 뜻이다. 

 

위 코드를 통해 README.md 파일에  first-repository라는 문구가 작성되었을 것이다. 

아래 명령어를 통해 확인해 보자. 

더보기

$ ls

README.md

$ cat README.md

# first-repositorys

아래 링크는 cat을 포함하여 Linux에서 쓰이는 명령어에 대한 설명되어 있는 글이다.

man7.org/linux/man-pages/man1/cat.1.html

 

cat(1) - Linux manual page

cat(1) — Linux manual page CAT(1) User Commands CAT(1) NAME         top cat - concatenate files and print on the standard output SYNOPSIS         top cat [OPTION]... [FILE]... DESCRIPTION         top Concatenate FILE(s) to standard output. Wi

man7.org

 

3-2) add, commit

README.md가 정상적으로 만들어 졌음을 확인했으면  GitHub의 Repository로 옮겨보자.

 

아무리 작은 변화 하더라도 우리가 Local 저장소로 지정한 디렉토리에서 Git은 변화를 감지한다. 

 

아래 명령어를 통해 확인해보자. 

더보기

$ git status

On branch master

 

No commits yet

 

Untracked files:

       (use "git add <file>..." to include in what will be committed)

       README.md

 

nothing added to commit but untracked files present (use "git add" to track)

결과를 확인해 보면 아직 추적되지 않은 파일인 README.md가 확인됨을 알 수 있다. 

 

우리는 이 변경사항을 add와 commit을 통해 Repository로 옮긴다. 

아래 명령어를 입력하여 실행하여보자. 

더보기

$ git add README.md

$ git commit -m “new readme file”

[master (root-commit) 438a37c] new readme file 1 file changed, 1 insertion(+)

        create mode 100644 README.md

 

-m은 메세지 옵션이다. git commit -m뒤에 해당 커밋에 대한 설명을 작성한다.

 

add와 commit은 Git의 아주 중요한 개념이다.

 

Git의 Repository구조는 크게 세가지로 구성되어 있다. 

작업폴더(Working directory) > 인덱스(Staging Area) > 저장소(Head -Repository) 
인덱스는 Local 과 Repository사이에 존재하는 가상의 준비영역이다. 

add와 commit을 통해 Local영역에서 Staging Area로 변경된  정보가 옮겨지게 된다. 

 

add는 변화를 기록하기 위한 준비단계에 해당한다. 

파일을 add하는 것은 staging한다. 또한 stage에 올려둔다는 등의 표현을 사용하며, 본격적인 스냅샷(snapshot)을 찍기 전에 임시로 올려두는 개념의 작업이다. 

commit은 실제로 특정 순간의 버전을 스냅샷으로 확정시켜 남겨두는 역할을 한다. 

 

따라서 지금까지의 실행으로 우리는 변경정보(README.md)를 인덱스에 성공적으로 올려놓았다고 볼 수 있다. 

 

3-3) Repository생성 

변경된 정보를 인덱스에 성공적으로 올려놓긴 했으나 우리는 아직 GitHub에 Repository를 만들지 않았다.

아래 링크에 GitHub에서 Repository를 만드는 방법이 쉽게 설명되어 있다. 

참고하여 Repository를 만들어 보자. 

post.naver.com/viewer/postView.nhn?volumeNo=24623326

 

깃허브(Github) 원격저장소(Repository) 생성

[BY 아보느 포스트] 목차 (1~6편이 서로 연관되는 글입니다.)1. 깃허브(Github) 회원가입하기 2. (현재글...

m.post.naver.com

 

3-4) Local 저장소와 Repository 연결 

Local저장소와 Repository를 연결해 주어야 Git에서 해당 Repository로 정보를 저장할 수 있다. 

우선 Local저장소로 지정한 디렉토리로 터미널의 작업 디렉토리를 옮긴다. 

그 후에 git remote add origin 주소 를 입력하여 연결한다.

더보기

$ cd ~/workplace

$ git remote add origin https://github.com/xxx/first-repository.git  

origin은 원격저장소의 닉네임 역할을 한다. 

앞으로 원격저장소의 주소를 입력하는 대신 origin을 입력하면 된다. 

 

3-5) push

모든것이 준비가 되었으니 Local에서 정보를 전송한다. 

더보기

$ git push origin master

위 명령어를 입력하면 push가 실행된다. 

push는 origin이라는 Repository에 master라는 브랜치로 밀어 넣는다는 뜻이다.

브랜치란 가지를 뜻한다. 

하나의 작업을 여러개의 가지로 분기하여 작업을 진행할 수 있게 한다.

아래 링크에 branch에 대한 자세한 설명이 있다. 

backlog.com/git-tutorial/kr/stepup/stepup1_1.html

 

누구나 쉽게 이해할 수 있는 Git 입문~버전 관리를 완벽하게 이용해보자~ | Backlog

누구나 쉽게 알 수 있는 Git에 입문하신 것을 환영합니다. Git을 사용해 버전 관리를 할 수 있도록 함께 공부해봅시다!

backlog.com

 

3-6) Repositoey에서 Local로 

지금까지 Local에서 Repository로 정보를 전송하는 작업을 하였다.

이번엔 반대로 Repository에서 Local로 정보를 가져오는 작업을 해본다. 

 

먼저 새로운 디렉토리로 가져오기위해 파일을 생성한다.

더보기

$ cd ~

$ mkdir project

$ cd project

 

 

Repository와 Local을 연결하려면 역시나 연결고리가 필요하다. 

다음과 같이 Repository를 복사한다. 

(초록색 code아이콘의 HTTPS주소를 복사한다. )

 

 

그리고 아래 명령어를 입력하여 파일을 clone한다. (링크에 Repository의 주소를 입력한다.) 

이후 확인해 보면 제대로 clone이 실행된 것을 확인할 수 있다. 

 

 

3-7) Local로 가져온 정보를 다시 수정해 Repository에 push

이제 코드를 업데이트 하는 과정을 실행해 본다. 

 

먼저 파일의 변화를 주기 위해 README.md파일을 수정한다. 

더보기

$ echo "add new contents" >> README.md

 

위 명령어를 실행하면 이전에 있던 문구 아래에 해당 문구가 써진다. (cat README.md를 입력하여 확인 ) 

 

git status를 입력하여 Git이 변화를 감지했는지 확인한다. 

더보기

$ git status

On branch master

Changes not staged for commit:

(use "git add <file>..." to update what will be committed)

(use "git restore <file>..." to discard changes in working directory)

modified: README.md

no changes added to commit (use "git add" and/or "git commit -a")

출력 결과를 확인해 보면 README.md파일이 modified되었다고 나온다. 

 

이제 add, commit을 이용하여 staging을 실행한다. 

더보기

$ git add README.md

$ git commit -m “new contents”

[master c82640d] new contents 1 file changed, 1 insertion(+)

 

마지막으로 push를 실행한다. 

더보기

$ git push origin master

 

자신의 Repository에서 업데이트가 정상적으로 진행이 되었는지 확인해본다. 

 

3-8) Local에서의 업데이트 

위에서 clone을 통해 Repository에서 Local로 모든 파일을 가져오는 것을 실행하였다.

이번엔 Local에 파일이 있는 상태에서 업데이트된 Repository의 내용을 Local에도 똑같이 업데이트 하는 것을 실행해 본다.

 

먼저 Local저장소로 디렉토리를 옮긴다.

더보기

$ cd ~/workplace

위 디렉토리는 clone을 하지않은 , clone을 실행하기전에 저장해놓은 Local디렉토리이다.

 

아래 명령어를 입력하여 Local저장소에 내용을 업데이트 한다. 

더보기

$ git pull origin master

push의 반대가 pull이듯 Repository에서 Local로 파일을 당겨온다. 

 

 

3-9) 정리

지금까지 알아본 Git의 활용방법을 그림으로 정리하자면 다음과 같다.

 

위 그림과 같은 방법으로 우리는 개발하는  프로젝트의 버전관리를 효율적이면서 손쉽게 실행할 수 있다. 

 

협업을 하는 경우에는 다음 그림과 같다. 

 

 

3. Jupyter notebook

jupyter notebook이란 데이터 클리닝과 변형, 통계 모델링, 머신러닝 등 데이터 분석을 편리하게 할 수 있도록 최적화 되어있는  오픈소스 웹 어플리케이션 이다. 

아래 링크는 Jupyter notebook의 링크이다. 

jupyter.org/

 

Project Jupyter

The Jupyter Notebook is a web-based interactive computing platform. The notebook combines live code, equations, narrative text, visualizations, interactive dashboards and other media.

jupyter.org

1) Jupyter notebook 설치 

먼저 터미널에서 가상환경을 만든다.

더보기

$ conda create -n datascience

$ conda activate datascience

 

2) Jupyter notebook 실행 

아래 명령어를 입력하여 Jupyter notebook을 실행한다. 

더보기

(datascience) $ jupyter notebook

웹 페이지가 열리는 것을 확인할 수 있다. 

 

우리는 생성한 가상환경에 여러가지 라이브러리를 설치하고 이용하는 것을 Jupyter notebook에서 실행할 것이기 때문에 Jupyter notebook과 가상환경을 커널(kernel)로 등록하여 연결해 준다.

 

먼저 아래 명령어를 입력하여 ipykernel을 설치한다.

더보기

$ conda install ipykernel

$ python -m ipykernel install --user --name datascience --display-name "datascience"

$ python -m ipykernel install --user --name 가상환경이름 --display-name "보여지는 가상환경이름" 의 서식으로 입력한다. 

 

다시 Jupyter notebook을 실행하면 new버튼의 목록에 datascience(보여지는 가상환경이름) 이 등록되어 있는것을 확인할 수 있다. 

이제 해당 가상환경에서의 작업을 Jupyter notebook에서 실행하고자 할때, 이 경로를 통하여 실행하면 된다. 

 

아래 링크는 Jupyter notebook의 활용방법과 수많은 단축키의 대한 설명이 되어있는 글이다. 아래 링크를 참조하여 Jupyter notebook을 능숙하게 다루도록 연습하도록 한다. 

 

사용법 - greeksharifa.github.io/references/2019/01/26/Jupyter-usage/

 

Python, Machine & Deep Learning

Python, Machine Learning & Deep Learning

greeksharifa.github.io

 

3) Markdown 

Markdown이란 코드만으로 깔끔하게 문서 작업을 할 수 있도록 개발된 언어이다. 

 

아래 링크는 Markdown의 사용법에 대하여 자세히 설명되어 있는 글이다. 참조하자. 

 

Markdown -gist.github.com/ihoneymon/652be052a0727ad59601

 

마크다운(Markdown) 사용법

마크다운(Markdown) 사용법. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

 


요약

1. Git 설치 

$ git --version // git 설치 여부 확인

$ sudo apt-get install git // git설치

 

github계정 등록 

git과 github 동기화 (계정 연결) 

$ git config --global user.email "my-email@gmail.com"

$ git config --global user.name "my-username"

$ git config -l // 정보 확인(정상적으로 동기화 되었는지)

 

local저장소 생성 

$ cd ~

$ mkdir workplace

$ cd workplace // local저장소로 이용할 디렉토리 

$ git init // git initialization

 

Repository 생성

github에서  reposittory를 생성한 후 https주소를 복사

local과 repository를 연결

$ cd ~/workplace

$ git remote add origin https://github.com/xxx/first-repository.git  

 

 

$ git status // local에서 변화 감지 

$ git add README.md

$ git commit -m “new readme file” // add 와 commit를 통한 staging

 

정보 전송

$ git push origin master

 

정보 받기(local에 아무것도 없는 상태)

$ git clone https://github.com/xxx/first-repository.git

 

업데이트(local에서 수정후 repository로)

$ git status // modified 라고 표시됨

$ git add README.md

$ git commit -m “new contents”

$ git push origin master

 

local을 업데이트(repository가 협업자에 의해 업데이트 되었을 때 local을 업데이트)

$ cd ~/workplace //local 디렉토리

$ git pull origin master

 

2. jupyter notebook 설치 및 커널 연결 

$ conda create -n datascience

$ conda activate datascience // 가상환경 생성 

(datascience) $ conda install jupyter notebook // jupyter notebook설치 

(datascience) $ jupyter notebook // jupyter notebook 실행 

$ conda install ipykernel //커널 연결 라이브러리

$ python -m ipykernel install --user --name 가상환경이름 --display-name "보여지는 가상환경이름" //커널 연결

 

 

 

'SSAC X AIffel > FUNDAMENTALS_SSAC' 카테고리의 다른 글

0. Ubuntu 환경설정  (0) 2021.01.02
Comments