* 강의를 듣고 필기한 내용일 이후에 따로 정리한 내용입니다.
- Git이라는 게 무엇인지, 어떻게 하는지 등등을 보고 git의 공부를 하는 수업
- 팀단위 작업에서 어떻게 버전관리를 할지에 대해서
- 도구자체는 사용법이 어렵진 않으나, 명령어 수행 수준정도이지만, 개념 이해가 필요
- 작업 수행은 쉬우나, 작업순서에 대한 정리가 필요함! 반복해서 정리를 하는 과정이 될 듯.
- 걔념만 이해하면 정말 쉬운 모듈
shell, vim commands 복습
- Shell
운영체제의 커널과 사용자를 이어주는 소프트웨어
- shell에 명령을 내리면 커널에 전달을 해줌 : 커널에서 결과물을 다시 사용자에게 전달 : 커뮤니케이션 도구
- sh(Bourne Shell): AT&T Bell 연구소의 Steve Bourne이 작성한 UNIX 쉘
- csh: 버클리의 Bill Joy가 작성한 UNIX 쉘
- bash(Bourne Again Shell): Brian Fox가 작성한 UNIX 쉘
- 다양한 운영체제에서 기본 쉘로 채택 : 가장 많이 사용
- zsh: Paul Falstad가 작성한 UNIX 쉘 : mac os에서 기본으로 채택 - windows : git bash 사용하여 실습함
- aaaaaa @ DESKTOP : DESKTOP에 aaaaa라는 유저가 접속되어있다
명령어
- pwd : 현재 작업중인 위치
- ls : 현재 디렉터리에 있는 파일과 폴더의 목록
- ls -a : 현재 디렉터리의 모든 파일과 폴더
- ls -l : 파일과 폴더의 상세 정보
- ls -al : 숨김 파일까지 포함된 파일 목록을 상세 정보 - cd : 디렉터리 이동
- cd document : 다큐먼츠 디랙터리 이동
- cd .. : 현재 디렉터리의 상위 디렉터리로 이동하는 명령어
- ..이 상의 디렉터리를 의미 - mkdir dev : "make directory"의 약자로, 새 디렉터리를 만드는 명령어
- dev : 생성할 디렉터리의 이름 - touch : 파일의 생성 / 수정 시간을 갱신
- touch README.md : 프로젝트 설명을 담는 README.md 파일을 생성
- touch hello.py / touch hello.c / touch hello.txt / touch report_final.docx / touch main.java / touch main.go /
- touch ./src/hello.py : ./src/ 디렉터리 내에 hello.py 파일을 생성 - mv : 파일이나 디렉터리를 이동 / 이름 변경
- mv hello.c src : hello.c 파일을 src 디렉터리로 이동
- mv ../hello.txt ./ :상위 디렉터리에 있는 hello.txt 파일을 현재 디렉터리로 이동
- mv main.go scr/main.cs : 현재 디렉터리에 있는 main.go 파일을 src 디렉터리로 이동하고, 이름을 main.cs로 변경 (이름울 변경하며 위치를 옮김)
- mv main.cs main_copy.go :현재 디렉터리에 있는 main.cs 파일의 이름을 main_copy.go로 변경 (이름만 변경)
- mv hello.* .. : hello라는 이름을 가진 모든 파일을 상위 디렉터리로 이동하라 - cp : 파일을 복사하는 명령어
- cp hello.txt hello_copy.txt : 현재 디렉터리에 있는 hello.txt 파일을 복사하여 hello_copy.txt라는 새로운 파일을 생성 - rm : 파일이나 디렉터리를 삭제하는 명령어
* 삭제된 파일은 복구가 불가능하기 때문에 매우 주의해서 사용
- rm main.java : main.java를 삭제해라
- rm hello* / rm hello.* : hello 이라는 이름을 가진 모든 파일을 삭제해라
- rm -rf src : src 디렉터리와 그 안의 모든 파일 및 하위 디렉터리를 강제로 삭제하는 명령어
- rm -rf / : 시스템의 루트 디렉터리(/)와 그 아래 모든 파일 및 디렉터리를 강제로 삭제 ( 매우 위험한 명령어)
- rm ./* : 현재 디렉터리(./)에 있는 모든 파일을 삭제하는 명령어
- Vim
- Free and Open source text editor
- Bill Joy의 vi 확장판
- CLI 기반의 text editor - nano, emacs, gedit 등
- Neovim, Macvim 등 다양한 확장판
- vundle(지원중단), vim-plug 등의 확장기능 설치 관리자 제공
- 모드 기반의 마우스 입력 대체
- 마우스 없이 해야해서 모드들이 많음 : 그게 좀 어려움
- normal mode(default): 모든 키가 명령으로 동작
- insert mode(i): 입력, 수정 모드
-
- visual mode(v): 블록설정
- command-line mode(:): 패턴 검색, 필터, 줄이동, 종료 등의 액션 수행 모드
- VS보다 가벼워서 많이 사용함 / 파이썬 개발환경은 쓸 만함
- vim은 한글로 동작불가
- git을 위한 vim에서는 insert만 왔다갔다함 - vim hello.md : hello.md 파일을 Vim 텍스트 편집기로 열어 편집
- 제목 텍스트는 #을 쓰고 # 제목 / ##소제목 / ###소제목의 소제목 이렇게 한다
- 일반적인 문단을 작성할때는 기호 없이 작성하면 됩니다.
- 엔터를 쳐도 다음 문단일 것 같지만 이 문장은 윗문단에 포함된 문장
- 새 문단을 열때는 엔터를 두 번 쳐야한다.
- 문법간의 구분도 엔터를 두 번 쳐야한다. - 링크랑 사진을 넣는 법
- 링크 : [Link text](https://www.google.com)
- 사진 : ![Alt text](./imgs/cat.jpg) - 문장속에서 '특정부분'을 강조할 때는backquote를 사용
- 예를 들면 '$ pip install fastaqi'. - ## Code highlight
- 문장속에서 '특정부분'을 강조할 때는backquote를 사용
-예를 들면 '$ pip install fastaqi'.
- backquote 3개를 누르면 각 코드에 따른하이라이트를 해준다
'''python
def hello(user_name: str) -> str:
return f 'Hello, {user_name.upper()}'
'''
'''html
<ul>
<li>Item</li>
</ul>
'''
- mathjax
$y=ax +b$ - vim mode
- normal mode: 어느 모드에서건 esc를 누르면 이동
- insert mode: i on normal mode
- visual mode: v on normal mode
- command mode: : on normal mode - 커멘드 모드에서
- : 하고 숫자하면 해당 라인으로 이동을 할 수 잇음
- :w : 저장
- :wq : 저장하고 나가겠다.
- :q : 나가겠다
- :q! : 모든걸 무시하고 나가겠다 - cat hello.md : hello.md에 있는 걸 읽어오겠다
git
- git
분산형 버전관리 시스템(distributed Version Control System)
- Linus Torvalds가 Linux 커널 관리를 위해 1주일만에 만든 버전관리 시스템
- 압도적 업계 1위 : 단순한 구조와 빠른 속도
- 분산형 저장소 지원
- 비선형적 개발(수천개의 브랜치) 가능 : 멀티버스처럼 다른 시간선에서 일을 할 수 있음_다른사람 신경X 합쳐질때 정리가능
- 소스코드 주고받기 없이 동시작업이 가능해져 생산성이 증가
- 수정내용은 commit (각각 일을 한 것, save 파일) 단위로 관리, 배포 뿐 아니라 원하는 시점으로 Checkout 가능
- 새로운 기능 추가는 Branch로 개발하여 편안한 실험이 가능하며, 성공적으로 개발이 완 료되면 Merge하여 반영
- 인터넷이 연결되지 않아도 개발할 수 있음
- Cloud Platform에서 관련 작업을 위해서는 CLI가 필수 : 반드시 CLI를 알아야한다. GUI가 쉬움
- CLI에 익숙해지면 GUI를 사용하기 위해 필요한 것은 도구에 대한 적응 뿐
- 익숙하지 않은 Shell command에 익숙해지는데에도 도움 - git의 구조
- Blob: 파일 하나의 내용에 대한 정보
- Tree: Blob이나 subtree의 메타데이터(디렉토리 위치, 속성, 이름 등)
- Commit: 커밋 순간의 스냅샷 - git의 단위
- Local Repository (로컬 저장소) : 사용자의 컴퓨터에 저장된 Git 저장소
- 모든 변경 사항을 커밋할 수 있고, 자신의 로컬 저장소에서 모든 히스토리를 관리
- 다른 사람이 관여하지 않고, 자신의 개발 환경에서 작업하는 공간
- Remote Repository (원격 저장소) : 원격 저장소는 GitHub, GitLab, Bitbucket과 같은 원격 서버에 위치한 저장소
- 혼자 깃을 쓸 때는 add commit push만 할 줄 알면 됨
- add commit을 하면, 글씨가 쓰이고, push를 하면 remote로 넘어감 - git과 git hub의 차이
- git : 분산형 버전 관리 시스템
- 코드의 변경 사항을 기록하고 관리하는 도구
- 로컬 저장소에서 주로 사용되며, 사용자 컴퓨터에서 소스 코드를 관리
- git hub : Git 저장소 호스팅 서비스 (Hosting Platform)
- Git을 사용하는 소스 코드 호스팅 플랫폼
- Git 저장소를 원격으로 저장하고 관리
- gitlab : 보완이 좋아서, 주로 금융권에서 주로 사용이 됨
- Bitbucket : 다른 엔지니어, 디자인업체랑 협업을 할 때 많이 사용이 됨 - $ git config --list : Git 설정 정보 목록을 출력
전역 설정(global configuration)
- $ git config --global user.name “{username}” : Git에서 사용할 사용자 이름을 설정
- $ git config --global user.email “{emailaddr}” ; Git에서 사용할 사용자 이메일을 설정
- $ git config --global core.editor “vim” : 기본으로 사용할 텍스트 편집기를 vim으로 설정
- $ git config --global core.pager “cat” : Git 출력 내용을 페이저(pager) 없이 바로 출력
- git config —global alias.lg “log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit”
- 의미
- git config --global alias.lg: Git에서 전역으로 lg라는 별칭을 설정하는 부분
- log --color --graph:
log: 커밋 로그를 표시하는 명령어입니다.
--color: 로그를 출력할 때 컬러를 사용해 가독성을 높입니다.
--graph: 커밋 내역을 그래프로 시각화해서 브랜치 및 머지 내역 등을 표시합니다.
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit”
로그의 출력 형식을 지정
%Cred%h%Creset: 짧은 커밋 해시를 빨간색으로 표시합니다.
%C(yellow)%d%Creset: **참조(HEAD, 브랜치, 태그 등)**를 노란색으로 표시합니다.
%s: 커밋 메시지.
%Cgreen(%cr): 커밋이 언제 발생했는지를 녹색으로 표시합니다 (상대 시간).
%C(bold blue)<%an>%Creset: 커밋 작성자의 이름을 굵은 파란색으로 표시합니다.
--abbrev-commit: 커밋 해시를 짧게 표시합니다.
git 사용하기
- 원격 저장소 생성
0. + 로 해서 새 저장소 생성하기
1. 이름 저장하고
- 설명은 생략가능
- public, private 중 private를 하면 좀 잠김 : public으로 하는 게 좋음
2. add readme.md 하기
3. license 꼭!!! 설정하기!!!!
- 단체나 팀에 속해서 일할 때 반드시 필요
- 오픈소스라고 해서 공짜가 아님. : MIT 라이센스 : 가장 열려있는 라이센스, 나머지는 제한사항이 있음
- GNU GPL (조심해야함) GPL이 붙어있는 라이브러리를 쓰면, 코드는 무조건 오픈소스가 되어야함 - 아니면 법적문제 - 상용/보완이 필요한 곳에는 절대 쓰지 않기 - 원격 저장소에서 로컬로 프로젝트를 복사(clone)
- 초록색 버튼 눌러서 local에서 url을 복사해서 가져옴
- git창에서 pwd로 위치가 dev인걸 확인한 뒤에,
- git clone (url 복사) 하기 - 만든 원격저장소에 hello.py 파일 만들기
- cd (저장소 이름) 을 해서 저장소로 들어가기
- touch hello.py
- ls 로 해서 hello.py가 만들어진지 확인
- git status로 현재 상태 확인 : 로컬 저장소의 작업 트리와 스테이징 영역의 상태를 확인
- 처음 상태는 hello.py가 추척되지 않는 파일로 표시됨
- 이 파일은 처음 추가된 파일이며, 커밋되기 전에 추가(Git의 관리하에 두기) 작업이 필요
- git add hello.py를 해서 스테이징 영역에 추가한 것
- 다시 git status로 상태 확인
- hello.py가 Changes to be committed 아래에 표시
- 이 파일이 스테이징 영역에 올라갔다는 것을 의미하며, 이제 커밋 준비가 된 상태
- 만든 hello.py에 들어가서 작업하기
- git commit 으로 hello.py안에 들어가기
- vim으로 들어가게 됨 - vim에서 배운 내용
- i를 눌러서 insert 모드로 바꾸어주기
- 내용을 작성
- esc로 노멀모드로 나와서
- :wq +enter 해서 g하면 커밋이 완성됨 - 토큰 세팅하기
-https://github.com/settings/tokens 로 들어가기
> Generate new token(classic)
- note는 personalToken : 구분할때 쓰는 이름, 아무거나 써도 괜찮음. 나중에 알아볼 수 있게 쓰긴 하기
- expiration : 만료기한 : 혼자 사용때는 no expiration으로 가능 : 컴퓨터를 바꿀때 다시 줘야함
- Select scopes 내용 모두 누르기
- generate 해주기
- 토큰값을 복사해서 사용 : 새로고침 금지..! : 새로고침하면 토큰을 잃어버림-새로 만들어야함
- 토큰은 매번 생성X , 1번만 만들면 됨. - git push origin main
- 로컬 저장소의 main 브랜치에서 원격 저장소(origin)로 변경 사항을 푸시(push)
- main 브랜치의 최신 커밋들이 원격 저장소의 main 브랜치로 푸시
- 로컬 main 브랜치의 변경 사항을 원격 저장소(origin)의 main 브랜치로 푸시 - git remote -v
- 현재 로컬 저장소와 연결된 원격 저장소의 URL 목록을 보여줌. - git헙에 올리기
- pwd와 ls로 현재 위치 상황 확인
- git status로 현재 확인하기
- vi README.md 로 README 내부 내용 수정
- git add README.md 를 올리기 - Conventional Commits
- commit의 제목은 commit을 설명하는 문장형이 아닌 구나 절의 형태로 작성
- importanceofcapitalize `Importance of Capitalize`
- prefix 꼭 달기
- feat: 기능 개발 관련
- fix: 오류 개선 혹은 버그 패치
- docs: 문서화 작업
- test: test 관련
- conf: 환경설정 관련
- build: 빌드 작업 관련
- ci: Continuous Integration 관련
- chore: 패키지 매니저, 스크립트 등
- style: 코드 포매팅 관련
- template
- {type}: {description} 작업단위 축약(breaking change가 있다면 type 뒤에 !)
- {body} 작업 상세 기술
- {footer} 부가정보(ex) BREAKING CHANGE: Drop email sign up support)
- vi hello.py : hello.py의 코드 내용을 수정
-commit hello.py ; hello.py의 부연설명 수정
진행하는 방법
0. 상위 폴더에서 하위 폴더로 찾아가기
- pwd : 현재 위치 확인
- ls로 내부 폴더 찾기
- cd 폴더 경로로 계속 해서 찾아가기
1. 폴더 이동 및 위치 확인:
- cd [폴더 경로]: 작업할 폴더로 이동.
- pwd: 현재 위치 확인 (작업 위치가 dev 폴더 안인지 확인).
2. 파일 생성 및 확인:
- touch hello.py: hello.py 파일 생성.
- ls: 파일이 생성되었는지 확인.
3. 파일 수정:
- vi hello.py: 파일 열어서 코드 작성.
- :wq: 작성 후 저장하고 종료.
4. 파일 실행 및 확인:
- python hello.py: 작성한 Python 파일 실행해 코드가 제대로 작동하는지 확인.
5. Git에 파일 추가 및 커밋:
- git add hello.py: 파일을 스테이징 영역에 추가.
- git commit : 커밋 메시지와 함께 파일을 커밋.
6. 원격 저장소로 푸시 (옵션):
- git push origin main: 로컬 커밋을 원격 저장소에 업로드.
README.md 에 적을 것
- 가장 기본적인 틀
# ProjectName : 프로젝트 이름을 적는 곳
This is Abstract. See [Demo](Demo link) : 프로젝트에 대한 간단한 설명과 데모 링크를 제공
Project badges(CI/CD, gh stars, ..) : 뱃지: CI/CD 상태, GitHub 스타 수 등 프로젝트 상태를 나타내는 뱃지들
## Prerequisites : 프로젝트를 실행하기 위한 필수 조건 (예: 설치해야 할 프로그램, 환경 설정).
## How to Start : 프로젝트를 시작하는 방법을 설명
## Installation : 프로젝트 설치 방법에 대한 구체적인 절차를 작성
## Features : 프로젝트에서 제공하는 주요 기능을 나열
## Run Tests(optional) : 테스트 실행 방법을 설명
## Credit ; 프로젝트에 기여한 사람들이나 참고 자료를 기재
- 바꾸는 방법
1. 파일 수정:
- vi README.md: 파일 열어서 작성.
- :wq: 작성 후 저장하고 종료.
2. Git에 파일 추가 및 커밋:
- git add hello.py: 파일을 스테이징 영역에 추가.
- git commit : 커밋 메시지와 함께 파일을 커밋.
3. 원격 저장소로 푸시 (옵션):
- git push origin main: 로컬 커밋을 원격 저장소에 업로드.
- github 프로필 생성기 : https://rahuldkjain.github.io/gh-profile-readme-generator/
- readme.md에다가 넣기 - gitignore : 특정 파일이나 디렉토리를 추적하지 않도록 명시하기 위한 파일
- 비밀번호, api키 같은 것 등을 git에 넣지 않기 위하여 쓰는 것
- https://www.toptal.com/developers/gitignore/
- 운영체제, 언어, 등등을 넣고 생성
- 텍스트를 전체 선택 복사 (ctrl + a / ctrl+c)
- 터미널로 와서,
- touch .gitignore로 해서 숨김파일을 만듬 ( 앞에 .이 붙어있으면 숨김 파일, ls하면 안 보임, ls -a 해야 보임
- 마우스 우클릭+paste 하여서 붙여넣기 :wq로 저장하고 나오기
- git status 로 상태 확인
- git add .gitignore로 올려주고
- git commit으로 commit 작성해주기
- git push origin main으로 올리기 - git with .ipynb
- https://github.com/ulgoon/some-ipynb-proj
- .ipynb 파일은 json 기반이라 Source Control이 쉽지 않음
- 변경사항이 cell 단위 추적이 아니라 json 코드 변경사항이 추적
- nbconvert로 .py or .html 파일 단위로 변환하여 변경사항 추적
- 3rd-party https://www.reviewnb.com/ 로 렌더링 된 ipynb의 변경사항 추적
- github에서 바로 변경사항 추적 가능 - git은 습관이 중요함
- TIL(Today I Learned..) repository에 오늘 배운 것을 정리
- 매일 git으로 업로드를 해야하기 때문에 강제 커맨드 학습 가능
- github blog
- hexo 로 정적 블로그를 만들어 정리하는 습관을 만들고 Markdown과 친해지기
- Side Project
- 짧은 단위의 프로젝트를 자주 수행하여 생성-완성까지의 과정을 자주 반복
github blog
- github pages 프로젝트 설명을 위한 웹사이트 호스팅 서비스
- username.github.io repo 생성 혹은 프로젝트 별 pages 생성
- https://www.upstage.ai/blog (ghost)
- https://woowabros.github.io
- https://spoqa.github.io/ - Static Site Generator 정적 페이지를 생성해주는 도구
- github pages는 파일 저장소이기 때문에 완성된 페이지만 제공 가능
- 모든 페이지가 독립적으로 존재해야함 -> 컨텐츠 관리의 어려움 발생
- jekyll( https://jekyllrb-ko.github.io/ ): Ruby 기반 정적 사이트 생성기
- 설치와 사용이 쉬움(많은 튜토리얼)
- 사용자가 많았음
- Hugo( https://gohugo.io/ ): Go 기반 정적 사이트 생성기
- 빠른 속도로 사이트 빌드 가능
- 사용자 증가 중
- Hexo( https://hexo.io/ko/index.html ): node.js 기반 정적 사이트 생성기
- 쉬운 사용성과 사용자 개인화
- Next.js, Gatsby, .. - hexo 사용하기
- 시작 위치는 dev 폴더
- hexo 명령어 : 정적 사이트 생성을 하라는 의미
- hexo init [폴더 이름] : 새로운 Hexo 프로젝트를 초기화
- npm install 명령어로 package.json 파일에 정의된 **모든 의존성(dependencies)**을 설치하는 명령어
- hexo init [폴더 이름]을 하면 https로 시작하는 url 주소가 뜸 -> 미리보기 가능
- hexo server 를 하면, http://localhost:4000/ 의 사이트에서 미리보기가 가능
- $ hexo new post "제목" 를 하여 새로운 포스트 생성
- vi source/_posts/[제목.md]를 내용 수정
- $ hexo clean && hexo generate : Hexo 블로그를 빌드하는 과정에서 자주 사용하는 명령어 조합
- hexo clean: 캐시와 이전에 생성된 파일들을 삭제
- hexo generate (또는 hexo g): 정적 웹사이트 파일들을 생성
- hexo server 를 하면, http://localhost:4000/ 의 url에서 아까 내용 수정한 게 바뀌었는지를 확인하기
-npm install hexo-theme-next@latest : Hexo 블로그에 NexT 테마를 설치하는 명령어
- install에 관련한 링크 : https://theme-next.js.org/docs/getting-started/installation.html
- https://theme-next.js.org/docs/getting-started/#Enabling-NexT
- cp node_modules/hexo-theme-next/_config.yml _config.next.yml : NexT 테마의 기본 설정 파일을 복사하는 명령어
- vi _config.yml 명령어는 _config.yml : 파일을 vi 편집기로 열어 수정
- title, subtitle 변경
- author 변경, url 변경
- theme : next로 변경
- type : git
- repo
- hexo deploy만 치면 보낼 수 있게끔
- git hub에서 새 레포스토리를 만듬
- Repository name에 https://username.github.io 로 넣기
- v퍼블릭으로 크리에이트하기
- 여기서Quick setup — if you’ve done this kind of thing before에 나오는 url을 복사해서 터미널에
- 터미널로 와서 repo를 만들어서 붙여넣기
- npm install hexo-deployer-git --save 설치
- hexo clean && hexo generate으로 한번 끊어주기 : 어떤 작업을 하면 항상 이렇게 클린이랑 generation을 해줌
- hexo server 의 http://localhost:4000/에서 한번더 확인하기
- $ hexo clean && hexo deploy 를 하면 전송이 바로 됨
- 깃허브에 올라와있는지 확인하기 - hexo 관련 찍어놓으신 영상
- 나중에 참고 하기
'Upstage AI LAB 부트캠프 5기 > 실시간 공부내용 복습' 카테고리의 다른 글
[2024.10.25] Git (2) | 2024.10.25 |
---|---|
[2024.10.18] 컴퓨터 공학 개론 (8) | 2024.10.18 |
[2024.10.17] 컴퓨터 공학 개론 (11) | 2024.10.17 |
[2024.10.16] 컴퓨터 공학 개론 (7) | 2024.10.16 |
[2024.10.16] [특강] 슬기로운 부캠 생활 (21) | 2024.10.16 |