Node 03. 개발자를 위한 첫 번째 필수 교양

이하얀·2024년 10월 14일
1
post-thumbnail

3-1. 들어가며


  • 학습목표
    • Git과 GitHub의 차이 이해
    • Git 명령어(add, commit, push, pull) 학습 및 활용
    • GitHub로 소스코드 버전 관리하기
    • Jupyter Notebook으로 코드/문서 작업하기
    • 마크다운 문법 사용하기

3-2. 개발자를 위한 첫 번째 필수 교양 (1) 협업을 더 잘, 더 편리하게 하기 위해


  • 개발자에게는 협업 능력이 매우 중요!

    • 생산성 도구
      • Slack (슬랙)
      • Notion(노션)
      • Trello(트렐로)
      • Jira(지라)
      • Evernote(에버노트)
      • Asana(아사나)
      • Zoom(줌) / Google Meet(구글 밋)
      • ...
  • 개발자의 생산성 키워드

    • 생산성
    • 개발자를 위한 생산성 도구
    • 개발자 협업
    • 개발자 커뮤니케이션

3-3. 개발자를 위한 첫 번째 필수 교양 (2) 개발자의 가드닝, 잔디 심기


  • 잔디?

    • GitHub이라는 사이트의 활동 기록
  • Commit?

    • 커밋을 한다는 것은 어떤 식으로든 코드 작성 또는 개발 관련 문서 작업을 진행했다는 것을 의미
  • 1일 1커밋하기

    • 개발자들 사이에서 진행하는 잔디 채우기 운동을 하기도 한다!(현재 나도 진행중)
  • GitHub는 코드를 다루는 개발자들이 편리하게 협업하기 위한 도구임이 중요!

3-4. 내 코드의 모든 발자취를 기록할 수 있을까? (1) 버전관리와 Git


  • Git과 GitHub
    • 소스 코드 버전 관리를 도와주는 시스템
    • 그와 동시에 협업을 편리하게 해줌.

💡 참고자료


3-5. 코드의 모든 발자취를 기록할 수 있을까? (2) Git과 GitHub


  • Git

    • 개발을 진행하면서 작성하는 소스코드의 업데이트 버전을 기록 및 관리할 수 있는 소스코드 버전 관리 시스템
  • GitHub

    • Git으로 관리하는 프로젝트 호스팅 및 협업 온라인 서비스
    • Git이라는 도구를 활용할 수 있게 해주는 사설 서비스
    • 이 외에도 GitLab 등 유사한 서비스가 있음!
  • Git vs GitHub
    • Git은 버전 기록 저장 및 관리 vs GitHub는 기록을 공유해 협업 가능
    • Git에서 로컬 작업 내용을 저장 vs GitHub는 그 기록을 올려 원격으로 작업!
  • Git의 역사
  • 리눅스 창시자 리누스 토르발즈가 만든 오픈소스 툴

3-6. 내 코드의 모든 발자취를 기록할 수 있을까? (3) Git, GitHub 셋팅하기


  • 우분투에서 Git 시작하기
git --version

  • GitHub 시작하기
    • 계정 생성시 주의 사항
      • Username 중복 ❌, 인증 가능한 email 사용
      • Username은 내 깃허브 페이지의 도메인 주소이니 신중하게!

3-7. GitHub에 첫 번째 잔디 심기, 어렵지 않아요! (1) 로컬 저장소


1️⃣ 로컬 Git에 GitHub 계정 정보 등록

  • Git과 GitHub 연결
    • my-email@gmail.com : 자신의 이메일 주소
    • my-username : 자신의 username
$ git config --global user.email "my-email@gmail.com"
$ git config --global user.name "my-username"
  • Git에 등록한 config 정보 확인
git config -l

2️⃣ 내 컴퓨터에 로컬 저장소 생성

  • 로컬 저장소 : 우리가 자주 사용하는 컴퓨터 폴더
$ cd ~
$ cd aiffel
$ mkdir workplace

3️⃣ Git으로 버전 관리

  • 만든 디렉터리로 이동
cd workplace
  • git 시작(현재 디렉터리를 새로운 Git 로컬 저장소로 만드는 것!)
git init


3-8. GitHub에 첫 번째 잔디 심기, 어렵지 않아요! (2) 변화 추적하기


4️⃣ README.md 파일 생성

  • README.md

    • GitHub의 레포지터리의 대문 역할!
    • 해당 저장소가 가진 내용들을 소개(텐서플로우의 경우 오픈 소스 코드들)
  • md

    • 마크다운 파일을 의미
  • 리드미 파일 만들기

    • 리드미 파일 생성과 동시에 # first-repository라는 1줄이 자동 입력
$ cd ~/aiffel/workplace
$ echo "# first-repository" >> README.md
  • 생성된 리드미 파일 열기 : cat 명령어

5️⃣ Git으로 변화 추적하기

  • git status

    • main vs master : 기존 master라는 표현이 인종 차별 우려가 있어 main으로 표현을 변경했음!
  • 변경사항 저장하기

    • add, commit
    • -m : 메시지 옵션(뒤에 해당 커밋에 대한 설명 작성 가능!)
  • addcommit의 차이는?

    • 초보자를 위한 git과 Github 시작하기 9. add와 commit의 개념

    • add

      • 변화 기록 준비 단계(본격적인 스냅샷 작업 전 임시로 올려두는 작업)
      • Working Directory에서 변경점이 있는 파일을 Staging Area에 추가!
    • git commit

      • 특정 순간 버전을 스냅샷으로 찍어 기록하는 것
      • HEAD : 최신 커밋을 가리키는 포인터(HEAD가 해당 커밋을 가리킴)

3-9. GitHub에 첫 번째 잔디 심기, 어렵지 않아요! (3) 원격 저장소


6️⃣ GitHub에 내 레포지터리 만들기

🚨 주의 사항

  • 이미 리드미 파일을 만들어뒀으니 레포지터리 생성 시 체크 해제할 것!

7️⃣ 로컬 저장소와 원격 저장소 연결하기

  • 주소를 로컬 저장소에 있는 git에 알려주면 정보 저장 가능!
$ cd ~/aiffel/workplace
$ git remote add origin https://github.com/xxx/first-repository.git
  • https://github.com/xxx/first-repository.git : 본인 레포지터리 주소 클립보드로 복사해 사용!

8️⃣ GitHub에서 토큰 생성하기


9️⃣ 로컬 저장소 기록을 원격 저장소로 전송

$ git config credential.helper store
$ git push origin main
  • git config credential.helper store : push 할 때 마다 로그인을 하도록 하지 않게 해주는 명령어

  • 오류 발생 시 git push origin master로 진행!

  • git branch란?

    • 우리가 작업 중인 프로젝트에서 새로운 기능 개발 또는 버그 수정 시 사용하는 독립 작업 공간
    • 브랜치 사용 시 메인 프로젝트에 영향을 주지 않고 안전 작업 가능!
    • 브랜치를 만들면 ➡️ 현재 프로젝트 상태가 복사되어서 별도 공간에서 작업이 진행됨!
    • 가지가 뻗어나간 것이니 다시 메인 프로젝트에 합치려면 ➡️ merge(병합)을 해야함!
  • 브랜치의 사용 목적

    • 여러 작업을 독립적으로 진행하려고 할 경우 사용
    • 다른 브랜치에 영향을 주지 않아 여러 작업 동시 진행 가능

  • 생성 완료!

💡 클라우드 환경 사용 시 주의 사항

  • global 옵션을 사용하면 폴더에 정보가 저장됨.
  • 계정 정보가 /aiffel 폴더 안에 저장되게 해야 클라우드 환경에 바뀌어도 계정 정보 유지 가능!
$ cd ~/aiffel/workplace
$ git config credential.helper "store --file ~/aiffel/.git-credentials"

  • 원격 저장소에 저장
  • 정보와 토큰 유실이 우려된다면 설정을 삭제(단, 불편해짐!)
$ rm ~/aiffel/.git-credentials
$ ls -a
$ cd ~/aiffel/workplace
$ git config --unset credential.helper
$ git config -l

3-10. GitHub에 첫 번째 잔디 심기, 어렵지 않아요! (4) 협업하기


🔟 이번엔 원격 저장소를 로컬로 가져와보자.

  1. 레포지터리 주소 복사
  2. 다른 디렉터리인 project에 가져오기
$ cd ~
$ cd aiffel
$ mkdir project
$ cd project
  1. clone 명령어로 해당 레포터터리 끌어오기
    a. 본인 깃허브 username을 넣어야 함!

  2. 잘 복사되었는지 확인


1️⃣1️⃣ 로컬에 가져온 원격 저장소를 수정해서 다시 push해보자

  1. 파일에 변화를 주기 위해 README.md 파일 수정하기
$ echo "add new contents" >> README.md

  1. git status로 변화 추적이 되는지 확인해보기

  2. add, commit, push진행하기

  3. 적용되었는지 확인하기


3-11. GitHub에 첫 번째 잔디 심기, 어렵지 않아요! (5) 받아오기


1️⃣2️⃣ 로컬 저장소를 원격 저장소 내용과 같게 업데이트하기

  • git pull origin main
    • 원격 저장소를 로컬 저장소로 "당겨오기!"

3-12. GitHub에 첫 번째 잔디 심기, 어렵지 않아요! (6) 정리


해당 챕터의 이미지 출처는 아이펠 LMS 시스템입니다.

  • 우리가 진행한 작업!
    • workplace : 로컬 저장소
    • add, commit, push 명령어 : 원격 저장소로 전송!
    • 원격 저장소 ➡️ first-repository 디렉터리로 복제 ➡️ 파일 수정 후 ➡️ 다시 원격 저장소로 전송
    • 수정된 원격 저장소 ➡️ workplace로 가져와 처음 만든 저장소 업데이트(pull) 작업 진행!

  • 그럼 왜 이렇게 해야하는 걸까?
    • 협업 시, 2명 이상의 개발자가 서로 업데이트한 파일을 별도로 전송하지 않고도 GitHub push & pull만으로 빠르게 협업 가능!

3-13. 개발자 문서작업의 시작과 끝! 마크다운을 익혀보자 (1) 마크다운 소개


  • 마크다운이란?
    • 코드를 치듯 문서 작성 후 ➡️ md 확장자를 가진 마크다운 파일 렌더링을 하면 ➡️ 큰 문자, 볼드체, 링크, 리스트 등으로 표현!
    • GitHub의 README.md 파일, 주피터 노트북 마크다운 셀 등에서 사용!
    • 마크다운 사용법

3-14. 개발자 문서작업의 시작과 끝! 마크다운을 익혀보자 (2) 마크다운 작성하기


  • 제목 : #
# This is a H1
## This is a H2
### This is a H3
#### This is a H4
##### This is a H5
###### This is a H6

  • 목록, 리스트
1. 첫번째
2. 두번째
3. 세번째

  • 순서 없는 리스트 : - , * , +
- 빨강
  - 녹색
    - 파랑

  • 구분선 : ---
---


  • 링크 달기 : [보여줄 이름](http://...link..)
[구글](https://google.com)

  • 강조 : 볼드체, 이태리체, 취소선

single asterisks
single underscores
double asterisks
double underscores
cancelline

*single asterisks*
_single underscores_
**double asterisks**
__double underscores__
~~cancelline~~

  • 코드블럭 입히기
print("hello Markdown")


  • 줄바꿈 : 줄바꿈을 위해서는 문장 마지막에서 2칸 이상 띄어쓰기!
* 줄바꿈을 하기 위해서는 문장 마지막에서 2칸 이상을 띄어쓰기해야 한다. 
이렇게

* 줄 바꿈을 하기 위해서는 문장 마지막에서 2칸 이상을 띄어쓰기해야 한다.__  # 띄어쓰기
이렇게

  • 이미지 삽입 : 이미지 경로를 잘 입력해야 함!
![Alt text](path/to/img.png)

# 사이즈 조절
<img src="/path/to/img.jpg" width="450px" height="300px"></img>

3-15. 마무리

용어 정리

  • init: 로컬 디렉토리를 새로운 Git 저장소로 만들기
  • status: Git이 추적 중인 로컬 저장소의 변화를 감지
  • add: Git 저장소 변경점 저장을 위한 준비 단계
  • commit: 특정 순간의 버전을 스냅샷으로 기록
  • push: 로컬 저장소 ➡️ 원격 저장소로 전송
  • clone: GitHub의 원격 저장소 ➡️ 로컬 저장소로 한꺼번에 가져오기
  • pull: 로컬 저장소 버전과 원격 저장소가 같은 내용을 가지고 있을 수 있도록 업데이트!
profile
언젠가 내 코드로 세상에 기여할 수 있도록, BE&Data Science 개발 기록 노트☘️

0개의 댓글