참고 : Git and GitHub for Beginners - Crash Course - YouTube
⭐️ Contents ⭐️
⌨️ Introduction
⌨️ What is git?
⌨️ What is version control?
⌨️ Terms to be learn in video
⌨️ Git commands
⌨️ sign up in GitHub
⌨️ using git in local machine
⌨️ git install
⌨️ getting code editor
⌨️ inside VS Code
⌨️ cloning through VS Code
⌨️ git commit command
⌨️ git add command
⌨️ committing
⌨️ git push command
⌨️ SSH Keys
⌨️ git push
⌨️ Review workflow so far
⌨️ Compare between GitHub workflow and local git workflow
⌨️ git branching
⌨️ Undoing in git
⌨️ Forking in git
⌨️ Ending
⭐️ 깃(git) & 깃허브(github) 튜토리얼 ⭐️
⌨️ What is git?
깃 git이란 오픈 소스 버전 컨트롤 시스템으로
프로그래머들이 가장 많이 사용하는 시스템이다.
나 같은 경우는
개발자 인스타그램이나 블로그에서 종종 '잔디 심었다'는 표현을 보았다.
나는 그동안 git을
"commit을 해서 버전을 업데이트할 때마다 잔디를 심어주는 것"이라고 이해하고 있었고,
나도 잔디를 심고 싶어서 git을 시작하게 되었다. 🌱🌱🌱
⌨️ 그래서 버전 컨트롤이 무엇인가?
버전 컨트롤은 코드가 바뀔 때마다 바뀐 부분을 기록하고 업데이트하는 것을 말한다.
버그가 생겼거나,
이전 버전으로 돌아가야 할 때 아주 유용하게 사용된다.
깃허브에서 버전 컨트롤을 아주 깔끔하게 보여주는데
그건 잠시후에 살펴보기로 하자!
⌨️ 기초 용어 설명
🌱디렉토리 Directory🌱
디렉토리(Directory)는 기본적으로 폴더라고 생각하면 편하다.
다만, 폴더는 물리적인 디렉토리나 디스크가 아니라
가상 환경에 놓인 것까지를 포함하는 더 넓은 개념이라고 한다.
다이어그램으로 표현하자면, 다음과 같다.
Virtual folders = Folders - Directories
cf) shell - What is the difference between a directory and a folder? - Stack Overflow
🌱터미널 Terminal or Command Line🌱
텍스트 커멘드를 내리는 곳이다.
여기서 프로그램에 업데이트, 실행, 변경, 설치 등 직접 명령을 내릴 수 있다.
나는 터미널을 사용해본 적이 많지 않지만,,
파이썬에서 pip 모듈을 설치할 때, <- 이때는 cmd
데이터 엔지니어링을 배우며 여러 프로그램을 설치, 실행할 때
사용해보았다. <- 이때는 WSL(Window subsystem for linux) - ubuntu 이용
🌱CLI Command Line Interface🌱
CLI를 통해서 사용자가 컴퓨터 프로그램과 상호작용할 수 있다.
사용자는 텍스트 커맨드를 내리고, 컴퓨터 역시 문자열 형태로 출력한다.
-> 으음..... shell, bash, wsl, cmd... 이게 다 뭐지? <-
🌱 cd 🌱
cd는 Change Directory라는 뜻의 명령어로
하위 폴더로 내려가자라고 할 때는 cd [하위 폴더 이름]
다시 상위 폴더로 돌아갈 때는 cd ..
를 사용하면 된다.
🌱 리포지토리 Repository 🌱
기본적으로 리포지토리는 프로젝트를 의미한다.
프로젝트의 내용물이 저장되는 폴더, 장소를 지칭한다.
이때 Github는 리포지토리를 저장하는 웹사이트다.
⌨️ Git commands
🌱 clone 🌱
사실 이 글의 최종 목적지는 ... 도커 컴포즈 실습이다..!
나는 아래 사이트에서 도커 실습을 해보려고 했는데, 여기서
git clone https://gitlab.com/yalco/practice-docker.git
이 명령어를 이용하여 파일을 다운 받으라고 했다.
이때 이 clone 은
github 같은 곳에 올린 리포지토리를 내 로컬 PC로 가져오는 명령어다.
🌱 add 🌱
파일에 변화가 생기는 것을 탐색하는 명령어다.
🌱 commit 🌱
파일을 깃에 저장한다.
🌱 push 🌱
Github와 같은 곳에 있는 리포지토리에 깃 커밋을 업로드한다.
🌱 pull 🌱
push 명령어와 반대 동작을 수행한다.
외부 리포지토리에 저장된 깃 커밋(changes)를 로컬 머신에 다운 받는다.
⌨️ Github 입문 :D
github에 가입하고
내 파일에서 create repository를 하면, 프로젝트를 생성할 수 있다.
보통 첫 페이지에 프로젝트를 줄글로 설명하는 README.md 파일을 생성한다.
.md는 markdown 확장자이고
jupyter 노트북에서 사용하듯이
#으로 글씨를 키우고, $$ 사이에 수식을 작성하면 된다.
README.md 파일을 편집한 후에 github 페이지에서 commit 버튼을 누르면,
파일을 생성하고 수정한 기록이 남는다.
각 commit에는 사용자가 작성한 커밋의 제목 /
부연설명, 고유 번호가 저장된다.
커밋 하나를 누르면
삭제 / 추가 사항이 잘 보인다.
흰 색 : 그대로 / 빨간 색 : 없앰 (-) / 초록 색 : 더함 (+)
⌨️ using git in local machine
나는 git을 아래 사이트 window 버전으로 (기본값 따라서) 설치했다.
>>> 그런데... ? <<<
나는 분명 window로 설치했는데,
WSL ubuntu에도 git이 있었다.
(다른 버전으로...?)
왜 있는지는 모르겠지만..
나중에는 WSL이 편해서 그걸로 썼다.
⌨️ git 실습 1
🌱step 1. clone🌱
github에서 repository를 가져온다!
🌱step 2. 편집🌱
local git에서 파일들을 편집한다!
🌱step 3. add / commit / push🌱
local git에서 변경한 사항들을
업데이트하고 add
저장하고 commit
업로드한다 push !!!
🌱step 1. clone🌱
(1)
IDE에서 폴더를 연다.
나는 Visual Studio에서
C:\Users\82109\Source\Repos\practice-docker 폴더를 열었다.
(2)
그 다음, IDE에서 터미널을 열고,
(3)
git 외부 폴더를 clone해 온다.
초록색 code 버튼을 누르면, 리포지토리 주소를 복사할 수 있다.
해당 주소를 복사해서 터미널에
git clone [주소]를 입력해준다.
$ git clone https://github.com/tomatozoo/docker_practice.git
여기까지 했더니
practice-docker라는 폴더 내부에 docker_practice라는 리포지토리가 저장되었다.
cd [리포지토리 이름]을 통해 내부로 이동한다.
$ cd docker_practice
(4)
해당 디렉토리 안에 있는 모든 파일을 확인하기 위해
ls -la 명령어를 사용한다.
그런데 cmd에서는 잘 안된다고 해서 WSL를 열었다.
$ wsl
docker_practice 리포지토리 내부에폴더(형광펜 칠해진 부분)랑 파일(README.md)가 있다는 것을 확인할 수 있다.
🌱step 2. 편집🌱
local git에서 파일들을 편집한다!
(1)
생성
docker_practice 폴더 내부에 docker.py라는 빈 파일을 생성했다.
-> 새로운 파일을 만들었다는 게 포인트!
터미널에 git status 명령어를 입력하여 상태를 확인한다.
$ git status
...
Untracked files:
(use "git add <file>..." to include in what will be committed)
docker.py
docker.py라는 파일은 새로 만든 것이어서
git에서 인식할 수 있도록 만들어주어야 한다.
-> git add 명령어 이용
🌱step 3. add / commit / push🌱
local git에서 변경한 사항들을
업데이트하고 add
저장하고 commit
업로드한다 push !!!
⌨️ git add command
git add는 변화를 탐지하는 명령어이다.
모든 파일을 탐색하기 위해서는 1)
특정 파일을 추가하기 위해서는 2)
를 이용한다.
1) 모든 파일을 추가한다 : ~ .
$ git add .
2) 특정 파일을 지정하여 추가한다 : ~ 파일명
$ git add docker.py
...
tomato@DESKTOP-IP2MBOJ:/mnt/c/Users/82109/Source/Repos/practice-docker/docker_practice$ git add .
git add . 로 업데이트를 시킨 다음
tomato@DESKTOP-IP2MBOJ:/mnt/c/Users/82109/Source/Repos/practice-docker/docker_practice$ git status
git status로 상태를 확인한다.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: README.md
new file: docker.py
이제 git에서 docker.py를 새로 생성된 파일로 인식한다.
⌨️ committing
git commit 명령어를 통해 누가 / 무엇을 / 어떻게 수정했는지 저장한다.
$ git commit -m "what and why(title)" -m "description - details"
$ git commit -m "" -m ""에서
-m 은 메시지를 의미한다.
첫 문자열에는 title, 두번째 문자열에는 추가적인 설명을 적는다.
>> 만약에 여기서 <<
계정 정보를 입력하라는 경고가 뜨는 경우!
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: empty ident name (for <tomato@DESKTOP-IP2MBOJ.localdomain>) not allowed
시키는 대로 사용자 이름과 이메일을 입력해주면 된다.
$ git config --global user.email "you@example.com"
$ git config --global user.name "Your Name"
⌨️ SSH Keys
보안을 위한 장치
암호를 만들었다가 다시 없애보았다.
step 1. 암호 만들기
tomato@DESKTOP-IP2MBOJ:/mnt/c/Users/82109/Source/Repos/practice-docker/docker_practice$ ssh-keygen
github에서 가져온 리포지토리(docker_practice)에서
ssh-keygen (ssh key generator) 명령어를 실행시킨다.
Enter file in which to save the key (/home/tomato/.ssh/id_rsa): keyname
Created directory '/home/tomato/.ssh'.
그 다음, key 이름을 입력한다.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/tomato/.ssh/id_rsa
Your public key has been saved in /home/tomato/.ssh/id_rsa.pub
The key fingerprint is:
The key's randomart image is:
비밀번호를 설정하고
엔터 몇 번 누르면 끄읕~
step 2. 암호 삭제하기
암호를 삭제한다기보다는,
암호를 저장한 곳으로 돌아가서
암호를 엔터로 바꿔주는 과정이다.
tomato@DESKTOP-IP2MBOJ:/mnt/c/Users/82109/Source/Repos/practice-docker/docker_practice$ cd ~/.ssh
암호가 저장된 곳으로 이동~
tomato@DESKTOP-IP2MBOJ:~/.ssh$ ssh-keygen -f id_rsa -p
Enter old passphrase:
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.
해서 ssh-keygen -f id_rsa -p 명령어를 입력한 뒤에
이번에는 비밀번호를 입력하지 않은 채로 엔터를 누른다.
그러면 비밀번호가 없어진다
⌨️ git push command
github에 업로드하기 위해서git push 명령어를 사용한다.
tomato@DESKTOP-IP2MBOJ:/mnt/c/Users/82109/Source/Repos/practice-docker/docker_practice$ git push
Username for 'https://github.com': tomatozoo
Password for 'https://tomatozoo@github.com':
만약에 github용 토큰이 없다면
GitHub 토큰 인증 로그인: Personal Access Token 생성 및 사용 방법 (tistory.com)
이 사이트를 참고하면 된다.
다시 깃허브에 들어가면, 코드가 바뀐 것을 확인할 수 있다.
⌨️ git 실습 2
🌱🌱🌱🌱🌱
- 로컬 환경에서 폴더 생성 + 업로드하기 -
step 1.
아까 작업하던 리포지토리(docker_practice)와는 분리된 곳에 새로운 폴더를 생성한다.
$ cd ../[폴더이름]
그리고 해당 폴더로 이동한다.
step 2.
github 페이지에서 create new repository를 통해 빈 폴더를 만들어준다.
step 3.
깃허브 리포지토리 주소를 복사한 뒤에
터미널로 돌아온다.
tomato$ git remote add origin https://github.com/tomatozoo/new_folder_practice.git
git remote add origin [복사한 주소]명령어로 음... 업로드할 곳을 정해두고
실습 1과 같이
파일을 편집한 뒤에
git add, commit을 거쳐..
tomato$ git push --set-upstream origin master
Username for 'https://github.com': tomatozoo
Password for 'https://tomatozoo@github.com':
github에 업로드한다.
⌨️ 요약하자면?
🌱 github 사이트에서는 ! 🌱
step 1. 코드 작성
step 2. 커밋 버튼 누르기
step 3. make a pull request
(아직 안해봄~)
🌱 로컬 git에서는 ! 🌱
step 1. 코드 작성
step 2. git add - 상태 업데이트
step 3. 커밋 - 저장
step 4. git push - 업로드
step 5. make a pull request
⌨️ git branching
git branching은
버전 관리에 유용하다.
new feature를 만들 때 아직 완성되지 않은 경우,
메인에서 분리해서 샌드박스 식으로 연습해볼 수 있다.
나중에 안전할 때 merge하면 된다.
버그가 생긴 경우에도 hot fix branch를 통해 버전관리할 수 있다.
'Data Science > AI' 카테고리의 다른 글
NLP - attention (0) | 2021.09.24 |
---|---|
What is Spark Streaming? | RDD, SparkStreaming, DStream, Sparkconfig | 작성 중 (0) | 2021.09.16 |
[8.9] 공동세션 분석 리뷰 (0) | 2021.08.10 |
[머신러닝] decision tree - 핸즈온 머신러닝 6장 (0) | 2021.07.31 |
[머신러닝] 핸즈온 머신러닝 5장 주피터 노트북 파일 (0) | 2021.07.31 |