Upstage AI Lab 6기

Upstage AI Lab 6기 Git 강의 후기

jyun34 2024. 12. 16. 23:09

이번엔 최우영 강사님의 Git 강의 후기이다.

Git이란 버전관리용으로 쓰는데 용이한 개발도구이다.

그러다보니 개발자가 되고자 한다면 꼭 배우는 과정이라나.

 

Git은 Linux 개발자가 Linux 커널 관리를 위해 만든 버전관리 시스템이다.

그러다보니 Git Bash에서 사용하는 명령어들은 리눅스 명령어 기반으로 만들어져있어, 리눅스를 만져본 사람들이라면 익숙할 것이다.

 

리눅스 명령어는 거의 모든 운영체제에서 지원을 하니 알아두면 사용방법을 찾을 필요가 없어 편리하다. 사용방법 자체가 편하다고 생각하진 않지만...

ls는 해당 폴더에 있는 파일, 폴더를 표시해주고, cd는 해당 폴더로 이동, pwd는 현재 위치 확인, mkdir은 폴더 만들기, cp는 복사, mv는 이동, 이름바꾸기, touch는 생성, cat은 출력, rm은 삭제이다.

그 외에 각 명령어마다 -a나 -b 등으로 추가 명령어가 더 있으니 궁금하면 찾아보시라.

vim으로 만든 hello.py

 

vim은 리눅스 환경에서 지원해주는 텍스트 편집기이다. vim '파일' 이름 뒤에 .txt나 .py 같은 확장자를 넣으면 해당 파일이 만들어지면서 입력화면이 출력된다. 

vim은 여러가지 모드가 있는데, normal mode, insert mode, 그 외 기타가 있다.

normal mode에서는 어떠한 입력도 명령어로 되니 텍스트 입력이 안된다. 'a'나 'i'를 눌러야 insert mode에 들어가 텍스트 입력을 할 수 있다. 그 외에 'dd'로 줄 삭제, 'h','j','k','l'로 방향 입력을 할 수 있다.

insert mode에서는 원하는대로 텍스트를 입력하면 된다. esc로 normal mode로 빠져나올 수 있으며 ':wq'로 저장하고 나가기, ':q!'로 강제종료하고 나가기 등을 할 수 있다.

python 실행은 python '파일 이름' 하면 실행된다. c는 gcc로 하면 될 것이다.

 

 

가끔 파일 중에 '.md' 확장자를 보는 경우가 있을 것이다. 제대로 들여다보는게 아닌 이상 그냥 txt파일인가? 하고 넘어가는 경우가 부지기수일 것이다. 이것은 'MarkDown'이라는 파일 형식이고, 개인적으로 html과 비슷하다는 느낌을 받았다.

https://www.heropy.dev/p/B74sNE

 

마크다운(MarkDown) 사용법 총정리

자바스크립트 함수에 대한 기본적인 사용 방법부터 관련 용어, 고급 기법 등의 관련된 다양한 함수 패턴과 여러 개념을 살펴봅니다.

www.heropy.dev

사용 방법은 이 사람이 너무 잘 정리해놔서 링크를 첨부했다.

 

MarkDown을 활용해 해당 파일을 만들었다.

 

 

git의 실행과정은 기본적으로 add, commit, push, pull로 구성되어있다.

add, commit, push로 github의 repository에 변경사항을 수정하고 수정된 내용을 pull로 가져오는 것이다.

git의 실행과정

 

git add는 Staging Area라고 하는 임시공간에 수정한 파일을 올려두는 것이다.

git commit은 수정할 파일을 로컬저장소에 올려두는 것이다. 이 과정에서 메시지를 남길 수 있는데 수정사항을 간결하게 남겨두면 된다.

git push는 로컬저장소에 있는 변경사항을 github의 원격저장소 repository에 반영하는 것이다.

git pull은 원격저장소에서 로컬저장소에 반영하는 것이다. 이 과정은 fetch와 merge로 나뉘어있는데 git pull 명령어로 퉁칠 수 있다. 더 안정적으로 하고싶은 사람은 fetch를 선호한다고 한다.

 

 

git을 쓰기 위해선 처음엔 git init을 써줘야한다. git init을 쓰면 해당 폴더에 .git이라는 숨겨진 폴더가 생성된다.

 

간단한 실습을 위해 vim으로 대충 파일 만들고 git add를 해줬다. warning은 별거 아니고 무시해도 된다.

 

add만 해서는 github에 올릴 수 없다. 위에 말했던 것처럼 commit, push 과정이 더 있어야 올릴 수 있다.

add 하고는 그냥 git commit 입력하면 된다.

 

엔터를 입력하면 이상한 화면이 나오는데, 그냥 메시지 입력하라는 말이다. 그런데 아무 말 적는게 아니고 필요한 말을 문장형이 아닌 구나 절의 형태로 입력해야한다고 한다. 대충 개발자들의 전통이다.

암튼 할 말 적고 esc, :wq를 입력하면 된다.

 

다른 화면으로 바뀌는게 싫다면 그냥 '-m' 하고 메시지를 적는 방법이 있다.

git status 명령어를 통해 해당 파일이 commit 되어있는지 알 수 있다. 

 

git push를 하기 위해서는 일단 원격저장소가 있어야한다.

github에 로그인 해서 새 repository를 만든다.

다음과 같이 Repository 이름을 지어주고, 왠만하면 public, MIT License를 골라준다. MIT License는 그냥 출처 표시라고 생각하면 된다. github에서도 여러모로 저작권 문제가 있다는데 MIT License는 관대하다고 한다. public으로 안 하면 여러모로 불편하다고 한다.

 

 

 

 

다 만들었으면 초록색 코드 버튼을 누르고 https 주소를 복사한다. 

 

git clone 주소 하면 여기 repository에 push 할 수 있게 된다.

git push origin {branch name}을 하면 된다. 

참고로 origin은 github 저장소 이름이라고 한다.

 

원격 repository가 제대로 설정이 안되면 push가 안 될 수 있는데 git remote add origin 주소를 하고 다시 push 하면 된다.

 

해당 branch를 찾아서 보면 파일이 올라와있는 것을 알 수 있다.

 

 

사실 이 작업을 할 때는 branch를 미리 만들고 해야한다. branch를 만들고 그걸 main branch에 merge 하는 것으로 협업을 하는 것이다.

 

git branch {branch name}으로 branch를 만든다. git branch 명령어로 만든 branch를 확인할 수 있다.

git branch -D {branch name}으로 해당 branch를 삭제할 수도 있다.

 

git switch {branch name} 으로 branch를 바꿀 수 있다. 예전에는 git checkout 명령어였는데, 이 명령어는 복구하는데도 써서 헷갈리게 한다는 단점이 있었고, 이를 switchd와 restore로 나눈 것이다.

 

다음은 new branch에 hi.py 파일을 만들어서 master branch에 merge 시킨 것이다.

merge 하기 전에는 master branch에 없었던 hi.py가 merge를 하니 master branch에 통합된 것을 알 수 있다.

참고로 commit 하지 않으면 만들어진 hi.py가 branch를 따라다녀서 merge하지 않아도 다른 branch에서 발견된다. 그럼 관리가 되지 않는다.

 

merge를 한 다음에는 통합시킨 branch를 없앤다. 그대로 방치하면 개발하는데에 방해된다고 한다.

 

참고로 merge를 하다보면 파일이 충돌할 때가 있는데 그 때는 vi 편집기로 유지하고싶은 코드만 남기고 지우면 된다.

 

잘못 add한게 있으면 git reset HEAD {filename}으로 stage 영역에서 파일을 내릴 수 있고, git revert --no-commit HEAD~{커밋한 갯수}..으로 커밋한 것을 되돌릴 수 있다. 커밋한 사실 자체를 없앨 순 있지만 별로 좋은 방법은 아니라고 한다.

 

 

이 외에도 실제로 Upstage 6기생들과 조를 짜서 간단하게 파일을 commit하고 merge하는 경험을 했다. 부트캠프이기에 할 수 있는 귀중한 경험이었고 이 후에 있을 경진대회 때 계속 쓰면서 숙련도가 더 늘어날 것이라 예상되며 개발자의 길에 한발짝 더 나아간 기분이었다.

개인적으로는 강의자료가 실습과정을 좀 제대로 담았으면 좋겠다라는 생각이 든다. 글에는 비교적 간단하게 써놨는데, 워낙 이곳저곳을 들쑤시는 작업을 하다보니 화면공유를 통한 실습과정을 놓치면 따라갈 방도가 없었다.

'Upstage AI Lab 6기' 카테고리의 다른 글

Pytorch 강의 후기  (0) 2025.02.11
딥러닝 강의 후기  (1) 2025.02.11
컴퓨터 공학 개론 후기  (1) 2024.12.11
프로젝트 수행을 위한 이론 1:Statistic 후기  (3) 2024.12.03
Upstage AI Lab 6기 Python 강의 후기  (0) 2024.11.26