FastCampus UpStage AI/git

FastCamPus X Upstage AI 5기 Git

하오츠(해석:맛있다) 2024. 10. 24. 15:36

Shell 

: 운영체제의 커널과 사용자를 이어주는 소프트웨어

 

실습

pwd : 현재 최상단 위치

ls : 파일 리스트

 - ls [./디렉토리] : 해당 디렉토리의 파일리스트 확인

cd [디렉토리] : 디렉토리로 이동

mkdir [디렉토리] : 디렉토리 생성

touch [파일명.파일확장자] : 파일 생성 

 - touch [./디렉토리/파일명.파일확장자] : 디렉토리 안에 파일 생성

mv [파일명.파일확장자] [디렉토리] : 파일을 디렉토리로 이동시킨다.

 - mv [./디렉토리/파일명.파일확장자] [디렉토리] : 파일을 디렉토리로 이동시킨다.

 - mv [파일명.파일확장자] [파일명.파일확장자] : 파일명, 파일 확장자를 바꾼다.

 - mv [파일명.*] [디렉토리] : 해당 파일명을 가진 모든 파일들을 디렉토리로 이동시킨다.

cp [파일명.파일확장자_1] [파일명.파일확장자_2] : _1 파일을 복사한 _2파일을 생성한다.

rm [파일명.파일확장자] : 파일 삭제

 - rm [파일명*.*] : 파일명이 포함된 모든 파일을 삭제한다.

 - rm - rf [디렉토리] : 디렉토리를 삭제한다.(r : 모든파일 삭제, f : 묻지말아라)

 - rm ./* : 현재 위치 디렉토리의 파일들을 다 삭제한다.

 

Vim
: 무료 오픈 소스 텍스트 에디터 

 

실습 

vim [파일명.파일확장자] : 파일 열기

 - i : 파일 입력

 - # : 제목 텍스트

 - '''[사용할 언어] ''' : 코드 블록 하이라이트

 - ![Link_text](./images/cat.jpg) : 링크, 이미지 삽입

 - esc : vim normal 나가기

 - shift + ':' + [공백/숫자] : 맨밑으로 커서가 내려감/해당 숫자의 줄로 이동 

 - :w : 저장

 - :wq : 저장하고 나가기

 - :q : 나가기

 - :q! : 저장안하고 나가기

cat [파일] : 파일 내용 확인

 

git

: 분산형 버전 관리 시스템

: 단순한 구조와 빠른 구조

: 분산형 저장소 지원

: 비선형 개발 가능

 

* git vs github/gitlab/bitbucket

- git  : 버전 제어 시스템

- github/gitlab/bitbucket : 깃을 사용한 서비스

 

실습

git config : 깃의 설정

- git config --list : 깃의 설정 리스트 확인

- git config --global user.name [github을 가입할때 설정한 이름] : 연결할 깃 이름  

- git config --global user.email [github을 가입할때 설정한 이메일] : 연결할 깃 이메일

- git config --global core.editor [vim] : 코어 에디터는 vim 을 사용

 - git config --global core.pager [cat] : 주로 에디터를 확인할때는 cat 명령어를 사용

 -  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" : 

 

깃 레포지토리 생성

1. github로 가서 레포지토리 생성

2. 설정은 public, readme file생성, 라이센스 MIT 

* GPL 라이센스 상용화 할때는 주의 "오픈 소스 안할때" 

3. 생성된 레포지토리 CODE 눌러서 https: 의 url 복사

4. https://github.com/settings/tokens  classic 토큰 발행 - no expiration, 모든 옵션 체크 

 

실습 

git clone [url] : url 레포지토리 내려받아서 이제 커밋가능하도록 설정

git status : 커밋하기전 하는 거고, 내 로컬 파일과 git 레포지토리 변경 사항 비교해줌

git add [./파일명] : add 레포지토리에 파일 추가할 거 

git commit : 깃 커밋

 - git commit - m "깃 커밋할때, 코멘트 작성" : 깃 커밋하면서 코멘트 작성

 

토큰 생성 후 

git push origin main : 해당 저장소에 올려서 동기화 해줌

-> 윈도우인경우 토큰 입력 or 아이디/비번 입력

git remote -v : 깃의 url 을 확일 할 수 있음

 - git remote set -url origin [url] : origin(저장소의 공간), 현재 저장소 url 변경(url의 경로 수정됨)

 

**git bash 에서 파이썬 파일 생성 및 실행**

   vi hello.py : 파일 편집기에서 함수 수정

   python hello.py  : py 프로그램 실행

 

** 커밋시 작성해야할 포맷**

1. feat : 기능이 개발이 되었다 

2. fix : 오류를 개선했다.

3. refactor : 기능을 개선했다

4. conf : 환경 설정 관련 수정

5. docs : 문서화 작업을 했다.

 

gitignore

: 특정 파일이나 디렉토리를 추적하지 않도록 명시하기 위한 파일

: 비밀번호 Config 파일에 들어간 링크들, API key

 

실습

https://www.toptal.com/developers/gitignore/ 로 들어가서 키워드 생성

생성된 텍스트 복사하기

touch ./gitignore 파일을 생성

vi gitignore 로 파일 붙여넣기

 

 

git branch

 

실습

git branch : 깃 브랜치 확인

 - git branch [브랜치 명] : 깃 브랜치 생성

 - git branch -D [브랜치 명] :  깃 브랜치 삭제

git switch [브랜치명] : 현재 커밋할 브랜치 변경

git merge [브랜치명] : main 에 머지할 브랜치명 

* 하위 브랜치에서 push 된 정보를 상위 브랜치로 동기화 시켜주는 작업

git push -u origin [하위 브랜치명] : 하위 브랜치에서 내용을 동기화 시켜줄 수 있다.

  ** 요런 브랜치 머지작업은 대부분 pm이나, 팀의 팀장이 맡아서 한다

  1. github의 브랜치에 해당하는 레포지토리에 가서 하위 브랜치 create pull  request 를 실행  

  2. 상위 브랜치로 머지한다.

git pull : 현재 브랜치로 최신화

* 작업중인 변경사항 잠시 미뤄두기 

git stash : 작업 중인 변경사항 미루기

git stash list : 미뤄둔 변경사항 리스트

git stash pop : 마지막 변경사항 꺼내기

 - git stash pop [인덱스] : 특정 인덱스 변경사항 꺼내기 

git stash drop : 변경사항 제거

git restore [파일명.파일확장자] :  깃 작업한 파일 내용 수정하기 전으로 원상복구

 

 

* 왠만하면 안하는게 좋다*

   **커밋 취소하기**

    git revert --no-commit [커밋 아이디] : 커밋 아이디 취소

      - 예시 : git revert --no-commit HEAD~3.. 

    git commit : 취소된 커밋을 브랜치에 알린다

 

 

git flow

 

팀원

 

팀프로젝트를 시작할때 셋팅

1. 팀프로젝트를 FORK 해서 레포지토리를 생성

2. dev에 [팀프로젝트] 이름으로 로컬 폴더 생성

  2-1. cd [팀프로젝트] 팀프로젝트로 이동

3. git remote -v 를 통해서 현재 내 브랜치 외에 다른 브랜치를 fetch 하고 있는 건 없나 확인

4. git remote add upstream [팀프로젝트 url]을 설정해서 팀원들의 코드 수정된 부분을 업데이트 받음

5. git remove -v로 제대로 브랜치 설정되었는지 확인

6. git fetch upstream main 으로 코드 업데이트

7. git merge FETCH_HEAD 내 브랜치에 적용

 

팀프로젝트 할때, 매일 작성해야하는 부분

1. 이슈작성 : feature backlog 작성

2. 팀장님 코멘트 확인후 작업 진행